From 292e22963e5e7b6100f665c96767c44ce2e3ee7a Mon Sep 17 00:00:00 2001 From: Paul Wortman Date: Mon, 9 Nov 2015 16:37:30 -0500 Subject: [PATCH 1/3] Additional push for preparing SoK for S&P conference --- IEEEtran.cls | 6347 ++++++++++++++++++++++++++++++++++++++++++++ PBDSecPaper.pdf | Bin 0 -> 264717 bytes PBDSecPaper.tex | 2 +- PBDSecPaper_SP.pdf | Bin 0 -> 259598 bytes PBDSecPaper_SP.tex | 382 +++ 5 files changed, 6730 insertions(+), 1 deletion(-) create mode 100644 IEEEtran.cls create mode 100644 PBDSecPaper.pdf create mode 100644 PBDSecPaper_SP.pdf create mode 100644 PBDSecPaper_SP.tex diff --git a/IEEEtran.cls b/IEEEtran.cls new file mode 100644 index 0000000..8d2b1c6 --- /dev/null +++ b/IEEEtran.cls @@ -0,0 +1,6347 @@ +%% +%% IEEEtran.cls 2015/08/26 version V1.8b +%% +%% This is the IEEEtran LaTeX class for authors of the Institute of +%% Electrical and Electronics Engineers (IEEE) Transactions journals and +%% conferences. +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/pkg/ieeetran +%% and +%% http://www.ieee.org/ +%% +%% Based on the original 1993 IEEEtran.cls, but with many bug fixes +%% and enhancements (from both JVH and MDS) over the 1996/7 version. +%% +%% +%% Contributors: +%% Gerry Murray (1993), Silvano Balemi (1993), +%% Jon Dixon (1996), Peter N"uchter (1996), +%% Juergen von Hagen (2000), and Michael Shell (2001-2014) +%% +%% +%% Copyright (c) 1993-2000 by Gerry Murray, Silvano Balemi, +%% Jon Dixon, Peter N"uchter, +%% Juergen von Hagen +%% and +%% Copyright (c) 2001-2015 by Michael Shell +%% +%% Current maintainer (V1.3 to V1.8b): Michael Shell +%% See: +%% http://www.michaelshell.org/ +%% for current contact information. +%% +%% Special thanks to Peter Wilson (CUA) and Donald Arseneau +%% for allowing the inclusion of the \@ifmtarg command +%% from their ifmtarg LaTeX package. +%% +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall the IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%% +%% This work is distributed under the LaTeX Project Public License (LPPL) +%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, +%% distributed and modified. A copy of the LPPL, version 1.3, is included +%% in the base LaTeX documentation of all distributions of LaTeX released +%% 2003/12/01 or later. +%% Retain all contribution notices and credits. +%% ** Modified files should be clearly indicated as such, including ** +%% ** renaming them and changing author support contact information. ** +%% +%% File list of work: IEEEtran.cls, IEEEtran_HOWTO.pdf, bare_adv.tex, +%% bare_conf.tex, bare_jrnl.tex, bare_conf_compsoc.tex, +%% bare_jrnl_compsoc.tex +%% +%% Major changes to the user interface should be indicated by an +%% increase in the version numbers. If a version is a beta, it will +%% be indicated with a BETA suffix, i.e., 1.4 BETA. +%% Small changes can be indicated by appending letters to the version +%% such as "IEEEtran_v14a.cls". +%% In all cases, \Providesclass, any \typeout messages to the user, +%% \IEEEtransversionmajor and \IEEEtransversionminor must reflect the +%% correct version information. +%% The changes should also be documented via source comments. +%%************************************************************************* +%% +% +% Available class options +% e.g., \documentclass[10pt,conference]{IEEEtran} +% +% *** choose only one from each category *** +% +% 9pt, 10pt, 11pt, 12pt +% Sets normal font size. The default is 10pt. +% +% conference, journal, technote, peerreview, peerreviewca +% determines format mode - conference papers, journal papers, +% correspondence papers (technotes), or peer review papers. The user +% should also select 9pt when using technote. peerreview is like +% journal mode, but provides for a single-column "cover" title page for +% anonymous peer review. The paper title (without the author names) is +% repeated at the top of the page after the cover page. For peer review +% papers, the \IEEEpeerreviewmaketitle command must be executed (will +% automatically be ignored for non-peerreview modes) at the place the +% cover page is to end, usually just after the abstract (keywords are +% not normally used with peer review papers). peerreviewca is like +% peerreview, but allows the author names to be entered and formatted +% as with conference mode so that author affiliation and contact +% information can be easily seen on the cover page. +% The default is journal. +% +% draft, draftcls, draftclsnofoot, final +% determines if paper is formatted as a widely spaced draft (for +% handwritten editor comments) or as a properly typeset final version. +% draftcls restricts draft mode to the class file while all other LaTeX +% packages (i.e., \usepackage{graphicx}) will behave as final - allows +% for a draft paper with visible figures, etc. draftclsnofoot is like +% draftcls, but does not display the date and the word "DRAFT" at the foot +% of the pages. If using one of the draft modes, the user will probably +% also want to select onecolumn. +% The default is final. +% +% letterpaper, a4paper, cspaper +% determines paper size: 8.5in X 11in, 210mm X 297mm or 7.875in X 10.75in. +% Changing the paper size in the standard journal and conference modes +% will not alter the typesetting of the document - only the margins will +% be affected. In particular, documents using the a4paper option will +% have reduced side margins (A4 is narrower than US letter) and a longer +% bottom margin (A4 is longer than US letter). For both cases, the top +% margins will be the same and the text will be horizontally centered. +% For the compsoc conference and draft modes, it is the margins that will +% remain constant, and thus the text area size will vary, with changes in +% the paper size. +% The cspaper option is the special ``trim'' paper size (7.875in x 10.75in) +% used in the actual publication of Computer Society journals. Under +% compsoc journal mode, this option does not alter the typesetting of the +% document. Authors should invoke the cspaper option only if requested to +% do so by the editors of the specific journal they are submitting to. +% For final submission to the IEEE, authors should generally use US letter +% (8.5 X 11in) paper unless otherwise instructed. Note that authors should +% ensure that all post-processing (ps, pdf, etc.) uses the same paper +% specificiation as the .tex document. Problems here are by far the number +% one reason for incorrect margins. IEEEtran will automatically set the +% default paper size under pdflatex (without requiring any change to +% pdftex.cfg), so this issue is more important to dvips users. Fix +% config.ps, config.pdf, or ~/.dvipsrc for dvips, or use the +% dvips -t papersize option instead as needed. For the cspaper option, +% the corresponding dvips paper name is "ieeecs". +% See the testflow documentation +% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/testflow +% for more details on dvips paper size configuration. +% The default is letterpaper. +% +% oneside, twoside +% determines if layout follows single sided or two sided (duplex) +% printing. The only notable change is with the headings at the top of +% the pages. +% The default is oneside. +% +% onecolumn, twocolumn +% determines if text is organized into one or two columns per page. One +% column mode is usually used only with draft papers. +% The default is twocolumn. +% +% comsoc, compsoc, transmag +% Use the format of the IEEE Communications Society, IEEE Computer Society +% or IEEE Transactions on Magnetics, respectively. +% +% romanappendices +% Use the "Appendix I" convention when numbering appendices. IEEEtran.cls +% now defaults to Alpha "Appendix A" convention - the opposite of what +% v1.6b and earlier did. +% +% captionsoff +% disables the display of the figure/table captions. Some IEEE journals +% request that captions be removed and figures/tables be put on pages +% of their own at the end of an initial paper submission. The endfloat +% package can be used with this class option to achieve this format. +% +% nofonttune +% turns off tuning of the font interword spacing. Maybe useful to those +% not using the standard Times fonts or for those who have already "tuned" +% their fonts. +% The default is to enable IEEEtran to tune font parameters. +% +% +%---------- +% Available CLASSINPUTs provided (all are macros unless otherwise noted): +% \CLASSINPUTbaselinestretch +% \CLASSINPUTinnersidemargin +% \CLASSINPUToutersidemargin +% \CLASSINPUTtoptextmargin +% \CLASSINPUTbottomtextmargin +% +% Available CLASSINFOs provided: +% \ifCLASSINFOpdf (TeX if conditional) +% \CLASSINFOpaperwidth (macro) +% \CLASSINFOpaperheight (macro) +% \CLASSINFOnormalsizebaselineskip (length) +% \CLASSINFOnormalsizeunitybaselineskip (length) +% +% Available CLASSOPTIONs provided: +% all class option flags (TeX if conditionals) unless otherwise noted, +% e.g., \ifCLASSOPTIONcaptionsoff +% point size options provided as a single macro: +% \CLASSOPTIONpt +% which will be defined as 9, 10, 11, or 12 depending on the document's +% normalsize point size. +% also, class option peerreviewca implies the use of class option peerreview +% and classoption draft implies the use of class option draftcls + + + + + +\ProvidesClass{IEEEtran}[2015/08/26 V1.8b by Michael Shell] +\typeout{-- See the "IEEEtran_HOWTO" manual for usage information.} +\typeout{-- http://www.michaelshell.org/tex/ieeetran/} +\NeedsTeXFormat{LaTeX2e} + +% IEEEtran.cls version numbers, provided as of V1.3 +% These values serve as a way a .tex file can +% determine if the new features are provided. +% The version number of this IEEEtrans.cls can be obtained from +% these values. i.e., V1.4 +% KEEP THESE AS INTEGERS! i.e., NO {4a} or anything like that- +% (no need to enumerate "a" minor changes here) +\def\IEEEtransversionmajor{1} +\def\IEEEtransversionminor{8} + + +% hook to allow easy changeover to IEEEtran.cls/tools.sty error reporting +\def\@IEEEclspkgerror{\ClassError{IEEEtran}} + + +% These do nothing, but provide them like in article.cls +\newif\if@restonecol +\newif\if@titlepage + + +% class option conditionals +\newif\ifCLASSOPTIONonecolumn \CLASSOPTIONonecolumnfalse +\newif\ifCLASSOPTIONtwocolumn \CLASSOPTIONtwocolumntrue + +\newif\ifCLASSOPTIONoneside \CLASSOPTIONonesidetrue +\newif\ifCLASSOPTIONtwoside \CLASSOPTIONtwosidefalse + +\newif\ifCLASSOPTIONfinal \CLASSOPTIONfinaltrue +\newif\ifCLASSOPTIONdraft \CLASSOPTIONdraftfalse +\newif\ifCLASSOPTIONdraftcls \CLASSOPTIONdraftclsfalse +\newif\ifCLASSOPTIONdraftclsnofoot \CLASSOPTIONdraftclsnofootfalse + +\newif\ifCLASSOPTIONpeerreview \CLASSOPTIONpeerreviewfalse +\newif\ifCLASSOPTIONpeerreviewca \CLASSOPTIONpeerreviewcafalse + +\newif\ifCLASSOPTIONjournal \CLASSOPTIONjournaltrue +\newif\ifCLASSOPTIONconference \CLASSOPTIONconferencefalse +\newif\ifCLASSOPTIONtechnote \CLASSOPTIONtechnotefalse + +\newif\ifCLASSOPTIONnofonttune \CLASSOPTIONnofonttunefalse + +\newif\ifCLASSOPTIONcaptionsoff \CLASSOPTIONcaptionsofffalse + +\newif\ifCLASSOPTIONcomsoc \CLASSOPTIONcomsocfalse +\newif\ifCLASSOPTIONcompsoc \CLASSOPTIONcompsocfalse +\newif\ifCLASSOPTIONtransmag \CLASSOPTIONtransmagfalse + +\newif\ifCLASSOPTIONromanappendices \CLASSOPTIONromanappendicesfalse + + +% class info conditionals + +% indicates if pdf (via pdflatex) output +\newif\ifCLASSINFOpdf \CLASSINFOpdffalse + + +% V1.6b internal flag to show if using a4paper +\newif\if@IEEEusingAfourpaper \@IEEEusingAfourpaperfalse +% V1.6b internal flag to show if using cspaper +\newif\if@IEEEusingcspaper \@IEEEusingcspaperfalse + + +% IEEEtran class scratch pad registers +% dimen +\newdimen\@IEEEtrantmpdimenA +\newdimen\@IEEEtrantmpdimenB +\newdimen\@IEEEtrantmpdimenC +% count +\newcount\@IEEEtrantmpcountA +\newcount\@IEEEtrantmpcountB +\newcount\@IEEEtrantmpcountC +% token list +\newtoks\@IEEEtrantmptoksA + +% we use \CLASSOPTIONpt so that we can ID the point size (even for 9pt docs) +% as well as LaTeX's \@ptsize to retain some compatability with some +% external packages +\def\@ptsize{0} +% LaTeX does not support 9pt, so we set \@ptsize to 0 - same as that of 10pt +\DeclareOption{9pt}{\def\CLASSOPTIONpt{9}\def\@ptsize{0}} +\DeclareOption{10pt}{\def\CLASSOPTIONpt{10}\def\@ptsize{0}} +\DeclareOption{11pt}{\def\CLASSOPTIONpt{11}\def\@ptsize{1}} +\DeclareOption{12pt}{\def\CLASSOPTIONpt{12}\def\@ptsize{2}} + + + +\DeclareOption{letterpaper}{\setlength{\paperwidth}{8.5in}% + \setlength{\paperheight}{11in}% + \@IEEEusingAfourpaperfalse + \@IEEEusingcspaperfalse + \def\CLASSOPTIONpaper{letter}% + \def\CLASSINFOpaperwidth{8.5in}% + \def\CLASSINFOpaperheight{11in}} + + +\DeclareOption{a4paper}{\setlength{\paperwidth}{210mm}% + \setlength{\paperheight}{297mm}% + \@IEEEusingAfourpapertrue + \@IEEEusingcspaperfalse + \def\CLASSOPTIONpaper{a4}% + \def\CLASSINFOpaperwidth{210mm}% + \def\CLASSINFOpaperheight{297mm}} + +% special paper option for compsoc journals +\DeclareOption{cspaper}{\setlength{\paperwidth}{7.875in}% + \setlength{\paperheight}{10.75in}% + \@IEEEusingcspapertrue + \@IEEEusingAfourpaperfalse + \def\CLASSOPTIONpaper{ieeecs}% + \def\CLASSINFOpaperwidth{7.875in}% + \def\CLASSINFOpaperheight{10.75in}} + +\DeclareOption{oneside}{\@twosidefalse\@mparswitchfalse + \CLASSOPTIONonesidetrue\CLASSOPTIONtwosidefalse} +\DeclareOption{twoside}{\@twosidetrue\@mparswitchtrue + \CLASSOPTIONtwosidetrue\CLASSOPTIONonesidefalse} + +\DeclareOption{onecolumn}{\CLASSOPTIONonecolumntrue\CLASSOPTIONtwocolumnfalse} +\DeclareOption{twocolumn}{\CLASSOPTIONtwocolumntrue\CLASSOPTIONonecolumnfalse} + +% If the user selects draft, then this class AND any packages +% will go into draft mode. +\DeclareOption{draft}{\CLASSOPTIONdrafttrue\CLASSOPTIONdraftclstrue + \CLASSOPTIONdraftclsnofootfalse} +% draftcls is for a draft mode which will not affect any packages +% used by the document. +\DeclareOption{draftcls}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclstrue + \CLASSOPTIONdraftclsnofootfalse} +% draftclsnofoot is like draftcls, but without the footer. +\DeclareOption{draftclsnofoot}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclstrue + \CLASSOPTIONdraftclsnofoottrue} +\DeclareOption{final}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclsfalse + \CLASSOPTIONdraftclsnofootfalse} + +\DeclareOption{journal}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournaltrue\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} + +\DeclareOption{conference}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencetrue\CLASSOPTIONtechnotefalse} + +\DeclareOption{technote}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotetrue} + +\DeclareOption{peerreview}{\CLASSOPTIONpeerreviewtrue\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} + +\DeclareOption{peerreviewca}{\CLASSOPTIONpeerreviewtrue\CLASSOPTIONpeerreviewcatrue + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} + +\DeclareOption{nofonttune}{\CLASSOPTIONnofonttunetrue} + +\DeclareOption{captionsoff}{\CLASSOPTIONcaptionsofftrue} + +\DeclareOption{comsoc}{\CLASSOPTIONcomsoctrue\CLASSOPTIONcompsocfalse\CLASSOPTIONtransmagfalse} + +\DeclareOption{compsoc}{\CLASSOPTIONcomsocfalse\CLASSOPTIONcompsoctrue\CLASSOPTIONtransmagfalse} + +\DeclareOption{transmag}{\CLASSOPTIONtransmagtrue\CLASSOPTIONcomsocfalse\CLASSOPTIONcompsocfalse} + +\DeclareOption{romanappendices}{\CLASSOPTIONromanappendicestrue} + + +% default to US letter paper, 10pt, twocolumn, one sided, final, journal +\ExecuteOptions{letterpaper,10pt,twocolumn,oneside,final,journal} +% overrride these defaults per user requests +\ProcessOptions + + + +%% -- Command Argument Scanning Support Functions -- + +% Sets the category codes for punctuation to their normal values. +% For local use with argument scanning. +\def\IEEEnormalcatcodespunct{\catcode`\!=12 \catcode`\,=12 \catcode`\:=12 +\catcode`\;=12 \catcode`\`=12 \catcode`\'=12 \catcode`\"=12 \catcode`\.=12 +\catcode`\/=12 \catcode`\?=12 \catcode`\*=12 \catcode`\+=12 \catcode`\-=12 +\catcode`\<=12 \catcode`\>=12 \catcode`\(=12 \catcode`\)=12 \catcode`\[=12 +\catcode`\]=12 \catcode`\==12 \catcode`\|=12} +% Sets the category codes for numbers to their normal values. +% For local use with argument scanning. +\def\IEEEnormalcatcodesnum{\catcode`\0=12 \catcode`\1=12 \catcode`\2=12 +\catcode`\3=12 \catcode`\4=12 \catcode`\5=12 \catcode`\6=12 \catcode`\7=12 +\catcode`\8=12 \catcode`\9=12} +% combined action of \IEEEnormalcatcodespunct and \IEEEnormalcatcodesnum +\def\IEEEnormalcatcodes{\IEEEnormalcatcodespunct\IEEEnormalcatcodesnum} + + +% usage: \@IEEEextracttoken*{} +% \@IEEEextracttoken fully expands its argument (which it then stores in +% \@IEEEextracttokenarg) via \edef and then the meaning of the first +% nonbrace (but including the empty group) token found is assigned via \let +% to \@IEEEextractedtoken as well as stored in the macro +% \@IEEEextractedtokenmacro. Tokens that would otherwise be discarded during +% the acquisition of the first are stored in \@IEEEextractedtokensdiscarded, +% however their original relative brace nesting depths are not guaranteed to +% be preserved. +% If the argument is empty, or if a first nonbrace token does not exist (or +% is an empty group), \@IEEEextractedtoken will be \relax and +% \@IEEEextractedtokenmacro and \@IEEEextractedtokensdiscarded will be empty. +% +% For example: +% \@IEEEextracttoken{{{ab}{cd}}{{ef}g}} +% results in: +% +% \@IEEEextracttokenarg ==> a macro containing {{ab}{cd}}{{ef}g} +% \@IEEEextractedtoken ==> the letter a +% \@IEEEextractedtokenmacro ==> a macro containing a +% \@IEEEextractedtokensdiscarded ==> a macro containing bcd{ef}g +% +% the *-star form, \@IEEEextracttoken*, does not expand its argument +% contents during processing. +\def\@IEEEextracttoken{\@ifstar{\let\@IEEEextracttokendef=\def\@@IEEEextracttoken}{\let\@IEEEextracttokendef=\edef\@@IEEEextracttoken}} + +\def\@@IEEEextracttoken#1{\@IEEEextracttokendef\@IEEEextracttokenarg{#1}\relax +\def\@IEEEextractedtokensdiscarded{}\relax % initialize to empty +% if the macro is unchanged after being acquired as a single undelimited argument +% with anything after it being stripped off as a delimited argument +% we know we have one token without any enclosing braces. loop until this is true. +\let\@IEEEextracttokencurgroup\@IEEEextracttokenarg +\loop + % trap case of an empty argument as this would cause a problem with + % \@@@IEEEextracttoken's first (nondelimited) argument acquisition + \ifx\@IEEEextracttokencurgroup\@empty + \def\@IEEEextractedtokenmacro{}\relax + \else + \expandafter\@@@IEEEextracttoken\@IEEEextracttokencurgroup\@IEEEgeneralsequenceDELIMITER\relax + \fi + \ifx\@IEEEextractedtokenmacro\@IEEEextracttokencurgroup + \else + \let\@IEEEextracttokencurgroup=\@IEEEextractedtokenmacro +\repeat +% we can safely do a \let= here because there should be at most one token +% the relax is needed to handle the case of no token found +\expandafter\let\expandafter\@IEEEextractedtoken\@IEEEextractedtokenmacro\relax} + +\def\@@@IEEEextracttoken#1#2\@IEEEgeneralsequenceDELIMITER{\def\@IEEEextractedtokenmacro{#1}\relax +\def\@@IEEEextractedtokensdiscarded{#2}\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter +\@IEEEextractedtokensdiscarded\expandafter\expandafter\expandafter +{\expandafter\@@IEEEextractedtokensdiscarded\@IEEEextractedtokensdiscarded}} +%% +%% -- End of Command Argument Scanning Support Functions -- + + + +% Computer Society conditional execution command +\long\def\@IEEEcompsoconly#1{\relax\ifCLASSOPTIONcompsoc\relax#1\relax\fi\relax} +% inverse +\long\def\@IEEEnotcompsoconly#1{\relax\ifCLASSOPTIONcompsoc\else\relax#1\relax\fi\relax} +% compsoc conference +\long\def\@IEEEcompsocconfonly#1{\relax\ifCLASSOPTIONcompsoc\ifCLASSOPTIONconference\relax#1\relax\fi\fi\relax} +% compsoc not conference +\long\def\@IEEEcompsocnotconfonly#1{\relax\ifCLASSOPTIONcompsoc\ifCLASSOPTIONconference\else\relax#1\relax\fi\fi\relax} + + +% comsoc verify that newtxmath, mtpro2, mt11p or mathtime has been loaded +\def\@IEEEcomsocverifymathfont{\typeout{-- Verifying Times compatible math font.}\relax + \@ifpackageloaded{newtxmath}{\typeout{-- newtxmath loaded, OK.}}{\@@IEEEcomsocverifymathfont}} +\def\@@IEEEcomsocverifymathfont{\@ifpackageloaded{mtpro2}{\typeout{-- mtpro2 loaded, OK.}}{\@@@IEEEcomsocverifymathfont}} +\def\@@@IEEEcomsocverifymathfont{\@ifpackageloaded{mt11p}{\typeout{-- mt11p2 loaded, OK.}}{\@@@@IEEEcomsocverifymathfont}} +\def\@@@@IEEEcomsocverifymathfont{\@ifpackageloaded{mathtime}{\typeout{-- mathtime loaded, OK.}}{\@IEEEcomsocenforcemathfont}} + +% comsoc, if a Times math font was not loaded by user, enforce it +\def\@IEEEcomsocenforcemathfont{\typeout{** Times compatible math font not found, forcing.}\relax +\IfFileExists{newtxmath.sty}{\typeout{-- Found newtxmath, loading.}\RequirePackage{newtxmath}}{\@@IEEEcomsocenforcemathfont}} +\def\@@IEEEcomsocenforcemathfont{\IfFileExists{mtpro2.sty}{\typeout{-- Found mtpro2, loading.}\RequirePackage{mtpro2}}{\@@@IEEEcomsocenforcemathfont}} +\def\@@@IEEEcomsocenforcemathfont{\IfFileExists{mt11p.sty}{\typeout{-- Found mt11p, loading.}\RequirePackage{mt11p}}{\@@@@IEEEcomsocenforcemathfont}} +\def\@@@@IEEEcomsocenforcemathfont{\IfFileExists{mathtime.sty}{\typeout{-- Found mathtime, loading.}\RequirePackage{mathtime}}{\@@@@@IEEEcomsocenforcemathfont}} +% if no acceptable Times math font package found, error with newtxmath requirement +\def\@@@@@IEEEcomsocenforcemathfont{\typeout{** No Times compatible math font package found. newtxmath is required.}\RequirePackage{newtxmath}} + + +\ifCLASSOPTIONcomsoc + % ensure that if newtxmath is used, the cmintegrals option is also invoked + \PassOptionsToPackage{cmintegrals}{newtxmath} + % comsoc requires a Times like math font + % ensure this requirement is satisfied at document start + \AtBeginDocument{\@IEEEcomsocverifymathfont} +\fi + + + +% The IEEE uses Times Roman font, so we'll default to Times. +% These three commands make up the entire times.sty package. +\renewcommand{\sfdefault}{phv} +\renewcommand{\rmdefault}{ptm} +\renewcommand{\ttdefault}{pcr} + +% V1.7 compsoc nonconference papers, use Palatino/Palladio as the main text font, +% not Times Roman. +\@IEEEcompsocnotconfonly{\renewcommand{\rmdefault}{ppl}} + +% enable the selected main text font +\normalfont\selectfont + + +\ifCLASSOPTIONcomsoc + \typeout{-- Using IEEE Communications Society mode.} +\fi + +\ifCLASSOPTIONcompsoc + \typeout{-- Using IEEE Computer Society mode.} +\fi + + +% V1.7 conference notice message hook +\def\@IEEEconsolenoticeconference{\typeout{}% +\typeout{** Conference Paper **}% +\typeout{Before submitting the final camera ready copy, remember to:}% +\typeout{}% +\typeout{ 1. Manually equalize the lengths of two columns on the last page}% +\typeout{ of your paper;}% +\typeout{}% +\typeout{ 2. Ensure that any PostScript and/or PDF output post-processing}% +\typeout{ uses only Type 1 fonts and that every step in the generation}% +\typeout{ process uses the appropriate paper size.}% +\typeout{}} + + +% we can send console reminder messages to the user here +\AtEndDocument{\ifCLASSOPTIONconference\@IEEEconsolenoticeconference\fi} + + +% warn about the use of single column other than for draft mode +\ifCLASSOPTIONtwocolumn\else% + \ifCLASSOPTIONdraftcls\else% + \typeout{** ATTENTION: Single column mode is not typically used with IEEE publications.}% + \fi% +\fi + + +% V1.7 improved paper size setting code. +% Set pdfpage and dvips paper sizes. Conditional tests are similar to that +% of ifpdf.sty. Retain within {} to ensure tested macros are never altered, +% even if only effect is to set them to \relax. +% if \pdfoutput is undefined or equal to relax, output a dvips special +{\@ifundefined{pdfoutput}{\AtBeginDvi{\special{papersize=\CLASSINFOpaperwidth,\CLASSINFOpaperheight}}}{% +% pdfoutput is defined and not equal to \relax +% check for pdfpageheight existence just in case someone sets pdfoutput +% under non-pdflatex. If exists, set them regardless of value of \pdfoutput. +\@ifundefined{pdfpageheight}{\relax}{\global\pdfpagewidth\paperwidth +\global\pdfpageheight\paperheight}% +% if using \pdfoutput=0 under pdflatex, send dvips papersize special +\ifcase\pdfoutput +\AtBeginDvi{\special{papersize=\CLASSINFOpaperwidth,\CLASSINFOpaperheight}}% +\else +% we are using pdf output, set CLASSINFOpdf flag +\global\CLASSINFOpdftrue +\fi}} + +% let the user know the selected papersize +\typeout{-- Using \CLASSINFOpaperwidth\space x \CLASSINFOpaperheight\space +(\CLASSOPTIONpaper)\space paper.} + +\ifCLASSINFOpdf +\typeout{-- Using PDF output.} +\else +\typeout{-- Using DVI output.} +\fi + + +% The idea hinted here is for LaTeX to generate markleft{} and markright{} +% automatically for you after you enter \author{}, \journal{}, +% \journaldate{}, journalvol{}, \journalnum{}, etc. +% However, there may be some backward compatibility issues here as +% well as some special applications for IEEEtran.cls and special issues +% that may require the flexible \markleft{}, \markright{} and/or \markboth{}. +% We'll leave this as an open future suggestion. +%\newcommand{\journal}[1]{\def\@journal{#1}} +%\def\@journal{} + + + +% pointsize values +% used with ifx to determine the document's normal size +\def\@IEEEptsizenine{9} +\def\@IEEEptsizeten{10} +\def\@IEEEptsizeeleven{11} +\def\@IEEEptsizetwelve{12} + + + +% FONT DEFINITIONS (No sizexx.clo file needed) +% V1.6 revised font sizes, displayskip values and +% revised normalsize baselineskip to reduce underfull vbox problems +% on the 58pc = 696pt = 9.5in text height we want +% normalsize #lines/column baselineskip (aka leading) +% 9pt 63 11.0476pt (truncated down) +% 10pt 58 12pt (exact) +% 11pt 52 13.3846pt (truncated down) +% 12pt 50 13.92pt (exact) +% + +% we need to store the nominal baselineskip for the given font size +% in case baselinestretch ever changes. +% this is a dimen, so it will not hold stretch or shrink +\newdimen\@IEEEnormalsizeunitybaselineskip +\@IEEEnormalsizeunitybaselineskip\baselineskip + + + +%% ******* WARNING! ******* +%% +%% Authors should not alter font sizes, baselineskip ("leading"), +%% margins or other spacing values in an attempt to squeeze more +%% material on each page. +%% +%% The IEEE's own typesetting software will restore the correct +%% values when re-typesetting/proofing the submitted document, +%% possibly resulting in unexpected article over length charges. +%% +%% ******* WARNING! ******* + + +% 9pt option defaults +\ifx\CLASSOPTIONpt\@IEEEptsizenine +\typeout{-- This is a 9 point document.} +\def\normalsize{\@setfontsize{\normalsize}{9}{11.0476pt}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{11.0476pt} +\normalsize +\abovedisplayskip 1.5ex plus 3pt minus 1pt +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 3pt +\belowdisplayshortskip 1.5ex plus 3pt minus 1pt +\def\small{\@setfontsize{\small}{8.5}{10pt}} +\def\footnotesize{\@setfontsize{\footnotesize}{8}{9pt}} +\def\scriptsize{\@setfontsize{\scriptsize}{7}{8pt}} +\def\tiny{\@setfontsize{\tiny}{5}{6pt}} +% sublargesize is the same as large - 10pt +\def\sublargesize{\@setfontsize{\sublargesize}{10}{12pt}} +\def\large{\@setfontsize{\large}{10}{12pt}} +\def\Large{\@setfontsize{\Large}{12}{14pt}} +\def\LARGE{\@setfontsize{\LARGE}{14}{17pt}} +\def\huge{\@setfontsize{\huge}{17}{20pt}} +\def\Huge{\@setfontsize{\Huge}{20}{24pt}} +\fi +% +% 10pt option defaults +\ifx\CLASSOPTIONpt\@IEEEptsizeten +\typeout{-- This is a 10 point document.} +\def\normalsize{\@setfontsize{\normalsize}{10}{12.00pt}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{12pt} +\normalsize +\abovedisplayskip 1.5ex plus 4pt minus 2pt +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 4pt +\belowdisplayshortskip 1.5ex plus 4pt minus 2pt +\def\small{\@setfontsize{\small}{9}{10pt}} +\def\footnotesize{\@setfontsize{\footnotesize}{8}{9pt}} +\def\scriptsize{\@setfontsize{\scriptsize}{7}{8pt}} +\def\tiny{\@setfontsize{\tiny}{5}{6pt}} +% sublargesize is a tad smaller than large - 11pt +\def\sublargesize{\@setfontsize{\sublargesize}{11}{13.4pt}} +\def\large{\@setfontsize{\large}{12}{14pt}} +\def\Large{\@setfontsize{\Large}{14}{17pt}} +\def\LARGE{\@setfontsize{\LARGE}{17}{20pt}} +\def\huge{\@setfontsize{\huge}{20}{24pt}} +\def\Huge{\@setfontsize{\Huge}{24}{28pt}} +\fi +% +% 11pt option defaults +\ifx\CLASSOPTIONpt\@IEEEptsizeeleven +\typeout{-- This is an 11 point document.} +\def\normalsize{\@setfontsize{\normalsize}{11}{13.3846pt}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{13.3846pt} +\normalsize +\abovedisplayskip 1.5ex plus 5pt minus 3pt +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 5pt +\belowdisplayshortskip 1.5ex plus 5pt minus 3pt +\def\small{\@setfontsize{\small}{10}{12pt}} +\def\footnotesize{\@setfontsize{\footnotesize}{9}{10.5pt}} +\def\scriptsize{\@setfontsize{\scriptsize}{8}{9pt}} +\def\tiny{\@setfontsize{\tiny}{6}{7pt}} +% sublargesize is the same as large - 12pt +\def\sublargesize{\@setfontsize{\sublargesize}{12}{14pt}} +\def\large{\@setfontsize{\large}{12}{14pt}} +\def\Large{\@setfontsize{\Large}{14}{17pt}} +\def\LARGE{\@setfontsize{\LARGE}{17}{20pt}} +\def\huge{\@setfontsize{\huge}{20}{24pt}} +\def\Huge{\@setfontsize{\Huge}{24}{28pt}} +\fi +% +% 12pt option defaults +\ifx\CLASSOPTIONpt\@IEEEptsizetwelve +\typeout{-- This is a 12 point document.} +\def\normalsize{\@setfontsize{\normalsize}{12}{13.92pt}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{13.92pt} +\normalsize +\abovedisplayskip 1.5ex plus 6pt minus 4pt +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 6pt +\belowdisplayshortskip 1.5ex plus 6pt minus 4pt +\def\small{\@setfontsize{\small}{10}{12pt}} +\def\footnotesize{\@setfontsize{\footnotesize}{9}{10.5pt}} +\def\scriptsize{\@setfontsize{\scriptsize}{8}{9pt}} +\def\tiny{\@setfontsize{\tiny}{6}{7pt}} +% sublargesize is the same as large - 14pt +\def\sublargesize{\@setfontsize{\sublargesize}{14}{17pt}} +\def\large{\@setfontsize{\large}{14}{17pt}} +\def\Large{\@setfontsize{\Large}{17}{20pt}} +\def\LARGE{\@setfontsize{\LARGE}{20}{24pt}} +\def\huge{\@setfontsize{\huge}{22}{26pt}} +\def\Huge{\@setfontsize{\Huge}{24}{28pt}} +\fi + + + +% V1.8a compsoc font sizes +% compsoc font sizes use bp "Postscript" point units (1/72in) +% rather than the traditional pt (1/72.27) +\ifCLASSOPTIONcompsoc +% -- compsoc defaults -- +% ** will override some of these values later ** +% 9pt +\ifx\CLASSOPTIONpt\@IEEEptsizenine +\def\normalsize{\@setfontsize{\normalsize}{9bp}{11bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{11bp} +\normalsize +\abovedisplayskip 1.5ex plus 3bp minus 1bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0bp plus 3bp +\belowdisplayshortskip 1.5ex plus 3bp minus 1bp +\def\small{\@setfontsize{\small}{8.5bp}{10bp}} +\def\footnotesize{\@setfontsize{\footnotesize}{8bp}{9bp}} +\def\scriptsize{\@setfontsize{\scriptsize}{7bp}{8bp}} +\def\tiny{\@setfontsize{\tiny}{5bp}{6bp}} +% sublargesize is the same as large - 10bp +\def\sublargesize{\@setfontsize{\sublargesize}{10bp}{12bp}} +\def\large{\@setfontsize{\large}{10bp}{12bp}} +\def\Large{\@setfontsize{\Large}{12bp}{14bp}} +\def\LARGE{\@setfontsize{\LARGE}{14bp}{17bp}} +\def\huge{\@setfontsize{\huge}{17bp}{20bp}} +\def\Huge{\@setfontsize{\Huge}{20bp}{24bp}} +\fi +% +% 10pt +\ifx\CLASSOPTIONpt\@IEEEptsizeten +\def\normalsize{\@setfontsize{\normalsize}{10bp}{12bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{12bp} +\normalsize +\abovedisplayskip 1.5ex plus 4bp minus 2bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 4bp +\belowdisplayshortskip 1.5ex plus 4bp minus 2bp +\def\small{\@setfontsize{\small}{9bp}{10bp}} +\def\footnotesize{\@setfontsize{\footnotesize}{8bp}{9bp}} +\def\scriptsize{\@setfontsize{\scriptsize}{7bp}{8bp}} +\def\tiny{\@setfontsize{\tiny}{5bp}{6bp}} +% sublargesize is a tad smaller than large - 11bp +\def\sublargesize{\@setfontsize{\sublargesize}{11bp}{13.5bp}} +\def\large{\@setfontsize{\large}{12bp}{14bp}} +\def\Large{\@setfontsize{\Large}{14bp}{17bp}} +\def\LARGE{\@setfontsize{\LARGE}{17bp}{20bp}} +\def\huge{\@setfontsize{\huge}{20bp}{24bp}} +\def\Huge{\@setfontsize{\Huge}{24bp}{28bp}} +\fi +% +% 11pt +\ifx\CLASSOPTIONpt\@IEEEptsizeeleven +\def\normalsize{\@setfontsize{\normalsize}{11bp}{13.5bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{13.5bp} +\normalsize +\abovedisplayskip 1.5ex plus 5bp minus 3bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 5bp +\belowdisplayshortskip 1.5ex plus 5bp minus 3bp +\def\small{\@setfontsize{\small}{10bp}{12bp}} +\def\footnotesize{\@setfontsize{\footnotesize}{9bp}{10.5bp}} +\def\scriptsize{\@setfontsize{\scriptsize}{8bp}{9bp}} +\def\tiny{\@setfontsize{\tiny}{6bp}{7bp}} +% sublargesize is the same as large - 12bp +\def\sublargesize{\@setfontsize{\sublargesize}{12bp}{14bp}} +\def\large{\@setfontsize{\large}{12bp}{14bp}} +\def\Large{\@setfontsize{\Large}{14bp}{17bp}} +\def\LARGE{\@setfontsize{\LARGE}{17bp}{20bp}} +\def\huge{\@setfontsize{\huge}{20bp}{24bp}} +\def\Huge{\@setfontsize{\Huge}{24bp}{28bp}} +\fi +% +% 12pt +\ifx\CLASSOPTIONpt\@IEEEptsizetwelve +\def\normalsize{\@setfontsize{\normalsize}{12bp}{14bp}}% +\setlength{\@IEEEnormalsizeunitybaselineskip}{14bp}% +\normalsize +\abovedisplayskip 1.5ex plus 6bp minus 4bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 6bp +\belowdisplayshortskip 1.5ex plus 6bp minus 4bp +\def\small{\@setfontsize{\small}{10bp}{12bp}} +\def\footnotesize{\@setfontsize{\footnotesize}{9bp}{10.5bp}} +\def\scriptsize{\@setfontsize{\scriptsize}{8bp}{9bp}} +\def\tiny{\@setfontsize{\tiny}{6bp}{7bp}} +% sublargesize is the same as large - 14bp +\def\sublargesize{\@setfontsize{\sublargesize}{14bp}{17bp}} +\def\large{\@setfontsize{\large}{14bp}{17bp}} +\def\Large{\@setfontsize{\Large}{17bp}{20bp}} +\def\LARGE{\@setfontsize{\LARGE}{20bp}{24bp}} +\def\huge{\@setfontsize{\huge}{22bp}{26bp}} +\def\Huge{\@setfontsize{\Huge}{24bp}{28bp}} +\fi +% +% -- override defaults: compsoc journals use special normalsizes -- +\ifCLASSOPTIONconference +% +% compsoc conferences +% 9pt +\ifx\CLASSOPTIONpt\@IEEEptsizenine +\def\normalsize{\@setfontsize{\normalsize}{9bp}{10.8bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{10.8bp} +\normalsize +\abovedisplayskip 1.5ex plus 3bp minus 1bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0bp plus 3bp +\belowdisplayshortskip 1.5ex plus 3bp minus 1bp +\fi +% 10pt +\ifx\CLASSOPTIONpt\@IEEEptsizeten +\def\normalsize{\@setfontsize{\normalsize}{10bp}{11.2bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{11.2bp} +\normalsize +\abovedisplayskip 1.5ex plus 4bp minus 2bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 4bp +\belowdisplayshortskip 1.5ex plus 4bp minus 2bp +\fi +% 11pt +\ifx\CLASSOPTIONpt\@IEEEptsizeeleven +\def\normalsize{\@setfontsize{\normalsize}{11bp}{13.2bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{13.2bp} +\normalsize +\abovedisplayskip 1.5ex plus 5bp minus 3bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 5bp +\belowdisplayshortskip 1.5ex plus 5bp minus 3bp +\fi +% 12pt +\ifx\CLASSOPTIONpt\@IEEEptsizetwelve +\def\normalsize{\@setfontsize{\normalsize}{12bp}{14.4bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{14.4bp} +\normalsize +\abovedisplayskip 1.5ex plus 6bp minus 4bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 6bp +\belowdisplayshortskip 1.5ex plus 6bp minus 4bp +\fi +% +% compsoc nonconferences +\else +% 9pt +\ifx\CLASSOPTIONpt\@IEEEptsizenine +\def\normalsize{\@setfontsize{\normalsize}{9bp}{10.8bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{10.8bp} +\normalsize +\abovedisplayskip 1.5ex plus 3bp minus 1bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0bp plus 3bp +\belowdisplayshortskip 1.5ex plus 3bp minus 1bp +\fi +% 10pt +\ifx\CLASSOPTIONpt\@IEEEptsizeten +% the official spec is 9.5bp with 11.4bp leading for 10pt, +% but measurements of proofs suggest upto 11.723bp leading +% here we'll use 11.54bp which gives 61 lines per column +% with the standard compsoc margins +\def\normalsize{\@setfontsize{\normalsize}{9.5bp}{11.54bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{11.54bp} +\normalsize +\abovedisplayskip 1.5ex plus 4bp minus 2bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 4bp +\belowdisplayshortskip 1.5ex plus 4bp minus 2bp +\fi +% 11pt +\ifx\CLASSOPTIONpt\@IEEEptsizeeleven +\def\normalsize{\@setfontsize{\normalsize}{11bp}{13.2bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{13.2bp} +\normalsize +\abovedisplayskip 1.5ex plus 5bp minus 3bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 5bp +\belowdisplayshortskip 1.5ex plus 5bp minus 3bp +\fi +% 12pt +\ifx\CLASSOPTIONpt\@IEEEptsizetwelve +\def\normalsize{\@setfontsize{\normalsize}{12bp}{14.4bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{14.4bp} +\normalsize +\abovedisplayskip 1.5ex plus 6bp minus 4bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 6bp +\belowdisplayshortskip 1.5ex plus 6bp minus 4bp +\fi +\fi\fi + + + + +% V1.6 The Computer Modern Fonts will issue a substitution warning for +% 24pt titles (24.88pt is used instead, but the default and correct +% Times font will scale exactly as needed) increase the substitution +% tolerance to turn off this warning. +% +% V1.8a, the compsoc bp font sizes can also cause bogus font substitution +% warnings with footnote or scriptsize math and the $\bullet$ itemized +% list of \IEEEcompsocitemizethanks. So, increase this to 1.5pt or more. +\def\fontsubfuzz{1.7bp} + + +% warn the user in case they forget to use the 9pt option with +% technote +\ifCLASSOPTIONtechnote% + \ifx\CLASSOPTIONpt\@IEEEptsizenine\else% + \typeout{** ATTENTION: Technotes are normally 9pt documents.}% + \fi% +\fi + + +% V1.7 +% Improved \textunderscore to provide a much better fake _ when used with +% OT1 encoding. Under OT1, detect use of pcr or cmtt \ttfamily and use +% available true _ glyph for those two typewriter fonts. +\def\@IEEEstringptm{ptm} % Times Roman family +\def\@IEEEstringppl{ppl} % Palatino Roman family +\def\@IEEEstringphv{phv} % Helvetica Sans Serif family +\def\@IEEEstringpcr{pcr} % Courier typewriter family +\def\@IEEEstringcmtt{cmtt} % Computer Modern typewriter family +\DeclareTextCommandDefault{\textunderscore}{\leavevmode +\ifx\f@family\@IEEEstringpcr\string_\else +\ifx\f@family\@IEEEstringcmtt\string_\else +\ifx\f@family\@IEEEstringptm\kern 0em\vbox{\hrule\@width 0.5em\@height 0.5pt\kern -0.3ex}\else +\ifx\f@family\@IEEEstringppl\kern 0em\vbox{\hrule\@width 0.5em\@height 0.5pt\kern -0.3ex}\else +\ifx\f@family\@IEEEstringphv\kern -0.03em\vbox{\hrule\@width 0.62em\@height 0.52pt\kern -0.33ex}\kern -0.03em\else +\kern 0.09em\vbox{\hrule\@width 0.6em\@height 0.44pt\kern -0.63pt\kern -0.42ex}\kern 0.09em\fi\fi\fi\fi\fi\relax} + + + + +% set the default \baselinestretch +\def\baselinestretch{1} +\ifCLASSOPTIONdraftcls + \def\baselinestretch{1.5}% default baselinestretch for draft modes +\fi + + +% process CLASSINPUT baselinestretch +\ifx\CLASSINPUTbaselinestretch\@IEEEundefined +\else + \edef\baselinestretch{\CLASSINPUTbaselinestretch} % user CLASSINPUT override + \typeout{** ATTENTION: Overriding \string\baselinestretch\space to + \baselinestretch\space via \string\CLASSINPUT.} +\fi + +\small\normalsize % make \baselinestretch take affect + + + + +% store the normalsize baselineskip +\newdimen\CLASSINFOnormalsizebaselineskip +\CLASSINFOnormalsizebaselineskip=\baselineskip\relax +% and the normalsize unity (baselinestretch=1) baselineskip +% we could save a register by giving the user access to +% \@IEEEnormalsizeunitybaselineskip. However, let's protect +% its read only internal status +\newdimen\CLASSINFOnormalsizeunitybaselineskip +\CLASSINFOnormalsizeunitybaselineskip=\@IEEEnormalsizeunitybaselineskip\relax +% store the nominal value of jot +\newdimen\IEEEnormaljot +\IEEEnormaljot=0.25\baselineskip\relax + +% set \jot +\jot=\IEEEnormaljot\relax + + + + +% V1.6, we are now going to fine tune the interword spacing +% The default interword glue for Times under TeX appears to use a +% nominal interword spacing of 25% (relative to the font size, i.e., 1em) +% a maximum of 40% and a minimum of 19%. +% For example, 10pt text uses an interword glue of: +% +% 2.5pt plus 1.49998pt minus 0.59998pt +% +% However, the IEEE allows for a more generous range which reduces the need +% for hyphenation, especially for two column text. Furthermore, the IEEE +% tends to use a little bit more nominal space between the words. +% The IEEE's interword spacing percentages appear to be: +% 35% nominal +% 23% minimum +% 50% maximum +% (They may even be using a tad more for the largest fonts such as 24pt.) +% +% for bold text, the IEEE increases the spacing a little more: +% 37.5% nominal +% 23% minimum +% 55% maximum + +% here are the interword spacing ratios we'll use +% for medium (normal weight) +\def\@IEEEinterspaceratioM{0.35} +\def\@IEEEinterspaceMINratioM{0.23} +\def\@IEEEinterspaceMAXratioM{0.50} + +% for bold +\def\@IEEEinterspaceratioB{0.375} +\def\@IEEEinterspaceMINratioB{0.23} +\def\@IEEEinterspaceMAXratioB{0.55} + + +% compsoc nonconference papers use Palatino, +% tweak settings to better match the proofs +\ifCLASSOPTIONcompsoc +\ifCLASSOPTIONconference\else +% for medium (normal weight) +\def\@IEEEinterspaceratioM{0.28} +\def\@IEEEinterspaceMINratioM{0.21} +\def\@IEEEinterspaceMAXratioM{0.47} +% for bold +\def\@IEEEinterspaceratioB{0.305} +\def\@IEEEinterspaceMINratioB{0.21} +\def\@IEEEinterspaceMAXratioB{0.52} +\fi\fi + + +% command to revise the interword spacing for the current font under TeX: +% \fontdimen2 = nominal interword space +% \fontdimen3 = interword stretch +% \fontdimen4 = interword shrink +% since all changes to the \fontdimen are global, we can enclose these commands +% in braces to confine any font attribute or length changes +\def\@@@IEEEsetfontdimens#1#2#3{{% +\setlength{\@IEEEtrantmpdimenB}{\f@size pt}% grab the font size in pt, could use 1em instead. +\setlength{\@IEEEtrantmpdimenA}{#1\@IEEEtrantmpdimenB}% +\fontdimen2\font=\@IEEEtrantmpdimenA\relax +\addtolength{\@IEEEtrantmpdimenA}{-#2\@IEEEtrantmpdimenB}% +\fontdimen3\font=-\@IEEEtrantmpdimenA\relax +\setlength{\@IEEEtrantmpdimenA}{#1\@IEEEtrantmpdimenB}% +\addtolength{\@IEEEtrantmpdimenA}{-#3\@IEEEtrantmpdimenB}% +\fontdimen4\font=\@IEEEtrantmpdimenA\relax}} + +% revise the interword spacing for each font weight +\def\@@IEEEsetfontdimens{{% +\mdseries +\@@@IEEEsetfontdimens{\@IEEEinterspaceratioM}{\@IEEEinterspaceMAXratioM}{\@IEEEinterspaceMINratioM}% +\bfseries +\@@@IEEEsetfontdimens{\@IEEEinterspaceratioB}{\@IEEEinterspaceMAXratioB}{\@IEEEinterspaceMINratioB}% +}} + +% revise the interword spacing for each font shape +% \slshape is not often used for IEEE work and is not altered here. The \scshape caps are +% already a tad too large in the free LaTeX fonts (as compared to what the IEEE uses) so we +% won't alter these either. +\def\@IEEEsetfontdimens{{% +\normalfont +\@@IEEEsetfontdimens +\normalfont\itshape +\@@IEEEsetfontdimens +}} + +% command to revise the interword spacing for each font size (and shape +% and weight). Only the \rmfamily is done here as \ttfamily uses a +% fixed spacing and \sffamily is not used as the main text of IEEE papers. +\def\@IEEEtunefonts{{\selectfont\rmfamily +\tiny\@IEEEsetfontdimens +\scriptsize\@IEEEsetfontdimens +\footnotesize\@IEEEsetfontdimens +\small\@IEEEsetfontdimens +\normalsize\@IEEEsetfontdimens +\sublargesize\@IEEEsetfontdimens +\large\@IEEEsetfontdimens +\LARGE\@IEEEsetfontdimens +\huge\@IEEEsetfontdimens +\Huge\@IEEEsetfontdimens}} + +% if the nofonttune class option is not given, revise the interword spacing +% now - in case IEEEtran makes any default length measurements, and make +% sure all the default fonts are loaded +\ifCLASSOPTIONnofonttune\else +\@IEEEtunefonts +\fi + +% and again at the start of the document in case the user loaded different fonts +\AtBeginDocument{\ifCLASSOPTIONnofonttune\else\@IEEEtunefonts\fi} + + + + + +% -- V1.8a page setup commands -- + +% The default sample text for calculating margins +% Note that IEEE publications use \scriptsize for headers and footers. +\def\IEEEdefaultsampletext{\normalfont\normalsize gT} +\def\IEEEdefaultheadersampletext{\normalfont\scriptsize T}% IEEE headers default to uppercase +\def\IEEEdefaultfootersampletext{\normalfont\scriptsize gT} + + + +% usage: \IEEEsettextwidth{inner margin}{outer margin} +% Sets \textwidth to allow the specified inner and outer margins +% for the current \paperwidth. +\def\IEEEsettextwidth#1#2{\@IEEEtrantmpdimenA\paperwidth +\@IEEEtrantmpdimenB#1\relax +\advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB +\@IEEEtrantmpdimenB#2\relax +\advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB +\textwidth\@IEEEtrantmpdimenA} + + + +% usage: \IEEEsetsidemargin{mode: i, o, c, a}{margin/offset} +% Sets \oddsidemargin and \evensidemargin to yield the specified margin +% of the given mode. +% The available modes are: +% i = inner margin +% o = outer margin +% c = centered, with the given offset +% a = adjust the margins using the given offset +% For the offsets, positive values increase the inner margin. +% \textwidth should be set properly for the given margins before calling this +% function. +\def\IEEEsetsidemargin#1#2{\@IEEEtrantmpdimenA #2\relax +\@IEEEextracttoken{#1}\relax +% check for mode errors +\ifx\@IEEEextractedtokenmacro\@empty + \@IEEEclspkgerror{Empty mode type in \string\IEEEsetsidemargin\space (line \the\inputlineno).\MessageBreak + Defaulting to `i'}{Valid modes for \string\IEEEsetsidemargin\space are: i, o, c and a.}\relax + \let\@IEEEextractedtoken=i\relax + \def\@IEEEextractedtokenmacro{i}\relax +\else + \ifx\@IEEEextractedtokensdiscarded\@empty\else + \typeout{** WARNING: \string\IEEEsetsidemargin\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax + \fi +\fi +% handle each mode +\if\@IEEEextractedtoken a\relax + \advance\oddsidemargin by \@IEEEtrantmpdimenA\relax +\else +\if\@IEEEextractedtoken c\relax + \oddsidemargin\paperwidth + \advance\oddsidemargin by -\textwidth + \divide\oddsidemargin by 2\relax + \advance\oddsidemargin by -1in\relax + \advance\oddsidemargin by \@IEEEtrantmpdimenA\relax +\else +\if\@IEEEextractedtoken o\relax + \oddsidemargin\paperwidth + \advance\oddsidemargin by -\textwidth + \advance\oddsidemargin by -\@IEEEtrantmpdimenA + \advance\oddsidemargin by -1in\relax +\else + \if\@IEEEextractedtoken i\relax + \else + \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEsetsidemargin\space (line \the\inputlineno).\MessageBreak + Defaulting to `i'}% + {Valid modes for \string\IEEEsetsidemargin\space are: i, o, c and a.}% + \fi + \oddsidemargin\@IEEEtrantmpdimenA + \advance\oddsidemargin by -1in\relax +\fi\fi\fi +% odd and even side margins both mean "inner" for single sided pages +\evensidemargin\oddsidemargin +% but are mirrors of each other when twosided is in effect +\if@twoside + \evensidemargin\paperwidth + \advance\evensidemargin by -\textwidth + \advance\evensidemargin by -\oddsidemargin + % have to compensate for both the builtin 1in LaTex offset + % and the fact we already subtracted this offset from \oddsidemargin + \advance\evensidemargin -2in\relax +\fi} + + + +% usage: \IEEEsettextheight[sample text]{top text margin}{bottom text margin} +% Sets \textheight based on the specified top margin and bottom margin. +% Takes into consideration \paperheight, \topskip, and (by default) the +% the actual height and depth of the \IEEEdefaultsampletext text. +\def\IEEEsettextheight{\@ifnextchar [{\@IEEEsettextheight}{\@IEEEsettextheight[\IEEEdefaultsampletext]}} +\def\@IEEEsettextheight[#1]#2#3{\textheight\paperheight\relax + \@IEEEtrantmpdimenA #2\relax + \advance \textheight by -\@IEEEtrantmpdimenA% subtract top margin + \@IEEEtrantmpdimenA #3\relax + \advance \textheight by -\@IEEEtrantmpdimenA% subtract bottom margin + \advance \textheight by \topskip% add \topskip + % subtract off everything above the top, and below the bottom, baselines + \settoheight{\@IEEEtrantmpdimenA}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance \textheight by -\@IEEEtrantmpdimenA + \settodepth{\@IEEEtrantmpdimenA}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance \textheight by -\@IEEEtrantmpdimenA} + + + +\newdimen\IEEEquantizedlength +\IEEEquantizedlength 0sp\relax +\newdimen\IEEEquantizedlengthdiff +\IEEEquantizedlengthdiff 0sp\relax +\def\IEEEquantizedlengthint{0} + +% usage: \IEEEquantizelength{mode: d, c, i}{base unit}{length} +% Sets the length \IEEEquantizedlength to be an integer multiple of the given +% (nonzero) base unit such that \IEEEquantizedlength approximates the given +% length. +% \IEEEquantizedlengthdiff is a length equal to the difference between the +% \IEEEquantizedlength and the given length. +% \IEEEquantizedlengthint is a macro containing the integer number of base units +% in \IEEEquantizedlength. +% i.e., \IEEEquantizedlength = \IEEEquantizedlengthint * base unit +% The mode determines how \IEEEquantizedlength is quantized: +% d = always decrease (always round down \IEEEquantizeint) +% c = use the closest match +% i = always increase (always round up \IEEEquantizeint) +% In anycase, if the given length is already quantized, +% \IEEEquantizedlengthdiff will be set to zero. +\def\IEEEquantizelength#1#2#3{\begingroup +% work in isolation so as not to externally disturb the \@IEEEtrantmp +% variables +% load the argument values indirectly via \IEEEquantizedlengthdiff +% in case the user refers to our \@IEEEtrantmpdimenX, \IEEEquantizedlength, +% etc. in the arguments. we also will work with these as counters, +% i.e., in sp units +% A has the base unit +\IEEEquantizedlengthdiff #2\relax\relax\relax\relax +\@IEEEtrantmpcountA\IEEEquantizedlengthdiff +% B has the input length +\IEEEquantizedlengthdiff #3\relax\relax\relax\relax +\@IEEEtrantmpcountB\IEEEquantizedlengthdiff +\@IEEEtrantmpdimenA\the\@IEEEtrantmpcountA sp\relax +\@IEEEtrantmpdimenB\the\@IEEEtrantmpcountB sp\relax +% \@IEEEtrantmpcountC will have the quantized int +% \IEEEquantizedlength will have the quantized length +% \@IEEEtrantmpdimenC will have the quantized diff +% initialize them to zero as this is what will be +% exported if an error occurs +\@IEEEtrantmpcountC 0\relax +\IEEEquantizedlength 0sp\relax +\@IEEEtrantmpdimenC 0sp\relax +% extract mode +\@IEEEextracttoken{#1}\relax +% check for mode errors +\ifx\@IEEEextractedtokenmacro\@empty + \@IEEEclspkgerror{Empty mode type in \string\IEEEquantizelength\space (line \the\inputlineno).\MessageBreak + Defaulting to `d'}{Valid modes for \string\IEEEquantizelength\space are: d, c and i.}\relax + \let\@IEEEextractedtoken=d\relax + \def\@IEEEextractedtokenmacro{d}\relax +\else + \ifx\@IEEEextractedtokensdiscarded\@empty\else + \typeout{** WARNING: \string\IEEEquantizelength\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax + \fi +\fi +% check for base unit is zero error +\ifnum\@IEEEtrantmpcountA=0\relax +\@IEEEclspkgerror{Base unit is zero in \string\IEEEquantizelength\space (line \the\inputlineno).\MessageBreak + \string\IEEEquantizedlength\space and \string\IEEEquantizedlengthdiff\space are set to zero}{Division by zero is not allowed.}\relax +\else% base unit is nonzero + % \@IEEEtrantmpcountC carries the number of integer units + % in the quantized length (integer length \ base) + \@IEEEtrantmpcountC\@IEEEtrantmpcountB\relax + \divide\@IEEEtrantmpcountC by \@IEEEtrantmpcountA\relax + % \IEEEquantizedlength has the (rounded down) quantized length + % = base * int + \IEEEquantizedlength\@IEEEtrantmpdimenA\relax + \multiply\IEEEquantizedlength by \@IEEEtrantmpcountC\relax + % \@IEEEtrantmpdimenC has the difference + % = quantized length - length + \@IEEEtrantmpdimenC\IEEEquantizedlength\relax + \advance\@IEEEtrantmpdimenC by -\@IEEEtrantmpdimenB\relax + % trap special case of length being already quantized + % to avoid a roundup under i option + \ifdim\@IEEEtrantmpdimenC=0sp\relax + \else % length not is already quantized + % set dimenA to carry the upper quantized (absolute value) difference: + % quantizedlength + base - length + \advance\@IEEEtrantmpdimenA by \IEEEquantizedlength\relax + \advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB\relax + % set dimenB to carry the lower quantized (absolute value) difference: + % length - quantizedlength + \advance\@IEEEtrantmpdimenB by -\IEEEquantizedlength\relax + % handle each mode + \if\@IEEEextractedtoken c\relax + % compare upper and lower amounts, select upper if lower > upper + \ifdim\@IEEEtrantmpdimenB>\@IEEEtrantmpdimenA\relax + % use upper + \advance\IEEEquantizedlength by \the\@IEEEtrantmpcountA sp\relax + \advance\@IEEEtrantmpcountC by 1\relax + \@IEEEtrantmpdimenC\@IEEEtrantmpdimenA + \else% <=. uselower + % no need to do anything for lower, use output values already setup + \fi + \else% not mode c + \if\@IEEEextractedtoken i\relax + % always round up under i mode + \advance\IEEEquantizedlength by \the\@IEEEtrantmpcountA sp\relax + \advance\@IEEEtrantmpcountC by 1\relax + \@IEEEtrantmpdimenC\@IEEEtrantmpdimenA + \else + \if\@IEEEextractedtoken d\relax + \else + \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEquantizelength\space (line \the\inputlineno).\MessageBreak + Defaulting to `d'}% + {Valid modes for \string\IEEEquantizelength\space are: d, c, and i.}\relax + \fi % if d + % no need to do anything for d, use output values already setup + \fi\fi % if i, c + \fi % if length is already quantized +\fi% if base unit is zero +% globally assign the results to macros we use here to escape the enclosing +% group without needing to call \global on any of the \@IEEEtrantmp variables. +% \@IEEEtrantmpcountC has the quantized int +% \IEEEquantizedlength has the quantized length +% \@IEEEtrantmpdimenC has the quantized diff +\xdef\@IEEEquantizedlengthintmacro{\the\@IEEEtrantmpcountC}\relax +\@IEEEtrantmpcountC\IEEEquantizedlength\relax +\xdef\@IEEEquantizedlengthmacro{\the\@IEEEtrantmpcountC}\relax +\@IEEEtrantmpcountC\@IEEEtrantmpdimenC\relax +\xdef\@IEEEquantizedlengthdiffmacro{\the\@IEEEtrantmpcountC}\relax +\endgroup +% locally assign the outputs here from the macros +\expandafter\IEEEquantizedlength\@IEEEquantizedlengthmacro sp\relax +\expandafter\IEEEquantizedlengthdiff\@IEEEquantizedlengthdiffmacro sp\relax +\edef\IEEEquantizedlengthint{\@IEEEquantizedlengthintmacro}\relax} + + + +\newdimen\IEEEquantizedtextheightdiff +\IEEEquantizedtextheightdiff 0sp\relax + +% usage: \IEEEquantizetextheight[base unit]{mode: d, c, i} +% Sets \textheight to be an integer multiple of the current \baselineskip +% (or the optionally specified base unit) plus the first (\topskip) line. +% \IEEEquantizedtextheightdiff is a length equal to the difference between +% the new quantized and original \textheight. +% \IEEEquantizedtextheightlpc is a macro containing the integer number of +% lines per column under the quantized \textheight. i.e., +% \textheight = \IEEEquantizedtextheightlpc * \baselineskip + \topskip +% The mode determines how \textheight is quantized: +% d = always decrease (always round down the number of lines per column) +% c = use the closest match +% i = always increase (always round up the number of lines per column) +% In anycase, if \textheight is already quantized, it will remain unchanged, +% and \IEEEquantizedtextheightdiff will be set to zero. +% Depends on: \IEEEquantizelength +\def\IEEEquantizetextheight{\@ifnextchar [{\@IEEEquantizetextheight}{\@IEEEquantizetextheight[\baselineskip]}} +\def\@IEEEquantizetextheight[#1]#2{\begingroup +% use our \IEEEquantizedtextheightdiff as a scratch pad +% we need to subtract off \topskip before quantization +\IEEEquantizedtextheightdiff\textheight +\advance\IEEEquantizedtextheightdiff by -\topskip\relax +\IEEEquantizelength{#2}{#1}{\IEEEquantizedtextheightdiff} +% add back \topskip line +\advance\IEEEquantizedlength by \topskip +\@IEEEtrantmpcountC\IEEEquantizedlengthint\relax +\advance\@IEEEtrantmpcountC by 1\relax +% globally assign the results to macros we use here to escape the enclosing +% group without needing to call \global on any of the \@IEEEtrantmp variables. +\xdef\@IEEEquantizedtextheightlpcmacro{\the\@IEEEtrantmpcountC}\relax +\@IEEEtrantmpcountC\IEEEquantizedlength\relax +\xdef\@IEEEquantizedtextheightmacro{\the\@IEEEtrantmpcountC}\relax +\@IEEEtrantmpcountC\IEEEquantizedlengthdiff\relax +\xdef\@IEEEquantizedtextheightdiffmacro{\the\@IEEEtrantmpcountC}\relax +\endgroup +% locally assign the outputs here from the macros +\textheight\@IEEEquantizedtextheightmacro sp\relax +\IEEEquantizedtextheightdiff\@IEEEquantizedtextheightdiffmacro sp\relax +\edef\IEEEquantizedtextheightlpc{\@IEEEquantizedtextheightlpcmacro}} + + + +% usage: \IEEEsettopmargin[sample text]{mode: t, b, c, a, q}{margin/offset} +% Sets \topmargin based on the specified vertical margin. +% Takes into consideration the base 1in offset, \headheight, \headsep, +% \topskip, and (by default) the the actual height (or, for the bottom, depth) +% of the \IEEEdefaultsampletext text. +% The available modes are: +% t = top margin +% b = bottom margin +% c = vertically centered, with the given offset +% a = adjust the vertical margins using the given offset +% q = adjust the margins using \IEEEquantizedtextheightdiff and the given offset +% For the offsets, positive values increase the top margin. +% \headheight, \headsep, \topskip and \textheight should be set properly for the +% given margins before calling this function. +\def\IEEEsettopmargin{\@ifnextchar [{\@IEEEsettopmargin}{\@IEEEsettopmargin[\IEEEdefaultsampletext]}} +\def\@IEEEsettopmargin[#1]#2#3{\@IEEEtrantmpdimenA #3\relax +\@IEEEextracttoken{#2}\relax +% check for mode errors +\ifx\@IEEEextractedtokenmacro\@empty + \@IEEEclspkgerror{Empty mode type in \string\IEEEsettopmargin\space (line \the\inputlineno).\MessageBreak + Defaulting to `t'}{Valid modes for \string\IEEEsettopmargin\space are: t, b, c, a and q.}\relax + \let\@IEEEextractedtoken=t\relax + \def\@IEEEextractedtokenmacro{t}\relax +\else + \ifx\@IEEEextractedtokensdiscarded\@empty\else + \typeout{** WARNING: \string\IEEEsettopmargin\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax + \fi +\fi +% handle each mode +\if\@IEEEextractedtoken a\relax + \advance\topmargin by \@IEEEtrantmpdimenA\relax +\else +\if\@IEEEextractedtoken q\relax + % we need to adjust by half the \IEEEquantizedtextheightdiff value + \@IEEEtrantmpdimenB\IEEEquantizedtextheightdiff\relax + \divide\@IEEEtrantmpdimenB by 2\relax + % a positive \IEEEquantizedtextheightdiff means we need to reduce \topmargin + % because \textheight has been lenghtened + \advance\topmargin by -\@IEEEtrantmpdimenB\relax + \advance\topmargin by \@IEEEtrantmpdimenA\relax +\else +\if\@IEEEextractedtoken c\relax + \topmargin\paperheight + \advance\topmargin by -\textheight + % \textheight includes \topskip, but we should not count topskip whitespace here, backout + \advance \topmargin by \topskip + \settoheight{\@IEEEtrantmpdimenB}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\topmargin by -\@IEEEtrantmpdimenB\relax + \settodepth{\@IEEEtrantmpdimenB}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\topmargin by -\@IEEEtrantmpdimenB\relax + \divide\topmargin by 2\relax + \advance\topmargin by \@IEEEtrantmpdimenA\relax +\else +\if\@IEEEextractedtoken b\relax + \topmargin\paperheight + \advance\topmargin by -\textheight + % \textheight includes \topskip, but we should not count topskip whitespace here, backout + \advance \topmargin by \topskip + \settodepth{\@IEEEtrantmpdimenB}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\topmargin by -\@IEEEtrantmpdimenB\relax + \advance\topmargin by -\@IEEEtrantmpdimenA\relax +\else + \if\@IEEEextractedtoken t\relax + \else + \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEsettopmargin\space (line \the\inputlineno).\MessageBreak + Defaulting to `t'}% + {Valid modes for \string\IEEEsettopmargin\space are: t, b, c, a and q.}\relax + \fi + \topmargin\@IEEEtrantmpdimenA\relax + \settoheight{\@IEEEtrantmpdimenB}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\topmargin by \@IEEEtrantmpdimenB\relax +\fi\fi % if t, b, c +% convert desired top margin into actual \topmargin +% this is not done for the q or a modes because they are only adjustments +\advance \topmargin by -\topskip +\advance \topmargin by -1in +\advance \topmargin by -\headheight +\advance \topmargin by -\headsep +\fi\fi % if q, a +} + + + +% usage: \IEEEsetheadermargin[header sample][text sample]{mode: t, b, c, a}{margin/offset} +% Differentially adjusts \topmargin and \headsep (such that their sum is unchanged) +% based on the specified header margin. +% Takes into consideration the base 1in offset, \headheight, \topskip, and (by default) +% the actual height (or depth) of the \IEEEdefaultheadersampletext and +% \IEEEdefaultsampletext text. +% The available modes are: +% t = top margin (top of the header text to the top of the page) +% b = bottom margin (bottom of the header text to the top of the main text) +% c = vertically centered between the main text and the top of the page, +% with the given offset +% a = adjust the vertical position using the given offset +% For the offsets, positive values move the header downward. +% \headheight, \headsep, \topskip and \topmargin should be set properly before +% calling this function. +\def\IEEEsetheadermargin{\@ifnextchar [{\@IEEEsetheadermargin}{\@IEEEsetheadermargin[\IEEEdefaultheadersampletext]}} +\def\@IEEEsetheadermargin[#1]{\@ifnextchar [{\@@IEEEsetheadermargin[#1]}{\@@IEEEsetheadermargin[#1][\IEEEdefaultsampletext]}} +\def\@@IEEEsetheadermargin[#1][#2]#3#4{\@IEEEtrantmpdimenA #4\relax +\@IEEEextracttoken{#3}\relax +% check for mode errors +\ifx\@IEEEextractedtokenmacro\@empty + \@IEEEclspkgerror{Empty mode type in \string\IEEEsetheadermargin\space (line \the\inputlineno).\MessageBreak + Defaulting to `t'}{Valid modes for \string\IEEEsetheadermargin\space are: t, b, c, and a.}\relax + \let\@IEEEextractedtoken=t\relax + \def\@IEEEextractedtokenmacro{t}\relax +\else + \ifx\@IEEEextractedtokensdiscarded\@empty\else + \typeout{** WARNING: \string\IEEEsetheadermargin\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax + \fi +\fi +% handle each mode +\if\@IEEEextractedtoken a\relax + % No need to do anything here and can pass through the adjustment + % value as is. The end adjustment of \topmargin and \headsep will + % do all that is needed +\else +\if\@IEEEextractedtoken c\relax + % get the bottom margin + \@IEEEtrantmpdimenB\headsep\relax + \settodepth{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + \advance\@IEEEtrantmpdimenB by \topskip + \settoheight{\@IEEEtrantmpdimenC}{\begingroup #2\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + % at this point \@IEEEtrantmpdimenB has the actual header bottom margin + % subtract from it the top header margin + \advance\@IEEEtrantmpdimenB -1in\relax % take into consideration the system 1in offset of the top margin + \advance\@IEEEtrantmpdimenB by -\topmargin + \advance\@IEEEtrantmpdimenB by -\headheight + \settoheight{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by \@IEEEtrantmpdimenC + % at this point \@IEEEtrantmpdimenB has the difference between the bottom and top margins + % we need to adjust by half this amount to center the header + \divide\@IEEEtrantmpdimenB by 2\relax + % and add to offset + \advance\@IEEEtrantmpdimenA by \@IEEEtrantmpdimenB +\else +\if\@IEEEextractedtoken b\relax + \@IEEEtrantmpdimenB\headsep\relax + \settodepth{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + \advance\@IEEEtrantmpdimenB by \topskip + \settoheight{\@IEEEtrantmpdimenC}{\begingroup #2\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + % at this point \@IEEEtrantmpdimenB has the actual header bottom margin + % get the difference between the actual and the desired + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenA + \@IEEEtrantmpdimenA\@IEEEtrantmpdimenB +\else + \if\@IEEEextractedtoken t\relax + \else + \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEsetheadermargin\space (line \the\inputlineno).\MessageBreak + Defaulting to `t'}% + {Valid modes for \string\IEEEsetheadermargin\space are: t, b, c and a.}\relax + \fi + \@IEEEtrantmpdimenB 1in\relax % take into consideration the system 1in offset of the top margin + \advance\@IEEEtrantmpdimenB by \topmargin + \advance\@IEEEtrantmpdimenB by \headheight + \settoheight{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + % at this point \@IEEEtrantmpdimenB has the actual header top margin + % get the difference between the desired and the actual + \advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB +\fi\fi % if t, b, c +\fi % if a +% advance \topmargin by the needed amount and reduce \headsep by the same +% so as not to disturb the location of the main text +\advance\topmargin by \@IEEEtrantmpdimenA\relax +\advance\headsep by -\@IEEEtrantmpdimenA\relax +} + + + +% usage: \IEEEsetfootermargin[footer sample][text sample]{mode: t, b, c, a}{margin/offset} +% Adjusts \footskip based on the specified footer margin. +% Takes into consideration the base 1in offset, \paperheight, \headheight, +% \headsep, \textheight and (by default) the actual height (or depth) of the +% \IEEEdefaultfootersampletext and \IEEEdefaultsampletext text. +% The available modes are: +% t = top margin (top of the footer text to the bottom of the main text) +% b = bottom margin (bottom of the footer text to the bottom of page) +% c = vertically centered between the main text and the bottom of the page, +% with the given offset +% a = adjust the vertical position using the given offset +% For the offsets, positive values move the footer downward. +% \headheight, \headsep, \topskip, \topmargin, and \textheight should be set +% properly before calling this function. +\def\IEEEsetfootermargin{\@ifnextchar [{\@IEEEsetfootermargin}{\@IEEEsetfootermargin[\IEEEdefaultfootersampletext]}} +\def\@IEEEsetfootermargin[#1]{\@ifnextchar [{\@@IEEEsetfootermargin[#1]}{\@@IEEEsetfootermargin[#1][\IEEEdefaultsampletext]}} +\def\@@IEEEsetfootermargin[#1][#2]#3#4{\@IEEEtrantmpdimenA #4\relax +\@IEEEextracttoken{#3}\relax +% check for mode errors +\ifx\@IEEEextractedtokenmacro\@empty + \@IEEEclspkgerror{Empty mode type in \string\IEEEsetfootermargin\space (line \the\inputlineno).\MessageBreak + Defaulting to `t'}{Valid modes for \string\IEEEsetfootermargin\space are: t, b, c, and a.}\relax + \let\@IEEEextractedtoken=t\relax + \def\@IEEEextractedtokenmacro{t}\relax +\else + \ifx\@IEEEextractedtokensdiscarded\@empty\else + \typeout{** WARNING: \string\IEEEsetfootermargin\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax + \fi +\fi +% handle each mode +\if\@IEEEextractedtoken a\relax + % No need to do anything here and can pass through the adjustment + % value as is. The end adjustment of \footskip will do all that + % is needed +\else +\if\@IEEEextractedtoken c\relax + % calculate the bottom margin + \@IEEEtrantmpdimenB 1in\relax % system 1in offset + \advance\@IEEEtrantmpdimenB\topmargin\relax + \advance\@IEEEtrantmpdimenB\headheight\relax + \advance\@IEEEtrantmpdimenB\headsep\relax + \advance\@IEEEtrantmpdimenB\textheight\relax + \advance\@IEEEtrantmpdimenB\footskip\relax + \settodepth{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenC by \@IEEEtrantmpdimenB + \@IEEEtrantmpdimenB\paperheight + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + % at this point \@IEEEtrantmpdimenB has the actual footer bottom margin + % now subtract off the footer top margin + \advance\@IEEEtrantmpdimenB -\footskip\relax + \settodepth{\@IEEEtrantmpdimenC}{\begingroup #2\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by \@IEEEtrantmpdimenC + \settoheight{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by \@IEEEtrantmpdimenC + % at this point \@IEEEtrantmpdimenB has the difference between the bottom + % and top footer margins + % our adjustment must be half this value to center the footer + \divide\@IEEEtrantmpdimenB by 2\relax + % add to the offset + \advance\@IEEEtrantmpdimenA by \@IEEEtrantmpdimenB +\else +\if\@IEEEextractedtoken b\relax + % calculate the bottom margin + \@IEEEtrantmpdimenB 1in\relax % system 1in offset + \advance\@IEEEtrantmpdimenB\topmargin\relax + \advance\@IEEEtrantmpdimenB\headheight\relax + \advance\@IEEEtrantmpdimenB\headsep\relax + \advance\@IEEEtrantmpdimenB\textheight\relax + \advance\@IEEEtrantmpdimenB\footskip\relax + \settodepth{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenC by \@IEEEtrantmpdimenB + \@IEEEtrantmpdimenB\paperheight + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + % at this point \@IEEEtrantmpdimenB has the actual footer bottom margin + % get the difference between the actual and the desired + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenA + \@IEEEtrantmpdimenA\@IEEEtrantmpdimenB +\else + \if\@IEEEextractedtoken t\relax + \else + \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEsetfootermargin\space (line \the\inputlineno).\MessageBreak + Defaulting to `t'}% + {Valid modes for \string\IEEEsetfootermargin\space are: t, b, c and a.}\relax + \fi + \@IEEEtrantmpdimenB\footskip\relax + \settodepth{\@IEEEtrantmpdimenC}{\begingroup #2\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + \settoheight{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + % at this point \@IEEEtrantmpdimenB has the actual footer top margin + % get the difference between the desired and the actual + \advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB +\fi\fi % if t, b, c +\fi % if a +% advance \footskip by the needed amount +\advance\footskip by \@IEEEtrantmpdimenA\relax +} + +% -- End V1.8a page setup commands -- + + + + + +% V1.6 +% LaTeX is a little to quick to use hyphenations +% So, we increase the penalty for their use and raise +% the badness level that triggers an underfull hbox +% warning. The author may still have to tweak things, +% but the appearance will be much better "right out +% of the box" than that under V1.5 and prior. +% TeX default is 50 +\hyphenpenalty=750 +\ifCLASSOPTIONcompsoc +\hyphenpenalty 500 +\fi +% If we didn't adjust the interword spacing, 2200 might be better. +% The TeX default is 1000 +\hbadness=1350 +% The IEEE does not use extra spacing after punctuation +\frenchspacing + +% V1.7 increase this a tad to discourage equation breaks +\binoppenalty=1000 % default 700 +\relpenalty=800 % default 500 + +% v1.8a increase these to discourage widows and orphans +\clubpenalty=1000 % default 150 +\widowpenalty=1000 % default 150 +\displaywidowpenalty=1000 % default 50 + + +% margin note stuff +\marginparsep 10pt +\marginparwidth 20pt +\marginparpush 25pt + + +% if things get too close, go ahead and let them touch +\lineskip 0pt +\normallineskip 0pt +\lineskiplimit 0pt +\normallineskiplimit 0pt + +% The distance from the lower edge of the text body to the +% footline +\footskip 0.4in + +% normally zero, should be relative to font height. +% put in a little rubber to help stop some bad breaks (underfull vboxes) +\parskip 0ex plus 0.2ex minus 0.1ex + +\parindent 1.0em +\ifCLASSOPTIONcompsoc + \parindent 1.5em +\fi + +\headheight 12pt +\headsep 18pt +% use the normal font baselineskip +% so that \topskip is unaffected by changes in \baselinestretch +\topskip=\@IEEEnormalsizeunitybaselineskip + + +% V1.8 \maxdepth defaults to 4pt, but should be font size dependent +\maxdepth=0.5\@IEEEnormalsizeunitybaselineskip +\textheight 58pc % 9.63in, 696pt + +% set the default top margin to 58pt +% which results in a \topmargin of -49.59pt for 10pt documents +\IEEEsettopmargin{t}{58pt} +% tweak textheight to a perfect integer number of lines/column. +% standard is: 9pt/63 lpc; 10pt/58 lpc; 11pt/52 lpc; 12pt/50 lpc +\IEEEquantizetextheight{c} +% tweak top margin so that the error is shared equally at the top and bottom +\IEEEsettopmargin{q}{0sp} + + +\columnsep 1pc +\textwidth 43pc % 2 x 21pc + 1pc = 43pc + +% set the default side margins to center the text +\IEEEsetsidemargin{c}{0pt} + + +% adjust margins for default conference mode +\ifCLASSOPTIONconference + \textheight 9.25in % The standard for conferences (668.4975pt) + \IEEEsettopmargin{t}{0.75in} + % tweak textheight to a perfect integer number of lines/page. + % standard is: 9pt/61 lpc; 10pt/56 lpc; 11pt/50 lpc; 12pt/48 lpc + \IEEEquantizetextheight{c} + % tweak top margin so that the error is shared equally at the top and bottom + \IEEEsettopmargin{q}{0sp} +\fi + + +% compsoc text sizes, margins and spacings +\ifCLASSOPTIONcompsoc + \columnsep 12bp + % CS specs for \textwdith are 6.875in + % \textwidth 6.875in + % however, measurements from proofs show they are using 3.5in columns + \textwidth 7in + \advance\textwidth by \columnsep + % set the side margins to center the text + \IEEEsetsidemargin{c}{0pt} + % top/bottom margins to center + % could just set \textheight to 9.75in for all the different paper sizes + % and then quantize, but we'll do it the long way here to allow for easy + % future per-paper size adjustments + \IEEEsettextheight{0.625in}{0.625in}% 11in - 2 * 0.625in = 9.75in is the standard text height for compsoc journals + \IEEEsettopmargin{t}{0.625in} + \if@IEEEusingcspaper + \IEEEsettextheight{0.5in}{0.5in}% 10.75in - 2 * 0.5in = 9.75in + \IEEEsettopmargin{t}{0.5in} + \fi + \if@IEEEusingAfourpaper + \IEEEsettextheight{24.675mm}{24.675mm}% 297mm - 2 * 24.675mm = 247.650mm (9.75in) + \IEEEsettopmargin{t}{24.675mm} + \fi + % tweak textheight to a perfect integer number of lines/page. + % standard is: 9pt/65 lpc; 10pt/61 lpc; 11pt/53 lpc; 12pt/49 lpc + \IEEEquantizetextheight{c} + % tweak top margin so that the error is shared equally at the top and bottom + \IEEEsettopmargin{q}{0sp} + +% compsoc conference + \ifCLASSOPTIONconference + % compsoc conference use a larger value for columnsep + \columnsep 0.25in + \IEEEsettextwidth{0.75in}{0.75in} + % set the side margins to center the text (0.75in for letterpaper) + \IEEEsetsidemargin{c}{0pt} + % compsoc conferences want 1in top and bottom margin + \IEEEsettextheight{1in}{1in} + \IEEEsettopmargin{t}{1in} + % tweak textheight to a perfect integer number of lines/page. + % standard is: 9pt/58 lpc; 10pt/53 lpc; 11pt/48 lpc; 12pt/46 lpc + \IEEEquantizetextheight{c} + % tweak top margin so that the error is shared equally at the top and bottom + \IEEEsettopmargin{q}{0sp} + \fi +\fi + + + +% draft mode settings override that of all other modes +% provides a nice 1in margin all around the paper and extra +% space between the lines for editor's comments +\ifCLASSOPTIONdraftcls + % we want 1in side margins regardless of paper type + \IEEEsettextwidth{1in}{1in} + \IEEEsetsidemargin{c}{0pt} + % want 1in top and bottom margins + \IEEEsettextheight{1in}{1in} + \IEEEsettopmargin{t}{1in} + % digitize textheight to be an integer number of lines. + % this may cause the top and bottom margins to be off a tad + \IEEEquantizetextheight{c} + % tweak top margin so that the error is shared equally at the top and bottom + \IEEEsettopmargin{q}{0sp} +\fi + + + +% process CLASSINPUT inner/outer margin +% if inner margin defined, but outer margin not, set outer to inner. +\ifx\CLASSINPUTinnersidemargin\@IEEEundefined +\else + \ifx\CLASSINPUToutersidemargin\@IEEEundefined + \edef\CLASSINPUToutersidemargin{\CLASSINPUTinnersidemargin} + \fi +\fi + +\ifx\CLASSINPUToutersidemargin\@IEEEundefined +\else + % if outer margin defined, but inner margin not, set inner to outer. + \ifx\CLASSINPUTinnersidemargin\@IEEEundefined + \edef\CLASSINPUTinnersidemargin{\CLASSINPUToutersidemargin} + \fi + \IEEEsettextwidth{\CLASSINPUTinnersidemargin}{\CLASSINPUToutersidemargin} + \IEEEsetsidemargin{i}{\CLASSINPUTinnersidemargin} + \typeout{** ATTENTION: Overriding inner side margin to \CLASSINPUTinnersidemargin\space and + outer side margin to \CLASSINPUToutersidemargin\space via \string\CLASSINPUT.} +\fi + + + +% process CLASSINPUT top/bottom text margin +% if toptext margin defined, but bottomtext margin not, set bottomtext to toptext margin +\ifx\CLASSINPUTtoptextmargin\@IEEEundefined +\else + \ifx\CLASSINPUTbottomtextmargin\@IEEEundefined + \edef\CLASSINPUTbottomtextmargin{\CLASSINPUTtoptextmargin} + \fi +\fi + +\ifx\CLASSINPUTbottomtextmargin\@IEEEundefined +\else + % if bottomtext margin defined, but toptext margin not, set toptext to bottomtext margin + \ifx\CLASSINPUTtoptextmargin\@IEEEundefined + \edef\CLASSINPUTtoptextmargin{\CLASSINPUTbottomtextmargin} + \fi + \IEEEsettextheight{\CLASSINPUTtoptextmargin}{\CLASSINPUTbottomtextmargin} + \IEEEsettopmargin{t}{\CLASSINPUTtoptextmargin} + \typeout{** ATTENTION: Overriding top text margin to \CLASSINPUTtoptextmargin\space and + bottom text margin to \CLASSINPUTbottomtextmargin\space via \string\CLASSINPUT.} +\fi + + + +% default to center header and footer text in the margins +\IEEEsetheadermargin{c}{0pt} +\IEEEsetfootermargin{c}{0pt} + +% adjust header and footer positions for compsoc journals +\ifCLASSOPTIONcompsoc + \ifCLASSOPTIONjournal + \IEEEsetheadermargin{b}{\@IEEEnormalsizeunitybaselineskip} + \IEEEsetfootermargin{t}{\@IEEEnormalsizeunitybaselineskip} + \fi +\fi + + +% V1.8a display lines per column info message on user's console +\def\IEEEdisplayinfolinespercolumn{\@IEEEtrantmpdimenA=\textheight +% topskip represents only one line even if > baselineskip +\advance\@IEEEtrantmpdimenA by -1\topskip +\@IEEEtrantmpcountA=\@IEEEtrantmpdimenA +\@IEEEtrantmpcountB=\@IEEEtrantmpdimenA +\divide\@IEEEtrantmpcountB by \baselineskip +% need to add one line to include topskip (first) line +\advance\@IEEEtrantmpcountB by 1 +% save lines per column value as text +\edef\@IEEEnumlinespercolumninfotxt{\the\@IEEEtrantmpcountB} +% backout topskip advance to allow direct \@IEEEtrantmpcountA comparison +\advance\@IEEEtrantmpcountB by -1 +% restore value as text height (without topskip) rather than just as number of lines +\multiply\@IEEEtrantmpcountB by \baselineskip +% is the column height an integer number of lines per column? +\ifnum\@IEEEtrantmpcountA=\@IEEEtrantmpcountB +\edef\@IEEEnumlinespercolumnexactinfotxt{exact} +\else +\@IEEEtrantmpdimenA\@IEEEtrantmpcountA sp\relax +\advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpcountB sp\relax +\edef\@IEEEnumlinespercolumnexactinfotxt{approximate, difference = \the\@IEEEtrantmpdimenA} +\fi +\typeout{-- Lines per column: \@IEEEnumlinespercolumninfotxt\space (\@IEEEnumlinespercolumnexactinfotxt).}} +% delay execution till start of document to allow for user changes +\AtBeginDocument{\IEEEdisplayinfolinespercolumn} + + + +% LIST SPACING CONTROLS + +% Controls the amount of EXTRA spacing +% above and below \trivlist +% Both \list and IED lists override this. +% However, \trivlist will use this as will most +% things built from \trivlist like the \center +% environment. +\topsep 0.5\baselineskip + +% Controls the additional spacing around lists preceded +% or followed by blank lines. the IEEE does not increase +% spacing before or after paragraphs so it is set to zero. +% \z@ is the same as zero, but faster. +\partopsep \z@ + +% Controls the spacing between paragraphs in lists. +% The IEEE does not increase spacing before or after paragraphs +% so this is also zero. +% With IEEEtran.cls, global changes to +% this value DO affect lists (but not IED lists). +\parsep \z@ + +% Controls the extra spacing between list items. +% The IEEE does not put extra spacing between items. +% With IEEEtran.cls, global changes to this value DO affect +% lists (but not IED lists). +\itemsep \z@ + +% \itemindent is the amount to indent the FIRST line of a list +% item. It is auto set to zero within the \list environment. To alter +% it, you have to do so when you call the \list. +% However, the IEEE uses this for the theorem environment +% There is an alternative value for this near \leftmargini below +\itemindent -1em + +% \leftmargin, the spacing from the left margin of the main text to +% the left of the main body of a list item is set by \list. +% Hence this statement does nothing for lists. +% But, quote and verse do use it for indention. +\leftmargin 2em + +% we retain this stuff from the older IEEEtran.cls so that \list +% will work the same way as before. However, itemize, enumerate and +% description (IED) could care less about what these are as they +% all are overridden. +\leftmargini 2em +%\itemindent 2em % Alternative values: sometimes used. +%\leftmargini 0em +\leftmarginii 1em +\leftmarginiii 1.5em +\leftmarginiv 1.5em +\leftmarginv 1.0em +\leftmarginvi 1.0em +\labelsep 0.5em +\labelwidth \z@ + + +% The old IEEEtran.cls behavior of \list is retained. +% However, the new V1.3 IED list environments override all the +% @list stuff (\@listX is called within \list for the +% appropriate level just before the user's list_decl is called). +% \topsep is now 2pt as the IEEE puts a little extra space around +% lists - used by those non-IED macros that depend on \list. +% Note that \parsep and \itemsep are not redefined as in +% the sizexx.clo \@listX (which article.cls uses) so global changes +% of these values DO affect \list +% +\def\@listi{\leftmargin\leftmargini \topsep 2pt plus 1pt minus 1pt} +\let\@listI\@listi +\def\@listii{\leftmargin\leftmarginii\labelwidth\leftmarginii% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listiii{\leftmargin\leftmarginiii\labelwidth\leftmarginiii% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listiv{\leftmargin\leftmarginiv\labelwidth\leftmarginiv% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listv{\leftmargin\leftmarginv\labelwidth\leftmarginv% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listvi{\leftmargin\leftmarginvi\labelwidth\leftmarginvi% + \advance\labelwidth-\labelsep \topsep 2pt} + + +% The IEEE uses 5) not 5. +\def\labelenumi{\theenumi)} \def\theenumi{\arabic{enumi}} + +% The IEEE uses a) not (a) +\def\labelenumii{\theenumii)} \def\theenumii{\alph{enumii}} + +% The IEEE uses iii) not iii. +\def\labelenumiii{\theenumiii)} \def\theenumiii{\roman{enumiii}} + +% The IEEE uses A) not A. +\def\labelenumiv{\theenumiv)} \def\theenumiv{\Alph{enumiv}} + +% exactly the same as in article.cls +\def\p@enumii{\theenumi} +\def\p@enumiii{\theenumi(\theenumii)} +\def\p@enumiv{\p@enumiii\theenumiii} + +% itemized list label styles +\def\labelitemi{$\scriptstyle\bullet$} +\def\labelitemii{\textbf{--}} +\def\labelitemiii{$\ast$} +\def\labelitemiv{$\cdot$} + + + +% **** V1.3 ENHANCEMENTS **** +% Itemize, Enumerate and Description (IED) List Controls +% *************************** +% +% +% The IEEE seems to use at least two different values by +% which ITEMIZED list labels are indented to the right +% For The Journal of Lightwave Technology (JLT) and The Journal +% on Selected Areas in Communications (JSAC), they tend to use +% an indention equal to \parindent. For Transactions on Communications +% they tend to indent ITEMIZED lists a little more--- 1.3\parindent. +% We'll provide both values here for you so that you can choose +% which one you like in your document using a command such as: +% setlength{\IEEEilabelindent}{\IEEEilabelindentB} +\newdimen\IEEEilabelindentA +\IEEEilabelindentA \parindent + +\newdimen\IEEEilabelindentB +\IEEEilabelindentB 1.3\parindent +% However, we'll default to using \parindent +% which makes more sense to me +\newdimen\IEEEilabelindent +\IEEEilabelindent \IEEEilabelindentA + + +% This controls the default amount the enumerated list labels +% are indented to the right. +% Normally, this is the same as the paragraph indention +\newdimen\IEEEelabelindent +\IEEEelabelindent \parindent + +% This controls the default amount the description list labels +% are indented to the right. +% Normally, this is the same as the paragraph indention +\newdimen\IEEEdlabelindent +\IEEEdlabelindent \parindent + +% This is the value actually used within the IED lists. +% The IED environments automatically set its value to +% one of the three values above, so global changes do +% not have any effect +\newdimen\IEEElabelindent +\IEEElabelindent \parindent + +% The actual amount labels will be indented is +% \IEEElabelindent multiplied by the factor below +% corresponding to the level of nesting depth +% This provides a means by which the user can +% alter the effective \IEEElabelindent for deeper +% levels +% There may not be such a thing as correct "standard IEEE" +% values. What the IEEE actually does may depend on the specific +% circumstances. +% The first list level almost always has full indention. +% The second levels I've seen have only 75% of the normal indentation +% Three level or greater nestings are very rare. I am guessing +% that they don't use any indentation. +\def\IEEElabelindentfactori{1.0} % almost always one +\def\IEEElabelindentfactorii{0.75} % 0.0 or 1.0 may be used in some cases +\def\IEEElabelindentfactoriii{0.0} % 0.75? 0.5? 0.0? +\def\IEEElabelindentfactoriv{0.0} +\def\IEEElabelindentfactorv{0.0} +\def\IEEElabelindentfactorvi{0.0} + +% value actually used within IED lists, it is auto +% set to one of the 6 values above +% global changes here have no effect +\def\IEEElabelindentfactor{1.0} + +% This controls the default spacing between the end of the IED +% list labels and the list text, when normal text is used for +% the labels. +% compsoc uses a larger value here, but we'll set that later +% in the class so that this code block area can be extracted +% as-is for IEEEtrantools.sty +\newdimen\IEEEiednormlabelsep +\IEEEiednormlabelsep 0.6em + +% This controls the default spacing between the end of the IED +% list labels and the list text, when math symbols are used for +% the labels (nomenclature lists). The IEEE usually increases the +% spacing in these cases +\newdimen\IEEEiedmathlabelsep +\IEEEiedmathlabelsep 1.2em + +% This controls the extra vertical separation put above and +% below each IED list. the IEEE usually puts a little extra spacing +% around each list. However, this spacing is barely noticeable. +% compsoc uses a larger value here, but we'll set that later +% in the class so that this code block area can be extracted +% as-is for IEEEtrantools.sty +\newskip\IEEEiedtopsep +\IEEEiedtopsep 2pt plus 1pt minus 1pt + + +% This command is executed within each IED list environment +% at the beginning of the list. You can use this to set the +% parameters for some/all your IED list(s) without disturbing +% global parameters that affect things other than lists. +% i.e., renewcommand{\IEEEiedlistdecl}{\setlength{\labelsep}{5em}} +% will alter the \labelsep for the next list(s) until +% \IEEEiedlistdecl is redefined. +\def\IEEEiedlistdecl{\relax} + +% This command provides an easy way to set \leftmargin based +% on the \labelwidth, \labelsep and the argument \IEEElabelindent +% Usage: \IEEEcalcleftmargin{width-to-indent-the-label} +% output is in the \leftmargin variable, i.e., effectively: +% \leftmargin = argument + \labelwidth + \labelsep +% Note controlled spacing here, shield end of lines with % +\def\IEEEcalcleftmargin#1{\setlength{\leftmargin}{#1}% +\addtolength{\leftmargin}{\labelwidth}% +\addtolength{\leftmargin}{\labelsep}} + +% This command provides an easy way to set \labelwidth to the +% width of the given text. It is the same as +% \settowidth{\labelwidth}{label-text} +% and useful as a shorter alternative. +% Typically used to set \labelwidth to be the width +% of the longest label in the list +\def\IEEEsetlabelwidth#1{\settowidth{\labelwidth}{#1}} + +% When this command is executed, IED lists will use the +% IEEEiedmathlabelsep label separation rather than the normal +% spacing. To have an effect, this command must be executed via +% the \IEEEiedlistdecl or within the option of the IED list +% environments. +\def\IEEEusemathlabelsep{\setlength{\labelsep}{\IEEEiedmathlabelsep}} + +% A flag which controls whether the IED lists automatically +% calculate \leftmargin from \IEEElabelindent, \labelwidth and \labelsep +% Useful if you want to specify your own \leftmargin +% This flag must be set (\IEEEnocalcleftmargintrue or \IEEEnocalcleftmarginfalse) +% via the \IEEEiedlistdecl or within the option of the IED list +% environments to have an effect. +\newif\ifIEEEnocalcleftmargin +\IEEEnocalcleftmarginfalse + +% A flag which controls whether \IEEElabelindent is multiplied by +% the \IEEElabelindentfactor for each list level. +% This flag must be set via the \IEEEiedlistdecl or within the option +% of the IED list environments to have an effect. +\newif\ifIEEEnolabelindentfactor +\IEEEnolabelindentfactorfalse + + +% internal variable to indicate type of IED label +% justification +% 0 - left; 1 - center; 2 - right +\def\@IEEEiedjustify{0} + + +% commands to allow the user to control IED +% label justifications. Use these commands within +% the IED environment option or in the \IEEEiedlistdecl +% Note that changing the normal list justifications +% is nonstandard and the IEEE may not like it if you do so! +% I include these commands as they may be helpful to +% those who are using these enhanced list controls for +% other non-IEEE related LaTeX work. +% itemize and enumerate automatically default to right +% justification, description defaults to left. +\def\IEEEiedlabeljustifyl{\def\@IEEEiedjustify{0}}%left +\def\IEEEiedlabeljustifyc{\def\@IEEEiedjustify{1}}%center +\def\IEEEiedlabeljustifyr{\def\@IEEEiedjustify{2}}%right + + + + +% commands to save to and restore from the list parameter copies +% this allows us to set all the list parameters within +% the list_decl and prevent \list (and its \@list) +% from overriding any of our parameters +% V1.6 use \edefs instead of dimen's to conserve dimen registers +% Note controlled spacing here, shield end of lines with % +\def\@IEEEsavelistparams{\edef\@IEEEiedtopsep{\the\topsep}% +\edef\@IEEEiedlabelwidth{\the\labelwidth}% +\edef\@IEEEiedlabelsep{\the\labelsep}% +\edef\@IEEEiedleftmargin{\the\leftmargin}% +\edef\@IEEEiedpartopsep{\the\partopsep}% +\edef\@IEEEiedparsep{\the\parsep}% +\edef\@IEEEieditemsep{\the\itemsep}% +\edef\@IEEEiedrightmargin{\the\rightmargin}% +\edef\@IEEEiedlistparindent{\the\listparindent}% +\edef\@IEEEieditemindent{\the\itemindent}} + +% Note controlled spacing here +\def\@IEEErestorelistparams{\topsep\@IEEEiedtopsep\relax% +\labelwidth\@IEEEiedlabelwidth\relax% +\labelsep\@IEEEiedlabelsep\relax% +\leftmargin\@IEEEiedleftmargin\relax% +\partopsep\@IEEEiedpartopsep\relax% +\parsep\@IEEEiedparsep\relax% +\itemsep\@IEEEieditemsep\relax% +\rightmargin\@IEEEiedrightmargin\relax% +\listparindent\@IEEEiedlistparindent\relax% +\itemindent\@IEEEieditemindent\relax} + + +% v1.6b provide original LaTeX IED list environments +% note that latex.ltx defines \itemize and \enumerate, but not \description +% which must be created by the base classes +% save original LaTeX itemize and enumerate +\let\LaTeXitemize\itemize +\let\endLaTeXitemize\enditemize +\let\LaTeXenumerate\enumerate +\let\endLaTeXenumerate\endenumerate + +% provide original LaTeX description environment from article.cls +\newenvironment{LaTeXdescription} + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} + {\endlist} +\newcommand*\descriptionlabel[1]{\hspace\labelsep + \normalfont\bfseries #1} + + +% override LaTeX's default IED lists +\def\itemize{\@IEEEitemize} +\def\enditemize{\@endIEEEitemize} +\def\enumerate{\@IEEEenumerate} +\def\endenumerate{\@endIEEEenumerate} +\def\description{\@IEEEdescription} +\def\enddescription{\@endIEEEdescription} + +% provide the user with aliases - may help those using packages that +% override itemize, enumerate, or description +\def\IEEEitemize{\@IEEEitemize} +\def\endIEEEitemize{\@endIEEEitemize} +\def\IEEEenumerate{\@IEEEenumerate} +\def\endIEEEenumerate{\@endIEEEenumerate} +\def\IEEEdescription{\@IEEEdescription} +\def\endIEEEdescription{\@endIEEEdescription} + + +% V1.6 we want to keep the IEEEtran IED list definitions as our own internal +% commands so they are protected against redefinition +\def\@IEEEitemize{\@ifnextchar[{\@@IEEEitemize}{\@@IEEEitemize[\relax]}} +\def\@IEEEenumerate{\@ifnextchar[{\@@IEEEenumerate}{\@@IEEEenumerate[\relax]}} +\def\@IEEEdescription{\@ifnextchar[{\@@IEEEdescription}{\@@IEEEdescription[\relax]}} +\def\@endIEEEitemize{\endlist} +\def\@endIEEEenumerate{\endlist} +\def\@endIEEEdescription{\endlist} + + +% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS +% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS +% IEEEtran itemized list MDS 1/2001 +% Note controlled spacing here, shield end of lines with % +\def\@@IEEEitemize[#1]{% + \ifnum\@itemdepth>3\relax\@toodeep\else% + \ifnum\@listdepth>5\relax\@toodeep\else% + \advance\@itemdepth\@ne% + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + % get the IEEElabelindentfactor for this level + \advance\@listdepth\@ne% we need to know what the level WILL be + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% + \advance\@listdepth-\@ne% undo our increment + \def\@IEEEiedjustify{2}% right justified labels are default + % set other defaults + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% + \topsep\IEEEiedtopsep% + \IEEElabelindent\IEEEilabelindent% + \labelsep\IEEEiednormlabelsep% + \partopsep 0ex% + \parsep 0ex% + \itemsep 0ex% + \rightmargin 0em% + \listparindent 0em% + \itemindent 0em% + % calculate the label width + % the user can override this later if + % they specified a \labelwidth + \settowidth{\labelwidth}{\csname labelitem\romannumeral\the\@itemdepth\endcsname}% + \@IEEEsavelistparams% save our list parameters + \list{\csname\@itemitem\endcsname}{% + \@IEEErestorelistparams% override any list{} changes + % to our globals + \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel + \IEEEiedlistdecl% let user alter parameters + #1\relax% + % If the user has requested not to use the + % IEEElabelindent factor, don't revise \IEEElabelindent + \ifIEEEnolabelindentfactor\relax% + \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent% + \fi% + % Unless the user has requested otherwise, + % calculate our left margin based + % on \IEEElabelindent, \labelwidth and + % \labelsep + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}% + \fi}\fi\fi}% + + +% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS +% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS +% IEEEtran enumerate list MDS 1/2001 +% Note controlled spacing here, shield end of lines with % +\def\@@IEEEenumerate[#1]{% + \ifnum\@enumdepth>3\relax\@toodeep\else% + \ifnum\@listdepth>5\relax\@toodeep\else% + \advance\@enumdepth\@ne% + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + % get the IEEElabelindentfactor for this level + \advance\@listdepth\@ne% we need to know what the level WILL be + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% + \advance\@listdepth-\@ne% undo our increment + \def\@IEEEiedjustify{2}% right justified labels are default + % set other defaults + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% + \topsep\IEEEiedtopsep% + \IEEElabelindent\IEEEelabelindent% + \labelsep\IEEEiednormlabelsep% + \partopsep 0ex% + \parsep 0ex% + \itemsep 0ex% + \rightmargin 0em% + \listparindent 0em% + \itemindent 0em% + % calculate the label width + % We'll set it to the width suitable for all labels using + % normalfont 1) to 9) + % The user can override this later + \settowidth{\labelwidth}{9)}% + \@IEEEsavelistparams% save our list parameters + \list{\csname label\@enumctr\endcsname}{\usecounter{\@enumctr}% + \@IEEErestorelistparams% override any list{} changes + % to our globals + \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel + \IEEEiedlistdecl% let user alter parameters + #1\relax% + % If the user has requested not to use the + % IEEElabelindent factor, don't revise \IEEElabelindent + \ifIEEEnolabelindentfactor\relax% + \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent% + \fi% + % Unless the user has requested otherwise, + % calculate our left margin based + % on \IEEElabelindent, \labelwidth and + % \labelsep + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}% + \fi}\fi\fi}% + + +% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS +% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS +% IEEEtran description list MDS 1/2001 +% Note controlled spacing here, shield end of lines with % +\def\@@IEEEdescription[#1]{% + \ifnum\@listdepth>5\relax\@toodeep\else% + % get the IEEElabelindentfactor for this level + \advance\@listdepth\@ne% we need to know what the level WILL be + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% + \advance\@listdepth-\@ne% undo our increment + \def\@IEEEiedjustify{0}% left justified labels are default + % set other defaults + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% + \topsep\IEEEiedtopsep% + \IEEElabelindent\IEEEdlabelindent% + % assume normal labelsep + \labelsep\IEEEiednormlabelsep% + \partopsep 0ex% + \parsep 0ex% + \itemsep 0ex% + \rightmargin 0em% + \listparindent 0em% + \itemindent 0em% + % Bogus label width in case the user forgets + % to set it. + % TIP: If you want to see what a variable's width is you + % can use the TeX command \showthe\width-variable to + % display it on the screen during compilation + % (This might be helpful to know when you need to find out + % which label is the widest) + \settowidth{\labelwidth}{Hello}% + \@IEEEsavelistparams% save our list parameters + \list{}{\@IEEErestorelistparams% override any list{} changes + % to our globals + \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel + \IEEEiedlistdecl% let user alter parameters + #1\relax% + % If the user has requested not to use the + % labelindent factor, don't revise \IEEElabelindent + \ifIEEEnolabelindentfactor\relax% + \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent% + \fi% + % Unless the user has requested otherwise, + % calculate our left margin based + % on \IEEElabelindent, \labelwidth and + % \labelsep + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}\relax% + \fi}\fi} + +% v1.6b we use one makelabel that does justification as needed. +\def\@IEEEiedmakelabel#1{\relax\if\@IEEEiedjustify 0\relax +\makebox[\labelwidth][l]{\normalfont #1}\else +\if\@IEEEiedjustify 1\relax +\makebox[\labelwidth][c]{\normalfont #1}\else +\makebox[\labelwidth][r]{\normalfont #1}\fi\fi} + + +% compsoc uses a larger value for the normal labelsep +% and also extra spacing above and below each list +\ifCLASSOPTIONcompsoc + \IEEEiednormlabelsep 1.2em + \IEEEiedtopsep 6pt plus 3pt minus 3pt +\fi + + +% VERSE and QUOTE +% V1.7 define environments with newenvironment +\newenvironment{verse}{\let\\=\@centercr + \list{}{\itemsep\z@ \itemindent -1.5em \listparindent \itemindent + \rightmargin\leftmargin\advance\leftmargin 1.5em}\item\relax} + {\endlist} +\newenvironment{quotation}{\list{}{\listparindent 1.5em \itemindent\listparindent + \rightmargin\leftmargin \parsep 0pt plus 1pt}\item\relax} + {\endlist} +\newenvironment{quote}{\list{}{\rightmargin\leftmargin}\item\relax} + {\endlist} + + +% \titlepage +% provided only for backward compatibility. \maketitle is the correct +% way to create the title page. +\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \else \newpage \fi \thispagestyle{empty}\c@page\z@} +\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi} + +% standard values from article.cls +\arraycolsep 5pt +\arrayrulewidth .4pt +\doublerulesep 2pt + +\tabcolsep 6pt +\tabbingsep 0.5em + + +%% FOOTNOTES +% +%\skip\footins 10pt plus 4pt minus 2pt +% V1.6 respond to changes in font size +% space added above the footnotes (if present) +\skip\footins 0.9\baselineskip plus 0.4\baselineskip minus 0.2\baselineskip + +% V1.6, we need to make \footnotesep responsive to changes +% in \baselineskip or strange spacings will result when in +% draft mode. Here is a little LaTeX secret - \footnotesep +% determines the height of an invisible strut that is placed +% *above* the baseline of footnotes after the first. Since +% LaTeX considers the space for characters to be 0.7\baselineskip +% above the baseline and 0.3\baselineskip below it, we need to +% use 0.7\baselineskip as a \footnotesep to maintain equal spacing +% between all the lines of the footnotes. The IEEE often uses a tad +% more, so use 0.8\baselineskip. This slightly larger value also helps +% the text to clear the footnote marks. Note that \thanks in IEEEtran +% uses its own value of \footnotesep which is set in \maketitle. +{\footnotesize +\global\footnotesep 0.8\baselineskip} + + +\skip\@mpfootins = \skip\footins +\fboxsep = 3pt +\fboxrule = .4pt +% V1.6 use 1em, then use LaTeX2e's \@makefnmark +% Note that the IEEE normally *left* aligns the footnote marks, so we don't need +% box resizing tricks here. +\long\def\@makefntext#1{\parindent 1em\indent\hbox{\@makefnmark}#1}% V1.6 use 1em +% V1.7 compsoc does not use superscipts for footnote marks +\ifCLASSOPTIONcompsoc +\def\@IEEEcompsocmakefnmark{\hbox{\normalfont\@thefnmark.\ }} +\long\def\@makefntext#1{\parindent 1em\indent\hbox{\@IEEEcompsocmakefnmark}#1} +\fi + +% The IEEE does not use footnote rules +\def\footnoterule{} + +% V1.7 for compsoc, the IEEE uses a footnote rule only for \thanks. We devise a "one-shot" +% system to implement this. +\newif\if@IEEEenableoneshotfootnoterule +\@IEEEenableoneshotfootnoterulefalse +\ifCLASSOPTIONcompsoc +\def\footnoterule{\relax\if@IEEEenableoneshotfootnoterule +\kern-5pt +\hbox to \columnwidth{\hfill\vrule width 0.5\columnwidth height 0.4pt\hfill} +\kern4.6pt +\global\@IEEEenableoneshotfootnoterulefalse +\else +\relax +\fi} +\fi + +% V1.6 do not allow LaTeX to break a footnote across multiple pages +\interfootnotelinepenalty=10000 + +% V1.6 discourage breaks within equations +% Note that amsmath normally sets this to 10000, +% but LaTeX2e normally uses 100. +\interdisplaylinepenalty=2500 + +% default allows section depth up to /paragraph +\setcounter{secnumdepth}{4} + +% technotes do not allow /paragraph +\ifCLASSOPTIONtechnote + \setcounter{secnumdepth}{3} +\fi +% neither do compsoc conferences +\@IEEEcompsocconfonly{\setcounter{secnumdepth}{3}} + + +\newcounter{section} +\newcounter{subsection}[section] +\newcounter{subsubsection}[subsection] +\newcounter{paragraph}[subsubsection] + +% used only by IEEEtran's IEEEeqnarray as other packages may +% have their own, different, implementations +\newcounter{IEEEsubequation}[equation] + +% as shown when called by user from \ref, \label and in table of contents +\def\theequation{\arabic{equation}} % 1 +\def\theIEEEsubequation{\theequation\alph{IEEEsubequation}} % 1a (used only by IEEEtran's IEEEeqnarray) +\ifCLASSOPTIONcompsoc +% compsoc is all arabic +\def\thesection{\arabic{section}} +\def\thesubsection{\thesection.\arabic{subsection}} +\def\thesubsubsection{\thesubsection.\arabic{subsubsection}} +\def\theparagraph{\thesubsubsection.\arabic{paragraph}} +\else +\def\thesection{\Roman{section}} % I +% V1.7, \mbox prevents breaks around - +\def\thesubsection{\mbox{\thesection-\Alph{subsection}}} % I-A +% V1.7 use I-A1 format used by the IEEE rather than I-A.1 +\def\thesubsubsection{\thesubsection\arabic{subsubsection}} % I-A1 +\def\theparagraph{\thesubsubsection\alph{paragraph}} % I-A1a +\fi + +% From Heiko Oberdiek. Because of the \mbox in \thesubsection, we need to +% tell hyperref to disable the \mbox command when making PDF bookmarks. +% This done already with hyperref.sty version 6.74o and later, but +% it will not hurt to do it here again for users of older versions. +\@ifundefined{pdfstringdefPreHook}{\let\pdfstringdefPreHook\@empty}{}% +\g@addto@macro\pdfstringdefPreHook{\let\mbox\relax} + + +% Main text forms (how shown in main text headings) +% V1.6, using \thesection in \thesectiondis allows changes +% in the former to automatically appear in the latter +\ifCLASSOPTIONcompsoc + \ifCLASSOPTIONconference% compsoc conference + \def\thesectiondis{\thesection.} + \def\thesubsectiondis{\thesectiondis\arabic{subsection}.} + \def\thesubsubsectiondis{\thesubsectiondis\arabic{subsubsection}.} + \def\theparagraphdis{\thesubsubsectiondis\arabic{paragraph}.} + \else% compsoc not conferencs + \def\thesectiondis{\thesection} + \def\thesubsectiondis{\thesectiondis.\arabic{subsection}} + \def\thesubsubsectiondis{\thesubsectiondis.\arabic{subsubsection}} + \def\theparagraphdis{\thesubsubsectiondis.\arabic{paragraph}} + \fi +\else% not compsoc + \def\thesectiondis{\thesection.} % I. + \def\thesubsectiondis{\Alph{subsection}.} % B. + \def\thesubsubsectiondis{\arabic{subsubsection})} % 3) + \def\theparagraphdis{\alph{paragraph})} % d) +\fi + +% just like LaTeX2e's \@eqnnum +\def\theequationdis{{\normalfont \normalcolor (\theequation)}}% (1) +% IEEEsubequation used only by IEEEtran's IEEEeqnarray +\def\theIEEEsubequationdis{{\normalfont \normalcolor (\theIEEEsubequation)}}% (1a) +% redirect LaTeX2e's equation number display and all that depend on +% it, through IEEEtran's \theequationdis +\def\@eqnnum{\theequationdis} + + + +% V1.7 provide string macros as article.cls does +\def\contentsname{Contents} +\def\listfigurename{List of Figures} +\def\listtablename{List of Tables} +\def\refname{References} +\def\indexname{Index} +\def\figurename{Fig.} +\def\tablename{TABLE} +\@IEEEcompsocconfonly{\def\figurename{Figure}} +\def\partname{Part} +\def\appendixname{Appendix} +\def\abstractname{Abstract} +% IEEE specific names +\def\IEEEkeywordsname{Index Terms} +\def\IEEEproofname{Proof} + + +% LIST OF FIGURES AND TABLES AND TABLE OF CONTENTS +% +\def\@pnumwidth{1.55em} +\def\@tocrmarg{2.55em} +\def\@dotsep{4.5} +\setcounter{tocdepth}{3} + +% adjusted some spacings here so that section numbers will not easily +% collide with the section titles. +% VIII; VIII-A; and VIII-A.1 are usually the worst offenders. +% MDS 1/2001 +\def\tableofcontents{\section*{\contentsname}\@starttoc{toc}} +\def\l@section#1#2{\addpenalty{\@secpenalty}\addvspace{1.0em plus 1pt}% + \@tempdima 2.75em \begingroup \parindent \z@ \rightskip \@pnumwidth% + \parfillskip-\@pnumwidth {\bfseries\leavevmode #1}\hfil\hbox to\@pnumwidth{\hss #2}\par% + \endgroup} +% argument format #1:level, #2:labelindent,#3:labelsep +\def\l@subsection{\@dottedtocline{2}{2.75em}{3.75em}} +\def\l@subsubsection{\@dottedtocline{3}{6.5em}{4.5em}} +% must provide \l@ defs for ALL sublevels EVEN if tocdepth +% is such as they will not appear in the table of contents +% these defs are how TOC knows what level these things are! +\def\l@paragraph{\@dottedtocline{4}{6.5em}{5.5em}} +\def\l@subparagraph{\@dottedtocline{5}{6.5em}{6.5em}} +\def\listoffigures{\section*{\listfigurename}\@starttoc{lof}} +\def\l@figure{\@dottedtocline{1}{0em}{2.75em}} +\def\listoftables{\section*{\listtablename}\@starttoc{lot}} +\let\l@table\l@figure + + +% Definitions for floats +% +% Normal Floats +% V1.8 floatsep et al. revised down by 0.15\baselineskip +% to account for the sideeffects of \topskip compensation +\floatsep 0.85\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip +\textfloatsep 1.55\baselineskip plus 0.2\baselineskip minus 0.4\baselineskip +\@fptop 0pt plus 1fil +\@fpsep 0.75\baselineskip plus 2fil +\@fpbot 0pt plus 1fil +\def\topfraction{0.9} +\def\bottomfraction{0.4} +\def\floatpagefraction{0.8} +% V1.7, let top floats approach 90% of page +\def\textfraction{0.1} + +% Double Column Floats +\dblfloatsep 0.85\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip + +\dbltextfloatsep 1.55\baselineskip plus 0.2\baselineskip minus 0.4\baselineskip +% Note that it would be nice if the rubber here actually worked in LaTeX2e. +% There is a long standing limitation in LaTeX, first discovered (to the best +% of my knowledge) by Alan Jeffrey in 1992. LaTeX ignores the stretchable +% portion of \dbltextfloatsep, and as a result, double column figures can and +% do result in an non-integer number of lines in the main text columns with +% underfull vbox errors as a consequence. A post to comp.text.tex +% by Donald Arseneau confirms that this had not yet been fixed in 1998. +% IEEEtran V1.6 will fix this problem for you in the titles, but it doesn't +% protect you from other double floats. Happy vspace'ing. + +\@dblfptop 0pt plus 1fil +\@dblfpsep 0.75\baselineskip plus 2fil +\@dblfpbot 0pt plus 1fil +\def\dbltopfraction{0.8} +\def\dblfloatpagefraction{0.8} +\setcounter{dbltopnumber}{4} + +\intextsep 0.85\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip +\setcounter{topnumber}{2} +\setcounter{bottomnumber}{2} +\setcounter{totalnumber}{4} + + + +% article class provides these, we should too. +\newlength\abovecaptionskip +\newlength\belowcaptionskip +% but only \abovecaptionskip is used above figure captions and *below* table +% captions +\setlength\abovecaptionskip{0.5\baselineskip} +% compsoc journals are a little more generous +\ifCLASSOPTIONcompsoc\ifCLASSOPTIONjournal + \setlength\abovecaptionskip{0.75\baselineskip} +\fi\fi +\setlength\belowcaptionskip{0pt} +% V1.6 create hooks in case the caption spacing ever needs to be +% overridden by a user +\def\@IEEEfigurecaptionsepspace{\vskip\abovecaptionskip\relax}% +\def\@IEEEtablecaptionsepspace{\vskip\abovecaptionskip\relax}% + + +% 1.6b revise caption system so that \@makecaption uses two arguments +% as with LaTeX2e. Otherwise, there will be problems when using hyperref. +\def\@IEEEtablestring{table} + + +% V1.8 compensate for \topskip so top of top figures align with tops of the first lines of main text +% here we calculate a space equal to the amount \topskip exceeds the main text height +% we hook in at \@floatboxreset +\def\@IEEEfiguretopskipspace{\ifdim\prevdepth=-1000pt\relax +\setlength{\@IEEEtrantmpdimenA}{1\topskip}\relax +\addtolength{\@IEEEtrantmpdimenA}{-0.7\@IEEEnormalsizeunitybaselineskip}\relax +\vspace*{\@IEEEtrantmpdimenA}\fi} +% V1.8 compensate for \topskip at the top of top tables so caption text is on main text baseline +% use a strut set on the caption baseline within \@makecaption +\def\@IEEEtabletopskipstrut{\ifdim\prevdepth=-1000pt\rule{0pt}{\topskip}\fi} +% the \ifdim\prevdepth checks are always expected to be true for IEEE style float caption ordering +% because top of figure content and top of captions in tables is the first thing on the vertical +% list of these floats +% thanks to Donald Arseneau for his 2000/11/11 post "Re: caption hacking" with info on this topic. + + +\ifCLASSOPTIONcompsoc +% V1.7 compsoc \@makecaption +\ifCLASSOPTIONconference% compsoc conference +\long\def\@makecaption#1#2{% +% test if is a for a figure or table +\ifx\@captype\@IEEEtablestring% +% if a table, do table caption +\footnotesize\bgroup\par\centering\@IEEEtabletopskipstrut{\normalfont\footnotesize {#1.}\nobreakspace\scshape #2}\par\addvspace{0.5\baselineskip}\egroup% +\@IEEEtablecaptionsepspace +% if not a table, format it as a figure +\else +\@IEEEfigurecaptionsepspace +\setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}\nobreakspace #2}% +\ifdim \wd\@tempboxa >\hsize% +% if caption is longer than a line, let it wrap around +\setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}\nobreakspace}% +\parbox[t]{\hsize}{\normalfont\footnotesize \noindent\unhbox\@tempboxa#2}% +% if caption is shorter than a line, center +\else% +\hbox to\hsize{\normalfont\footnotesize\hfil\box\@tempboxa\hfil}% +\fi\fi} +% +\else% nonconference compsoc +\long\def\@makecaption#1#2{% +% test if is a for a figure or table +\ifx\@captype\@IEEEtablestring% +% if a table, do table caption +\footnotesize\bgroup\par\centering\@IEEEtabletopskipstrut{\normalfont\sffamily\footnotesize #1}\\{\normalfont\sffamily\footnotesize #2}\par\addvspace{0.5\baselineskip}\egroup% +\@IEEEtablecaptionsepspace +% if not a table, format it as a figure +\else +\@IEEEfigurecaptionsepspace +\setbox\@tempboxa\hbox{\normalfont\sffamily\footnotesize {#1.}\nobreakspace #2}% +\ifdim \wd\@tempboxa >\hsize% +% if caption is longer than a line, let it wrap around +\setbox\@tempboxa\hbox{\normalfont\sffamily\footnotesize {#1.}\nobreakspace}% +\parbox[t]{\hsize}{\normalfont\sffamily\footnotesize \noindent\unhbox\@tempboxa#2}% +% if caption is shorter than a line, left justify +\else% +\hbox to\hsize{\normalfont\sffamily\footnotesize\box\@tempboxa\hfil}% +\fi\fi} +\fi +% +\else% traditional noncompsoc \@makecaption +\long\def\@makecaption#1#2{% +% test if is a for a figure or table +\ifx\@captype\@IEEEtablestring% +% if a table, do table caption +\footnotesize\bgroup\par\centering\@IEEEtabletopskipstrut{\normalfont\footnotesize #1}\\{\normalfont\footnotesize\scshape #2}\par\addvspace{0.5\baselineskip}\egroup% +\@IEEEtablecaptionsepspace +% if not a table, format it as a figure +\else +\@IEEEfigurecaptionsepspace +% 3/2001 use footnotesize, not small; use two nonbreaking spaces, not one +\setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}\nobreakspace\nobreakspace #2}% +\ifdim \wd\@tempboxa >\hsize% +% if caption is longer than a line, let it wrap around +\setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}\nobreakspace\nobreakspace}% +\parbox[t]{\hsize}{\normalfont\footnotesize\noindent\unhbox\@tempboxa#2}% +% if caption is shorter than a line, center if conference, left justify otherwise +\else% +\ifCLASSOPTIONconference \hbox to\hsize{\normalfont\footnotesize\hfil\box\@tempboxa\hfil}% +\else \hbox to\hsize{\normalfont\footnotesize\box\@tempboxa\hfil}% +\fi\fi\fi} +\fi + + + +% V1.7 disable captions class option, do so in a way that retains operation of \label +% within \caption +\ifCLASSOPTIONcaptionsoff +\long\def\@makecaption#1#2{\vspace*{2em}\footnotesize\bgroup\par\addvspace{0.5\baselineskip}\centering{\footnotesize #1}\par\addvspace{0.5\baselineskip}\egroup% +\let\@IEEEtemporiglabeldefsave\label +\let\@IEEEtemplabelargsave\relax +\def\label##1{\gdef\@IEEEtemplabelargsave{##1}}% +\setbox\@tempboxa\hbox{#2}% +\let\label\@IEEEtemporiglabeldefsave +\ifx\@IEEEtemplabelargsave\relax\else\label{\@IEEEtemplabelargsave}\fi} +\fi + + +% V1.7 define end environments with \def not \let so as to work OK with +% preview-latex +\newcounter{figure} +\def\thefigure{\@arabic\c@figure} +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{\figurename\nobreakspace\thefigure} +% V1.8 within figures add \@IEEEfiguretopskipspace compensation to LaTeX2e's \@floatboxreset +\def\figure{\def\@floatboxreset{\reset@font\normalsize\@setminipage\@IEEEfiguretopskipspace}\@float{figure}} +\def\endfigure{\end@float} +% V1.8 also add \@IEEEfiguretopskipspace compensation to \figure* +\@namedef{figure*}{\def\@floatboxreset{\reset@font\normalsize\@setminipage\@IEEEfiguretopskipspace}\@dblfloat{figure}} +\@namedef{endfigure*}{\end@dblfloat} + +\newcounter{table} +\ifCLASSOPTIONcompsoc +\def\thetable{\arabic{table}} +\else +\def\thetable{\@Roman\c@table} +\fi +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\def\fnum@table{\tablename\nobreakspace\thetable} +% V1.6 The IEEE uses 8pt text for tables +% within tables alter LaTeX2e's \@floatboxreset to use \footnotesize +\def\table{\def\@floatboxreset{\reset@font\footnotesize\@setminipage}\@float{table}} +\def\endtable{\end@float} +% v1.6b double column tables need to default to footnotesize as well. +\@namedef{table*}{\def\@floatboxreset{\reset@font\footnotesize\@setminipage}\@dblfloat{table}} +\@namedef{endtable*}{\end@dblfloat} + + + + +%% -- Command Argument Scanning Support Functions -- +%% V1.8a + +% usage: \@IEEEstripouterbraces*{} +% \@IEEEstripouterbraces fully expands its argument (which it then stores +% in \@IEEEstripouterbracesarg) via \edef, then removes any outer enclosing +% braces, and finally stores the result in the macro +% \@IEEEstrippedouterbraces. +% +% For example: +% \@IEEEstripouterbraces{{{{ab}c}}} +% results in: +% +% \@IEEEstripouterbracesarg ==> a macro containing {{{ab}c}} +% \@IEEEstrippedouterbraces ==> a macro containing {ab}c +% +% the *-star form,\@IEEEstripouterbraces*, does not expand the argument +% contents during processing +\def\@IEEEstripouterbraces{\@ifstar{\let\@IEEEstripouterbracesdef=\def\@@IEEEstripouterbraces}{\let\@IEEEstripouterbracesdef=\edef\@@IEEEstripouterbraces}} + +\def\@@IEEEstripouterbraces#1{\@IEEEstripouterbracesdef\@IEEEstripouterbracesarg{#1}\relax +% If the macro is unchanged after being acquired as a single delimited +% argument, we know we have one sequence of tokens without any enclosing +% braces. Loop until this is true. +\loop + \expandafter\@@@IEEEstripouterbraces\@IEEEstripouterbracesarg\@IEEEgeneralsequenceDELIMITER +\ifx\@IEEEstrippedouterbraces\@IEEEstripouterbracesarg +\else + \let\@IEEEstripouterbracesarg\@IEEEstrippedouterbraces +\repeat} + +\def\@@@IEEEstripouterbraces#1\@IEEEgeneralsequenceDELIMITER{\def\@IEEEstrippedouterbraces{#1}} + + + +% usage: \@IEEEextractgroup*{} +% \@IEEEextractgroup fully expands its argument (which it then stores in +% \@IEEEextractgrouparg) via \edef and then assigns the first "brace group" +% of tokens to the macro \@IEEEextractedgroup. +% The remaining groups, if any, are stored in the macro +% \@IEEEextractedgroupremain. If the argument does not contain the requisite +% groups, the respective macros will be defined to be empty. +% There is an asymmetry in that \@IEEEextractedgroup is stripped of its first +% outer grouping while \@IEEEextractedgroupremain retains even the outer +% grouping (if present) that originally identified it as a group. +% +% For example: +% \@IEEEextractgroup{{{ab}}{c{de}}} +% results in: +% +% \@IEEEextractgrouparg ==> a macro containing {{ab}}{c{de}} +% \@IEEEextractedgroup ==> a macro containing {ab} +% \@IEEEextractedgroupremain ==> a macro containing {c{de}} +% +% The *-star form, \@IEEEextractgroup*, does not expand its argument +% contents during processing. +\def\@IEEEextractgroup{\@ifstar{\let\@IEEEextractgroupdef=\def\@@IEEEextractgroup}{\let\@IEEEextractgroupdef=\edef\@@IEEEextractgroup}} + +\def\@@IEEEextractgroup#1{\@IEEEextractgroupdef\@IEEEextractgrouparg{#1}\relax +% trap the case of an empty extracted group as this would cause problems with +% \@IEEEextractgroupremain's argument acquisition +\ifx\@IEEEextractgrouparg\@empty + \def\@IEEEextractedgroup{}\relax + \def\@IEEEextractedgroupremain{}\relax +\else + % We have to use some dirty tricks here. We want to insert {} around + % whatever remains after the first group so that TeX's argument scanner + % will preserve any originally enclosing braces as well as provide an + % empty argument to acquire even if there isn't a second group. + % In this first of two dirty tricks, we put a } at the end of the structure + % we are going to extract from. The \ifnum0=`{\fi keeps TeX happy to allow + % what would otherwise be an unbalanced macro definition for + % \@@IEEEextractgroup to be acceptable to it. + \ifnum0=`{\fi\expandafter\@IEEEextractgroupremain\@IEEEextractgrouparg}\relax +\fi} + +% In the second part of the dirty tricks, we insert a leading { right after +% the first group is acquired, but before the remainder is. Again, the +% \ifnum0=`}\fi keeps TeX happy during definition time, but will disappear +% during run time. +\def\@IEEEextractgroupremain#1{\def\@IEEEextractedgroup{#1}\expandafter\@@IEEEextractgroupremain\expandafter{\ifnum0=`}\fi} + +\def\@@IEEEextractgroupremain#1{\def\@IEEEextractedgroupremain{#1}} + + + +% \@IEEEextracttoken relocated at top because margin setting commands rely on it + + + +% usage: \@IEEEextracttokengroups*{} +% \@IEEEextracttokengroups fully expands its argument (which it then stores +% in \@IEEEextracttokengroupsarg) and then assigns the first "brace group" of +% tokens (with the outermost braces removed) to the macro +% \@IEEEextractedfirstgroup. +% The meaning of the first nonbrace (but including the empty group) token +% within this first group is assigned via \let to \@IEEEextractedfirsttoken +% as well as stored in the macro \@IEEEextractedfirsttokenmacro. If a first +% nonbrace token does not exist (or is an empty group), these will be \relax +% and empty, respectively. Tokens that would otherwise be discarded during +% the acquisition of the first token in the first group are stored in +% \@IEEEextractedfirsttokensdiscarded, however their original relative brace +% nesting depths are not guaranteed to be preserved. +% The first group within this first group is stored in the macro +% \@IEEEextractedfirstfirstgroup. +% Likewise for the next group after the first: \@IEEEextractednextgroup, +% \@IEEEextractednextfirstgroup, \@IEEEextractednextgroupfirsttoken, +% \@IEEEextractednextgroupfirsttokenmacro, and +% \@IEEEextractednextfirsttokensdiscarded. +% All tokens/groups after the first group, including any enclosing braces, +% are stored in the macro \@IEEEextractedafterfirstgroupremain which will +% be empty if none exist. +% +% For example: +% \@IEEEextracttokengroups{{{ab}{cd}}{{ef}g}} +% will result in: +% +% \@IEEEextracttokengroupsarg ==> a macro containing {{ab}{cd}}{{ef}g} +% \@IEEEextractedfirstgroup ==> a macro containing {ab}{cd} +% \@IEEEextractedafterfirstgroupremain ==> a macro containing {{ef}g} +% \@IEEEextractedfirsttoken ==> the letter a +% \@IEEEextractedfirsttokenmacro ==> a macro containing a +% \@IEEEextractedfirsttokensdiscarded ==> a macro containing bcd +% \@IEEEextractedfirstfirstgroup ==> a macro containing ab +% \@IEEEextractednextgroup ==> a macro containing {ef}g +% \@IEEEextractednextfirsttoken ==> the letter e +% \@IEEEextractednextfirsttokenmacro ==> a macro containing e +% \@IEEEextractednextfirsttokensdiscarded ==> a macro containing fg +% \@IEEEextractednextfirstgroup ==> a macro containing ef +% +% If given an empty argument, \@IEEEextractedfirsttoken and +% \@IEEEextractednextfirsttoken will be set to \relax +% and all the macros will be empty. +% the *-star form, \@IEEEextracttokengroups*, does not expand its argument +% contents during processing. +% +% Depends on: \@IEEEextractgroup, \@IEEEextracttoken +\def\@IEEEextracttokengroups{\@ifstar{\let\@IEEEextracttokengroupsdef=\def\@@IEEEextracttokengroups}{\let\@IEEEextracttokengroupsdef=\edef\@@IEEEextracttokengroups}} +\def\@@IEEEextracttokengroups#1{\@IEEEextracttokengroupsdef\@IEEEextracttokengroupsarg{#1}\relax +% begin extraction, these functions are safe with empty arguments +% first group +\expandafter\@IEEEextractgroup\expandafter*\expandafter{\@IEEEextracttokengroupsarg}\relax +\let\@IEEEextractedfirstgroup\@IEEEextractedgroup +\let\@IEEEextractedafterfirstgroupremain\@IEEEextractedgroupremain +\expandafter\@IEEEextracttoken\expandafter*\expandafter{\@IEEEextractedfirstgroup}\relax +\let\@IEEEextractedfirsttoken\@IEEEextractedtoken +\let\@IEEEextractedfirsttokenmacro\@IEEEextractedtokenmacro +\let\@IEEEextractedfirsttokensdiscarded\@IEEEextractedtokensdiscarded +% first first group +\expandafter\@IEEEextractgroup\expandafter*\expandafter{\@IEEEextractedfirstgroup}\relax +\let\@IEEEextractedfirstfirstgroup\@IEEEextractedgroup +% next group +\expandafter\@IEEEextractgroup\expandafter*\expandafter{\@IEEEextractedafterfirstgroupremain}\relax +\let\@IEEEextractednextgroup\@IEEEextractedgroup +\expandafter\@IEEEextracttoken\expandafter*\expandafter{\@IEEEextractednextgroup}\relax +\let\@IEEEextractednextfirsttoken\@IEEEextractedtoken +\let\@IEEEextractednextfirsttokenmacro\@IEEEextractedtokenmacro +\let\@IEEEextractednextfirsttokensdiscarded\@IEEEextractedtokensdiscarded +% next first group +\expandafter\@IEEEextractgroup\expandafter*\expandafter{\@IEEEextractednextgroup}\relax +\let\@IEEEextractednextfirstgroup\@IEEEextractedgroup} + + +%% -- End of Command Argument Scanning Support Functions -- + + + + +%% +%% START OF IEEEeqnarray DEFINITIONS +%% +%% Inspired by the concepts, examples, and previous works of LaTeX +%% coders and developers such as Donald Arseneau, Fred Bartlett, +%% David Carlisle, Tony Liu, Frank Mittelbach, Piet van Oostrum, +%% Roland Winkler and Mark Wooding. +%% I don't make the claim that my work here is even near their calibre. ;) + + +\newif\if@IEEEeqnarrayboxnojot% flag to indicate if the environment was called as the star form +\@IEEEeqnarrayboxnojotfalse + +\newif\if@advanceIEEEeqncolcnt% tracks if the environment should advance the col counter +% allows a way to make an \IEEEeqnarraybox that can be used within an \IEEEeqnarray +% used by IEEEeqnarraymulticol so that it can work properly in both +\@advanceIEEEeqncolcnttrue + +\newcount\@IEEEeqnnumcols % tracks how many IEEEeqnarray cols are defined +\newcount\@IEEEeqncolcnt % tracks how many IEEEeqnarray cols the user actually used + + +% The default math style used by the columns +\def\IEEEeqnarraymathstyle{\displaystyle} +% The default text style used by the columns +% default to using the current font +\def\IEEEeqnarraytextstyle{\relax} + +% like the iedlistdecl but for \IEEEeqnarray +\def\IEEEeqnarraydecl{\relax} +\def\IEEEeqnarrayboxdecl{\relax} + + + +% V1.8 flags to indicate that equation numbering is to persist +\newif\if@IEEEeqnumpersist% +\@IEEEeqnumpersistfalse +\newif\if@IEEEsubeqnumpersist% +\@IEEEsubeqnumpersistfalse +% +% V1.8 flags to indicate if (sub)equation number of last line was preadvanced +\newif\if@IEEEeqnumpreadv% +\@IEEEeqnumpreadvfalse +\newif\if@IEEEsubeqnumpreadv% +\@IEEEsubeqnumpreadvfalse + +\newcount\@IEEEsubeqnnumrollback% saves previous value of IEEEsubequation number in case we need to restore it + +% \yesnumber is the opposite of \nonumber +% a novel concept with the same def as the equationarray package +% However, we give IEEE versions too since some LaTeX packages such as +% the MDWtools mathenv.sty redefine \nonumber to something else. +% This command is intended for use in non-IEEEeqnarray math environments +\providecommand{\yesnumber}{\global\@eqnswtrue} + + +% IEEEyes/nonumber +% V1.8 add persistant * forms +% These commands can alter the type of equation an IEEEeqnarray line is. +\def\IEEEyesnumber{\@ifstar{\global\@IEEEeqnumpersisttrue\global\@IEEEsubeqnumpersistfalse\@IEEEyesnumber}{\@IEEEyesnumber}} + +\def\@IEEEyesnumber{\global\@eqnswtrue +\if@IEEEeqnarrayISinner% alter counters and label only inside an IEEEeqnarray +\ifnum\c@IEEEsubequation>0\relax + \stepcounter{equation}\setcounter{IEEEsubequation}{0}\gdef\@currentlabel{\p@equation\theequation}\relax + \gdef\@currentHref{\@IEEEtheHrefequation}% setup hyperref label +\fi +% even if we reached this eqn num via a preadv, it is legit now +\global\@IEEEeqnumpreadvfalse\global\@IEEEsubeqnumpreadvfalse +\fi} + +\def\IEEEnonumber{\@ifstar{\global\@IEEEeqnumpersistfalse\global\@IEEEsubeqnumpersistfalse\global\@eqnswfalse}{\global\@eqnswfalse}} + + +\def\IEEEyessubnumber{\@ifstar{\global\@IEEEsubeqnumpersisttrue\@IEEEyessubnumber}{\@IEEEyessubnumber}} +% +\def\@IEEEyessubnumber{\if@IEEEeqnarrayISinner% alter counters and label only inside an IEEEeqnarray + \ifnum\c@IEEEsubequation>0\relax% if it already is a subequation, we are good to go as-is + \else% if we are a regular equation we have to watch out for two cases + \if@IEEEeqnumpreadv% if this equation is the result of a preadvance, backout and bump the sub eqnnum + \global\advance\c@equation\m@ne\global\c@IEEEsubequation=\@IEEEsubeqnnumrollback\addtocounter{IEEEsubequation}{1}\relax + \else% non-preadvanced equations just need initialization of their sub eqnnum + \setcounter{IEEEsubequation}{1}\relax + \fi + \fi% fi already is subequation + \gdef\@currentlabel{\p@IEEEsubequation\theIEEEsubequation}\relax + \gdef\@currentHref{\@IEEEtheHrefsubequation}% setup hyperref label + \global\@IEEEeqnumpreadvfalse\global\@IEEEsubeqnumpreadvfalse% no longer a preadv anymore + \global\@eqnswtrue +\fi} + + +\def\IEEEnosubnumber{\@ifstar{\global\@IEEEsubeqnumpersistfalse\@IEEEnosubnumber}{\@IEEEnosubnumber}} +% +\def\@IEEEnosubnumber{\if@IEEEeqnarrayISinner% alter counters and label only inside an IEEEeqnarray + \if@eqnsw % we do nothing unless we know we will display because we play with the counters here + % if it currently is a subequation, bump up to the next equation number and turn off the subequation + \ifnum\c@IEEEsubequation>0\relax\addtocounter{equation}{1}\setcounter{IEEEsubequation}{0}\relax + \fi + \global\@IEEEeqnumpreadvfalse\global\@IEEEsubeqnumpreadvfalse% no longer a preadv anymore + \gdef\@currentlabel{\p@equation\theequation}\relax + \gdef\@currentHref{\@IEEEtheHrefequation}% setup hyperref label + \fi +\fi} + + + +% allows users to "push away" equations that get too close to the equation numbers +\def\IEEEeqnarraynumspace{\hphantom{\ifnum\c@IEEEsubequation>0\relax\theIEEEsubequationdis\else\theequationdis\fi}} + +% provides a way to span multiple columns within IEEEeqnarray environments +% will consider \if@advanceIEEEeqncolcnt before globally advancing the +% column counter - so as to work within \IEEEeqnarraybox +% usage: \IEEEeqnarraymulticol{number cols. to span}{col type}{cell text} +\long\def\IEEEeqnarraymulticol#1#2#3{\multispan{#1}\relax +% check if column is defined for the precolumn definition +% We have to be careful here because TeX scans for & even within an \iffalse +% where it does not expand macros. So, if we used only one \ifx and a #3 +% appeared in the false branch and the user inserted another alignment +% structure that uses & in the \IEEEeqnarraymulticol{}, TeX will not see that +% there is an inner alignment in the false branch yet still will see any & +% there and will think that they apply to the outer alignment resulting in an +% incomplete \ifx error. +% So, here we use separate checks for the pre and post parts in order to keep +% the #3 outside of all conditionals. +\relax\expandafter\ifx\csname @IEEEeqnarraycolDEF#2\endcsname\@IEEEeqnarraycolisdefined\relax +\csname @IEEEeqnarraycolPRE#2\endcsname +\else% if not, error and use default type +\@IEEEclspkgerror{Invalid column type "#2" in \string\IEEEeqnarraymulticol.\MessageBreak +Using a default centering column instead}% +{You must define IEEEeqnarray column types before use.}% +\csname @IEEEeqnarraycolPRE@IEEEdefault\endcsname +\fi +% The ten \relax are to help prevent misleading error messages in case a user +% accidently inserted a macro that tries to acquire additional arguments. +#3\relax\relax\relax\relax\relax\relax\relax\relax\relax\relax +% check if column is defined for the postcolumn definition +\expandafter\ifx\csname @IEEEeqnarraycolDEF#2\endcsname\@IEEEeqnarraycolisdefined\relax +\csname @IEEEeqnarraycolPOST#2\endcsname +\else% if not, use the default type +\csname @IEEEeqnarraycolPOST@IEEEdefault\endcsname +\fi +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by #1\relax\fi} + +% like \omit, but maintains track of the column counter for \IEEEeqnarray +\def\IEEEeqnarrayomit{\omit\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by 1\relax\fi} + + +% provides a way to define a letter referenced column type +% usage: \IEEEeqnarraydefcol{col. type letter/name}{pre insertion text}{post insertion text} +\def\IEEEeqnarraydefcol#1#2#3{\expandafter\def\csname @IEEEeqnarraycolPRE#1\endcsname{#2}% +\expandafter\def\csname @IEEEeqnarraycolPOST#1\endcsname{#3}% +\expandafter\def\csname @IEEEeqnarraycolDEF#1\endcsname{1}} + + +% provides a way to define a numerically referenced inter-column glue types +% usage: \IEEEeqnarraydefcolsep{col. glue number}{glue definition} +\def\IEEEeqnarraydefcolsep#1#2{\expandafter\def\csname @IEEEeqnarraycolSEP\romannumeral #1\endcsname{#2}% +\expandafter\def\csname @IEEEeqnarraycolSEPDEF\romannumeral #1\endcsname{1}} + + +\def\@IEEEeqnarraycolisdefined{1}% just a macro for 1, used for checking undefined column types + + +% expands and appends the given argument to the \@IEEEtrantmptoksA token list +% used to build up the \halign preamble +\def\@IEEEappendtoksA#1{\edef\@@IEEEappendtoksA{\@IEEEtrantmptoksA={\the\@IEEEtrantmptoksA #1}}% +\@@IEEEappendtoksA} + +% also appends to \@IEEEtrantmptoksA, but does not expand the argument +% uses \toks8 as a scratchpad register +\def\@IEEEappendNOEXPANDtoksA#1{\toks8={#1}% +\edef\@@IEEEappendNOEXPANDtoksA{\@IEEEtrantmptoksA={\the\@IEEEtrantmptoksA\the\toks8}}% +\@@IEEEappendNOEXPANDtoksA} + +% define some common column types for the user +% math +\IEEEeqnarraydefcol{l}{$\IEEEeqnarraymathstyle}{$\hfil} +\IEEEeqnarraydefcol{c}{\hfil$\IEEEeqnarraymathstyle}{$\hfil} +\IEEEeqnarraydefcol{r}{\hfil$\IEEEeqnarraymathstyle}{$} +\IEEEeqnarraydefcol{L}{$\IEEEeqnarraymathstyle{}}{{}$\hfil} +\IEEEeqnarraydefcol{C}{\hfil$\IEEEeqnarraymathstyle{}}{{}$\hfil} +\IEEEeqnarraydefcol{R}{\hfil$\IEEEeqnarraymathstyle{}}{{}$} +% text +\IEEEeqnarraydefcol{s}{\IEEEeqnarraytextstyle}{\hfil} +\IEEEeqnarraydefcol{t}{\hfil\IEEEeqnarraytextstyle}{\hfil} +\IEEEeqnarraydefcol{u}{\hfil\IEEEeqnarraytextstyle}{} + +% vertical rules +\IEEEeqnarraydefcol{v}{}{\vrule width\arrayrulewidth} +\IEEEeqnarraydefcol{vv}{\vrule width\arrayrulewidth\hfil}{\hfil\vrule width\arrayrulewidth} +\IEEEeqnarraydefcol{V}{}{\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth} +\IEEEeqnarraydefcol{VV}{\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth\hfil}% +{\hfil\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth} + +% horizontal rules +\IEEEeqnarraydefcol{h}{}{\leaders\hrule height\arrayrulewidth\hfil} +\IEEEeqnarraydefcol{H}{}{\leaders\vbox{\hrule width\arrayrulewidth\vskip\doublerulesep\hrule width\arrayrulewidth}\hfil} + +% plain +\IEEEeqnarraydefcol{x}{}{} +\IEEEeqnarraydefcol{X}{$}{$} + +% the default column type to use in the event a column type is not defined +\IEEEeqnarraydefcol{@IEEEdefault}{\hfil$\IEEEeqnarraymathstyle}{$\hfil} + + +% a zero tabskip (used for "-" col types) +\def\@IEEEeqnarraycolSEPzero{0pt plus 0pt minus 0pt} +% a centering tabskip (used for "+" col types) +\def\@IEEEeqnarraycolSEPcenter{1000pt plus 0pt minus 1000pt} + +% top level default tabskip glues for the start, end, and inter-column +% may be reset within environments not always at the top level, e.g., \IEEEeqnarraybox +\edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPcenter}% default start glue +\edef\@IEEEeqnarraycolSEPdefaultend{\@IEEEeqnarraycolSEPcenter}% default end glue +\edef\@IEEEeqnarraycolSEPdefaultmid{\@IEEEeqnarraycolSEPzero}% default inter-column glue + + + +% creates a vertical rule that extends from the bottom to the top a a cell +% Provided in case other packages redefine \vline some other way. +% usage: \IEEEeqnarrayvrule[rule thickness] +% If no argument is provided, \arrayrulewidth will be used for the rule thickness. +\newcommand\IEEEeqnarrayvrule[1][\arrayrulewidth]{\vrule\@width#1\relax} + +% creates a blank separator row +% usage: \IEEEeqnarrayseprow[separation length][font size commands] +% default is \IEEEeqnarrayseprow[0.25\normalbaselineskip][\relax] +% blank arguments inherit the default values +% uses \skip5 as a scratch register - calls \@IEEEeqnarraystrutsize which uses more scratch registers +\def\IEEEeqnarrayseprow{\relax\@ifnextchar[{\@IEEEeqnarrayseprow}{\@IEEEeqnarrayseprow[0.25\normalbaselineskip]}} +\def\@IEEEeqnarrayseprow[#1]{\relax\@ifnextchar[{\@@IEEEeqnarrayseprow[#1]}{\@@IEEEeqnarrayseprow[#1][\relax]}} +\def\@@IEEEeqnarrayseprow[#1][#2]{\def\@IEEEeqnarrayseprowARGONE{#1}% +\ifx\@IEEEeqnarrayseprowARGONE\@empty% +% get the skip value, based on the font commands +% use skip5 because \IEEEeqnarraystrutsize uses \skip0, \skip2, \skip3 +% assign within a bogus box to confine the font changes +{\setbox0=\hbox{#2\relax\global\skip5=0.25\normalbaselineskip}}% +\else% +{\setbox0=\hbox{#2\relax\global\skip5=#1}}% +\fi% +\@IEEEeqnarrayhoptolastcolumn\IEEEeqnarraystrutsize{\skip5}{0pt}[\relax]\relax} + +% creates a blank separator row, but omits all the column templates +% usage: \IEEEeqnarrayseprowcut[separation length][font size commands] +% default is \IEEEeqnarrayseprowcut[0.25\normalbaselineskip][\relax] +% blank arguments inherit the default values +% uses \skip5 as a scratch register - calls \@IEEEeqnarraystrutsize which uses more scratch registers +\def\IEEEeqnarrayseprowcut{\multispan{\@IEEEeqnnumcols}\relax% span all the cols +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\@ifnextchar[{\@IEEEeqnarrayseprowcut}{\@IEEEeqnarrayseprowcut[0.25\normalbaselineskip]}} +\def\@IEEEeqnarrayseprowcut[#1]{\relax\@ifnextchar[{\@@IEEEeqnarrayseprowcut[#1]}{\@@IEEEeqnarrayseprowcut[#1][\relax]}} +\def\@@IEEEeqnarrayseprowcut[#1][#2]{\def\@IEEEeqnarrayseprowARGONE{#1}% +\ifx\@IEEEeqnarrayseprowARGONE\@empty% +% get the skip value, based on the font commands +% use skip5 because \IEEEeqnarraystrutsize uses \skip0, \skip2, \skip3 +% assign within a bogus box to confine the font changes +{\setbox0=\hbox{#2\relax\global\skip5=0.25\normalbaselineskip}}% +\else% +{\setbox0=\hbox{#2\relax\global\skip5=#1}}% +\fi% +\IEEEeqnarraystrutsize{\skip5}{0pt}[\relax]\relax} + + + +% draws a single rule across all the columns optional +% argument determines the rule width, \arrayrulewidth is the default +% updates column counter as needed and turns off struts +% usage: \IEEEeqnarrayrulerow[rule line thickness] +\def\IEEEeqnarrayrulerow{\multispan{\@IEEEeqnnumcols}\relax% span all the cols +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\@ifnextchar[{\@IEEEeqnarrayrulerow}{\@IEEEeqnarrayrulerow[\arrayrulewidth]}} +\def\@IEEEeqnarrayrulerow[#1]{\leaders\hrule height#1\hfil\relax% put in our rule +% turn off any struts +\IEEEeqnarraystrutsize{0pt}{0pt}[\relax]\relax} + + +% draws a double rule by using a single rule row, a separator row, and then +% another single rule row +% first optional argument determines the rule thicknesses, \arrayrulewidth is the default +% second optional argument determines the rule spacing, \doublerulesep is the default +% usage: \IEEEeqnarraydblrulerow[rule line thickness][rule spacing] +\def\IEEEeqnarraydblrulerow{\multispan{\@IEEEeqnnumcols}\relax% span all the cols +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\@ifnextchar[{\@IEEEeqnarraydblrulerow}{\@IEEEeqnarraydblrulerow[\arrayrulewidth]}} +\def\@IEEEeqnarraydblrulerow[#1]{\relax\@ifnextchar[{\@@IEEEeqnarraydblrulerow[#1]}% +{\@@IEEEeqnarraydblrulerow[#1][\doublerulesep]}} +\def\@@IEEEeqnarraydblrulerow[#1][#2]{\def\@IEEEeqnarraydblrulerowARG{#1}% +% we allow the user to say \IEEEeqnarraydblrulerow[][] +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\@IEEEeqnarrayrulerow[\arrayrulewidth]% +\else% +\@IEEEeqnarrayrulerow[#1]\relax% +\fi% +\def\@IEEEeqnarraydblrulerowARG{#2}% +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\\\IEEEeqnarrayseprow[\doublerulesep][\relax]% +\else% +\\\IEEEeqnarrayseprow[#2][\relax]% +\fi% +\\\multispan{\@IEEEeqnnumcols}% +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\def\@IEEEeqnarraydblrulerowARG{#1}% +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\@IEEEeqnarrayrulerow[\arrayrulewidth]% +\else% +\@IEEEeqnarrayrulerow[#1]% +\fi% +} + +% draws a double rule by using a single rule row, a separator (cutting) row, and then +% another single rule row +% first optional argument determines the rule thicknesses, \arrayrulewidth is the default +% second optional argument determines the rule spacing, \doublerulesep is the default +% usage: \IEEEeqnarraydblrulerow[rule line thickness][rule spacing] +\def\IEEEeqnarraydblrulerowcut{\multispan{\@IEEEeqnnumcols}\relax% span all the cols +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\@ifnextchar[{\@IEEEeqnarraydblrulerowcut}{\@IEEEeqnarraydblrulerowcut[\arrayrulewidth]}} +\def\@IEEEeqnarraydblrulerowcut[#1]{\relax\@ifnextchar[{\@@IEEEeqnarraydblrulerowcut[#1]}% +{\@@IEEEeqnarraydblrulerowcut[#1][\doublerulesep]}} +\def\@@IEEEeqnarraydblrulerowcut[#1][#2]{\def\@IEEEeqnarraydblrulerowARG{#1}% +% we allow the user to say \IEEEeqnarraydblrulerow[][] +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\@IEEEeqnarrayrulerow[\arrayrulewidth]% +\else% +\@IEEEeqnarrayrulerow[#1]% +\fi% +\def\@IEEEeqnarraydblrulerowARG{#2}% +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\\\IEEEeqnarrayseprowcut[\doublerulesep][\relax]% +\else% +\\\IEEEeqnarrayseprowcut[#2][\relax]% +\fi% +\\\multispan{\@IEEEeqnnumcols}% +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\def\@IEEEeqnarraydblrulerowARG{#1}% +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\@IEEEeqnarrayrulerow[\arrayrulewidth]% +\else% +\@IEEEeqnarrayrulerow[#1]% +\fi% +} + + + +% inserts a full row's worth of &'s +% relies on \@IEEEeqnnumcols to provide the correct number of columns +% uses \@IEEEtrantmptoksA, \count0 as scratch registers +\def\@IEEEeqnarrayhoptolastcolumn{\@IEEEtrantmptoksA={}\count0=1\relax% +\loop% add cols if the user did not use them all +\ifnum\count0<\@IEEEeqnnumcols\relax% +\@IEEEappendtoksA{&}% +\advance\count0 by 1\relax% update the col count +\repeat% +\the\@IEEEtrantmptoksA%execute the &'s +} + + + +\newif\if@IEEEeqnarrayISinner % flag to indicate if we are within the lines +\@IEEEeqnarrayISinnerfalse % of an IEEEeqnarray - after the IEEEeqnarraydecl + +\edef\@IEEEeqnarrayTHEstrutheight{0pt} % height and depth of IEEEeqnarray struts +\edef\@IEEEeqnarrayTHEstrutdepth{0pt} + +\edef\@IEEEeqnarrayTHEmasterstrutheight{0pt} % default height and depth of +\edef\@IEEEeqnarrayTHEmasterstrutdepth{0pt} % struts within an IEEEeqnarray + +\edef\@IEEEeqnarrayTHEmasterstrutHSAVE{0pt} % saved master strut height +\edef\@IEEEeqnarrayTHEmasterstrutDSAVE{0pt} % and depth + +\newif\if@IEEEeqnarrayusemasterstrut % flag to indicate that the master strut value +\@IEEEeqnarrayusemasterstruttrue % is to be used + + + +% saves the strut height and depth of the master strut +\def\@IEEEeqnarraymasterstrutsave{\relax% +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax% +% remove stretchability +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% save values +\edef\@IEEEeqnarrayTHEmasterstrutHSAVE{\the\dimen0}% +\edef\@IEEEeqnarrayTHEmasterstrutDSAVE{\the\dimen2}} + +% restores the strut height and depth of the master strut +\def\@IEEEeqnarraymasterstrutrestore{\relax% +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutHSAVE\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutDSAVE\relax% +% remove stretchability +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% restore values +\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}} + + +% globally restores the strut height and depth to the +% master values and sets the master strut flag to true +\def\@IEEEeqnarraystrutreset{\relax% +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax% +% remove stretchability +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% restore values +\xdef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\xdef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\global\@IEEEeqnarrayusemasterstruttrue} + + +% if the master strut is not to be used, make the current +% values of \@IEEEeqnarrayTHEstrutheight, \@IEEEeqnarrayTHEstrutdepth +% and the use master strut flag, global +% this allows user strut commands issued in the last column to be carried +% into the isolation/strut column +\def\@IEEEeqnarrayglobalizestrutstatus{\relax% +\if@IEEEeqnarrayusemasterstrut\else% +\xdef\@IEEEeqnarrayTHEstrutheight{\@IEEEeqnarrayTHEstrutheight}% +\xdef\@IEEEeqnarrayTHEstrutdepth{\@IEEEeqnarrayTHEstrutdepth}% +\global\@IEEEeqnarrayusemasterstrutfalse% +\fi} + + + +% usage: \IEEEeqnarraystrutsize{height}{depth}[font size commands] +% If called outside the lines of an IEEEeqnarray, sets the height +% and depth of both the master and local struts. If called inside +% an IEEEeqnarray line, sets the height and depth of the local strut +% only and sets the flag to indicate the use of the local strut +% values. If the height or depth is left blank, 0.7\normalbaselineskip +% and 0.3\normalbaselineskip will be used, respectively. +% The optional argument can be used to evaluate the lengths under +% a different font size and styles. If none is specified, the current +% font is used. +% uses scratch registers \skip0, \skip2, \skip3, \dimen0, \dimen2 +\def\IEEEeqnarraystrutsize#1#2{\relax\@ifnextchar[{\@IEEEeqnarraystrutsize{#1}{#2}}{\@IEEEeqnarraystrutsize{#1}{#2}[\relax]}} +\def\@IEEEeqnarraystrutsize#1#2[#3]{\def\@IEEEeqnarraystrutsizeARG{#1}% +\ifx\@IEEEeqnarraystrutsizeARG\@empty% +{\setbox0=\hbox{#3\relax\global\skip3=0.7\normalbaselineskip}}% +\skip0=\skip3\relax% +\else% arg one present +{\setbox0=\hbox{#3\relax\global\skip3=#1\relax}}% +\skip0=\skip3\relax% +\fi% if null arg +\def\@IEEEeqnarraystrutsizeARG{#2}% +\ifx\@IEEEeqnarraystrutsizeARG\@empty% +{\setbox0=\hbox{#3\relax\global\skip3=0.3\normalbaselineskip}}% +\skip2=\skip3\relax% +\else% arg two present +{\setbox0=\hbox{#3\relax\global\skip3=#2\relax}}% +\skip2=\skip3\relax% +\fi% if null arg +% remove stretchability, just to be safe +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% dimen0 = height, dimen2 = depth +\if@IEEEeqnarrayISinner% inner does not touch master strut size +\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\@IEEEeqnarrayusemasterstrutfalse% do not use master +\else% outer, have to set master strut too +\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}% +\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\@IEEEeqnarrayusemasterstruttrue% use master strut +\fi} + + +% usage: \IEEEeqnarraystrutsizeadd{added height}{added depth}[font size commands] +% If called outside the lines of an IEEEeqnarray, adds the given height +% and depth to both the master and local struts. +% If called inside an IEEEeqnarray line, adds the given height and depth +% to the local strut only and sets the flag to indicate the use +% of the local strut values. +% In both cases, if a height or depth is left blank, 0pt is used instead. +% The optional argument can be used to evaluate the lengths under +% a different font size and styles. If none is specified, the current +% font is used. +% uses scratch registers \skip0, \skip2, \skip3, \dimen0, \dimen2 +\def\IEEEeqnarraystrutsizeadd#1#2{\relax\@ifnextchar[{\@IEEEeqnarraystrutsizeadd{#1}{#2}}{\@IEEEeqnarraystrutsizeadd{#1}{#2}[\relax]}} +\def\@IEEEeqnarraystrutsizeadd#1#2[#3]{\def\@IEEEeqnarraystrutsizearg{#1}% +\ifx\@IEEEeqnarraystrutsizearg\@empty% +\skip0=0pt\relax% +\else% arg one present +{\setbox0=\hbox{#3\relax\global\skip3=#1}}% +\skip0=\skip3\relax% +\fi% if null arg +\def\@IEEEeqnarraystrutsizearg{#2}% +\ifx\@IEEEeqnarraystrutsizearg\@empty% +\skip2=0pt\relax% +\else% arg two present +{\setbox0=\hbox{#3\relax\global\skip3=#2}}% +\skip2=\skip3\relax% +\fi% if null arg +% remove stretchability, just to be safe +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% dimen0 = height, dimen2 = depth +\if@IEEEeqnarrayISinner% inner does not touch master strut size +% get local strut size +\expandafter\skip0=\@IEEEeqnarrayTHEstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEstrutdepth\relax% +% add it to the user supplied values +\advance\dimen0 by \skip0\relax% +\advance\dimen2 by \skip2\relax% +% update the local strut size +\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\@IEEEeqnarrayusemasterstrutfalse% do not use master +\else% outer, have to set master strut too +% get master strut size +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax% +% add it to the user supplied values +\advance\dimen0 by \skip0\relax% +\advance\dimen2 by \skip2\relax% +% update the local and master strut sizes +\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}% +\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\@IEEEeqnarrayusemasterstruttrue% use master strut +\fi} + + +% allow user a way to see the struts +\newif\ifIEEEvisiblestruts +\IEEEvisiblestrutsfalse + +% inserts an invisible strut using the master or local strut values +% uses scratch registers \skip0, \skip2, \dimen0, \dimen2 +\def\@IEEEeqnarrayinsertstrut{\relax% +\if@IEEEeqnarrayusemasterstrut +% get master strut size +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax% +\else% +% get local strut size +\expandafter\skip0=\@IEEEeqnarrayTHEstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEstrutdepth\relax% +\fi% +% remove stretchability, probably not needed +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% dimen0 = height, dimen2 = depth +% allow user to see struts if desired +\ifIEEEvisiblestruts% +\vrule width0.2pt height\dimen0 depth\dimen2\relax% +\else% +\vrule width0pt height\dimen0 depth\dimen2\relax\fi} + + +% creates an invisible strut, useable even outside \IEEEeqnarray +% if \IEEEvisiblestrutstrue, the strut will be visible and 0.2pt wide. +% usage: \IEEEstrut[height][depth][font size commands] +% default is \IEEEstrut[0.7\normalbaselineskip][0.3\normalbaselineskip][\relax] +% blank arguments inherit the default values +% uses \dimen0, \dimen2, \skip0, \skip2 +\def\IEEEstrut{\relax\@ifnextchar[{\@IEEEstrut}{\@IEEEstrut[0.7\normalbaselineskip]}} +\def\@IEEEstrut[#1]{\relax\@ifnextchar[{\@@IEEEstrut[#1]}{\@@IEEEstrut[#1][0.3\normalbaselineskip]}} +\def\@@IEEEstrut[#1][#2]{\relax\@ifnextchar[{\@@@IEEEstrut[#1][#2]}{\@@@IEEEstrut[#1][#2][\relax]}} +\def\@@@IEEEstrut[#1][#2][#3]{\mbox{#3\relax% +\def\@IEEEstrutARG{#1}% +\ifx\@IEEEstrutARG\@empty% +\skip0=0.7\normalbaselineskip\relax% +\else% +\skip0=#1\relax% +\fi% +\def\@IEEEstrutARG{#2}% +\ifx\@IEEEstrutARG\@empty% +\skip2=0.3\normalbaselineskip\relax% +\else% +\skip2=#2\relax% +\fi% +% remove stretchability, probably not needed +\dimen0\skip0\relax% +\dimen2\skip2\relax% +\ifIEEEvisiblestruts% +\vrule width0.2pt height\dimen0 depth\dimen2\relax% +\else% +\vrule width0.0pt height\dimen0 depth\dimen2\relax\fi}} + + +% enables strut mode by setting a default strut size and then zeroing the +% \baselineskip, \lineskip, \lineskiplimit and \jot +\def\IEEEeqnarraystrutmode{\IEEEeqnarraystrutsize{0.7\normalbaselineskip}{0.3\normalbaselineskip}[\relax]% +\baselineskip=0pt\lineskip=0pt\lineskiplimit=0pt\jot=0pt} + + +% equation and subequation forms to use to setup hyperref's \@currentHref +\def\@IEEEtheHrefequation{equation.\theHequation} +\def\@IEEEtheHrefsubequation{equation.\theHequation\alph{IEEEsubequation}} + + +\def\IEEEeqnarray{\@IEEEeqnumpersisttrue\@IEEEsubeqnumpersistfalse\@IEEEeqnarray} +\def\endIEEEeqnarray{\end@IEEEeqnarray} + +\@namedef{IEEEeqnarray*}{\@IEEEeqnumpersistfalse\@IEEEsubeqnumpersistfalse\@IEEEeqnarray} +\@namedef{endIEEEeqnarray*}{\end@IEEEeqnarray} + + +% \IEEEeqnarray is an enhanced \eqnarray. +% The star form defaults to not putting equation numbers at the end of each row. +% usage: \IEEEeqnarray[decl]{cols} +\def\@IEEEeqnarray{\relax\@ifnextchar[{\@@IEEEeqnarray}{\@@IEEEeqnarray[\relax]}} +% We have to be careful here to normalize catcodes just before acquiring the +% cols as that specification may contain punctuation which could be subject +% to document catcode changes. +\def\@@IEEEeqnarray[#1]{\begingroup\IEEEnormalcatcodes\@@@IEEEeqnarray[#1]} +\def\@@@IEEEeqnarray[#1]#2{\endgroup + % default to showing the equation number or not based on whether or not + % the star form was involked + \if@IEEEeqnumpersist\global\@eqnswtrue + \else% not the star form + \global\@eqnswfalse + \fi% if star form + % provide a basic hyperref \theHequation if this has not already been setup (hyperref not loaded, or no section counter) + \@ifundefined{theHequation}{\def\theHequation{\arabic{equation}}}{}\relax + % provide dummy hyperref commands in case hyperref is not loaded + \providecommand{\Hy@raisedlink}[1]{}\relax + \providecommand{\hyper@anchorstart}[1]{}\relax + \providecommand{\hyper@anchorend}{}\relax + \providecommand{\@currentHref}{}\relax + \@IEEEeqnumpreadvfalse% reset eqnpreadv flag + \@IEEEsubeqnumpreadvfalse% reset subeqnpreadv flag + \@IEEEeqnarrayISinnerfalse% not yet within the lines of the halign + \@IEEEeqnarraystrutsize{0pt}{0pt}[\relax]% turn off struts by default + \@IEEEeqnarrayusemasterstruttrue% use master strut till user asks otherwise + \IEEEvisiblestrutsfalse% diagnostic mode defaults to off + % no extra space unless the user specifically requests it + \lineskip=0pt\relax + \lineskiplimit=0pt\relax + \baselineskip=\normalbaselineskip\relax% + \jot=\IEEEnormaljot\relax% + \mathsurround\z@\relax% no extra spacing around math + \@advanceIEEEeqncolcnttrue% advance the col counter for each col the user uses, + % used in \IEEEeqnarraymulticol and in the preamble build + %V1.8 Here we preadvance to the next equation number. + % If the user later wants a continued subequation, we can roll back. + \global\@IEEEsubeqnnumrollback=\c@IEEEsubequation% + \stepcounter{equation}\@IEEEeqnumpreadvtrue% advance equation counter before first line + \setcounter{IEEEsubequation}{0}% no subequation yet + \let\@IEEEcurrentlabelsave\@currentlabel% save current label as we later change it globally + \let\@IEEEcurrentHrefsave\@currentHref% save current href label as we later change it globally + \def\@currentlabel{\p@equation\theequation}% redefine the ref label + \def\@currentHref{\@IEEEtheHrefequation}% setup hyperref label + \IEEEeqnarraydecl\relax% allow a way for the user to make global overrides + #1\relax% allow user to override defaults + \let\\\@IEEEeqnarraycr% replace newline with one that can put in eqn. numbers + \global\@IEEEeqncolcnt\z@% col. count = 0 for first line + \@IEEEbuildpreamble{#2}\relax% build the preamble and put it into \@IEEEtrantmptoksA + % put in the column for the equation number + \ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi% col separator for those after the first + \toks0={##}% + % advance the \@IEEEeqncolcnt for the isolation col, this helps with error checking + \@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}% + % add the isolation column + \@IEEEappendtoksA{\tabskip\z@skip\bgroup\the\toks0\egroup}% + % advance the \@IEEEeqncolcnt for the equation number col, this helps with error checking + \@IEEEappendtoksA{&\global\advance\@IEEEeqncolcnt by 1\relax}% + % add the equation number col to the preamble + \@IEEEappendtoksA{\tabskip\z@skip\hb@xt@\z@\bgroup\hss\the\toks0\egroup}% + % note \@IEEEeqnnumcols does not count the equation col or isolation col + % set the starting tabskip glue as determined by the preamble build + \tabskip=\@IEEEBPstartglue\relax + % begin the display alignment + \@IEEEeqnarrayISinnertrue% commands are now within the lines + $$\everycr{}\halign to\displaywidth\bgroup + % "exspand" the preamble + \span\the\@IEEEtrantmptoksA\cr} + +% enter isolation/strut column (or the next column if the user did not use +% every column), record the strut status, complete the columns, do the strut if needed, +% restore counters (to backout any equation setup for a next line that was never used) +% to their correct values and exit +\def\end@IEEEeqnarray{\@IEEEeqnarrayglobalizestrutstatus&\@@IEEEeqnarraycr\egroup +\if@IEEEsubeqnumpreadv\global\advance\c@IEEEsubequation\m@ne\fi +\if@IEEEeqnumpreadv\global\advance\c@equation\m@ne\global\c@IEEEsubequation=\@IEEEsubeqnnumrollback\fi +\global\let\@currentlabel\@IEEEcurrentlabelsave% restore current label +\global\let\@currentHref\@IEEEcurrentHrefsave% restore current href label +$$\@ignoretrue} + + +% IEEEeqnarray uses a modifed \\ instead of the plain \cr to +% end rows. This allows for things like \\*[vskip amount] +% These "cr" macros are modified versions of those for LaTeX2e's eqnarray +% the {\ifnum0=`} braces must be kept away from the last column to avoid +% altering spacing of its math, so we use & to advance to the next column +% as there is an isolation/strut column after the user's columns +\def\@IEEEeqnarraycr{\@IEEEeqnarrayglobalizestrutstatus&% save strut status and advance to next column + {\ifnum0=`}\fi + \@ifstar{% + \global\@eqpen\@M\@IEEEeqnarrayYCR + }{% + \global\@eqpen\interdisplaylinepenalty \@IEEEeqnarrayYCR + }% +} + +\def\@IEEEeqnarrayYCR{\@testopt\@IEEEeqnarrayXCR\z@skip} + +\def\@IEEEeqnarrayXCR[#1]{% + \ifnum0=`{\fi}% + \@@IEEEeqnarraycr + \noalign{\penalty\@eqpen\vskip\jot\vskip #1\relax}}% + +\def\@@IEEEeqnarraycr{\@IEEEtrantmptoksA={}% clear token register + \advance\@IEEEeqncolcnt by -1\relax% adjust col count because of the isolation column + \ifnum\@IEEEeqncolcnt>\@IEEEeqnnumcols\relax + \@IEEEclspkgerror{Too many columns within the IEEEeqnarray\MessageBreak + environment}% + {Use fewer \string &'s or put more columns in the IEEEeqnarray column\MessageBreak + specifications.}\relax% + \else + \loop% add cols if the user did not use them all + \ifnum\@IEEEeqncolcnt<\@IEEEeqnnumcols\relax + \@IEEEappendtoksA{&}% + \advance\@IEEEeqncolcnt by 1\relax% update the col count + \repeat + % this number of &'s will take us the the isolation column + \fi + % execute the &'s + \the\@IEEEtrantmptoksA% + % handle the strut/isolation column + \@IEEEeqnarrayinsertstrut% do the strut if needed + \@IEEEeqnarraystrutreset% reset the strut system for next line or IEEEeqnarray + &% and enter the equation number column + \if@eqnsw% only if we display something + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}}% start a hyperref anchor + \global\@IEEEeqnumpreadvfalse\relax% displaying an equation number means + \global\@IEEEsubeqnumpreadvfalse\relax% the equation counters point to valid equations + % V1.8 Here we setup the counters, currentlabel and status for what would be the *next* + % equation line as would be the case under the current settings. However, there are two problems. + % One problem is that there might not ever be a next line. The second problem is that the user + % may later alter the meaning of a line with commands such as \IEEEyessubnumber. So, to handle + % these cases we have to record the current values of the (sub)equation counters and revert back + % to them if the next line is changed or never comes. The \if@IEEEeqnumpreadv, \if@IEEEsubeqnumpreadv + % and \@IEEEsubeqnnumrollback stuff tracks this. + % The logic to handle all this is surprisingly complex, but a nice feature of the approach here is + % that the equation counters and labels remain valid for what the line would be unless a + % \IEEEyessubnumber et al. later changes it. So, any hyperref links are always correct. + \ifnum\c@IEEEsubequation>0\relax% handle subequation + \theIEEEsubequationdis\relax + \if@IEEEsubeqnumpersist% setup for default type of next line + \stepcounter{IEEEsubequation}\global\@IEEEsubeqnumpreadvtrue\relax + \gdef\@currentlabel{\p@IEEEsubequation\theIEEEsubequation}\relax + \gdef\@currentHref{\@IEEEtheHrefsubequation}% setup hyperref label + \else + % if no subeqnum persist, go ahead and setup for a new equation number + \global\@IEEEsubeqnnumrollback=\c@IEEEsubequation + \stepcounter{equation}\global\@IEEEeqnumpreadvtrue\relax + \setcounter{IEEEsubequation}{0}\gdef\@currentlabel{\p@equation\theequation}\relax + \gdef\@currentHref{\@IEEEtheHrefequation}% setup hyperref label + \fi + \else% display a standard equation number + \theequationdis\relax + \setcounter{IEEEsubequation}{0}\relax% not really needed + \if@IEEEsubeqnumpersist% setup for default type of next line + % subequations that follow plain equations carry the same equation number e.g, 5, 5a rather than 5, 6a + \stepcounter{IEEEsubequation}\global\@IEEEsubeqnumpreadvtrue\relax + \gdef\@currentlabel{\p@IEEEsubequation\theIEEEsubequation}\relax + \gdef\@currentHref{\@IEEEtheHrefsubequation}% setup hyperref label + \else + % if no subeqnum persist, go ahead and setup for a new equation number + \global\@IEEEsubeqnnumrollback=\c@IEEEsubequation + \stepcounter{equation}\global\@IEEEeqnumpreadvtrue\relax + \setcounter{IEEEsubequation}{0}\gdef\@currentlabel{\p@equation\theequation}\relax + \gdef\@currentHref{\@IEEEtheHrefequation}% setup hyperref label + \fi + \fi% + \Hy@raisedlink{\hyper@anchorend}% end hyperref anchor + \fi% fi only if we display something + % reset the flags to indicate the default preferences of the display of equation numbers + \if@IEEEeqnumpersist\global\@eqnswtrue\else\global\@eqnswfalse\fi + \if@IEEEsubeqnumpersist\global\@eqnswtrue\fi% ditto for the subequation flag + % reset the number of columns the user actually used + \global\@IEEEeqncolcnt\z@\relax + % the real end of the line + \cr} + + + + + +% \IEEEeqnarraybox is like \IEEEeqnarray except the box form puts everything +% inside a vtop, vbox, or vcenter box depending on the letter in the second +% optional argument (t,b,c). Vbox is the default. Unlike \IEEEeqnarray, +% equation numbers are not displayed and \IEEEeqnarraybox can be nested. +% \IEEEeqnarrayboxm is for math mode (like \array) and does not put the vbox +% within an hbox. +% \IEEEeqnarrayboxt is for text mode (like \tabular) and puts the vbox within +% a \hbox{$ $} construct. +% \IEEEeqnarraybox will auto detect whether to use \IEEEeqnarrayboxm or +% \IEEEeqnarrayboxt depending on the math mode. +% The third optional argument specifies the width this box is to be set to - +% natural width is the default. +% The * forms do not add \jot line spacing +% usage: \IEEEeqnarraybox[decl][pos][width]{cols} +\def\IEEEeqnarrayboxm{\@IEEEeqnarrayboxnojotfalse\@IEEEeqnarrayboxHBOXSWfalse\@IEEEeqnarraybox} +\def\endIEEEeqnarrayboxm{\end@IEEEeqnarraybox} +\@namedef{IEEEeqnarrayboxm*}{\@IEEEeqnarrayboxnojottrue\@IEEEeqnarrayboxHBOXSWfalse\@IEEEeqnarraybox} +\@namedef{endIEEEeqnarrayboxm*}{\end@IEEEeqnarraybox} + +\def\IEEEeqnarrayboxt{\@IEEEeqnarrayboxnojotfalse\@IEEEeqnarrayboxHBOXSWtrue\@IEEEeqnarraybox} +\def\endIEEEeqnarrayboxt{\end@IEEEeqnarraybox} +\@namedef{IEEEeqnarrayboxt*}{\@IEEEeqnarrayboxnojottrue\@IEEEeqnarrayboxHBOXSWtrue\@IEEEeqnarraybox} +\@namedef{endIEEEeqnarrayboxt*}{\end@IEEEeqnarraybox} + +\def\IEEEeqnarraybox{\@IEEEeqnarrayboxnojotfalse\ifmmode\@IEEEeqnarrayboxHBOXSWfalse\else\@IEEEeqnarrayboxHBOXSWtrue\fi% +\@IEEEeqnarraybox} +\def\endIEEEeqnarraybox{\end@IEEEeqnarraybox} + +\@namedef{IEEEeqnarraybox*}{\@IEEEeqnarrayboxnojottrue\ifmmode\@IEEEeqnarrayboxHBOXSWfalse\else\@IEEEeqnarrayboxHBOXSWtrue\fi% +\@IEEEeqnarraybox} +\@namedef{endIEEEeqnarraybox*}{\end@IEEEeqnarraybox} + +% flag to indicate if the \IEEEeqnarraybox needs to put things into an hbox{$ $} +% for \vcenter in non-math mode +\newif\if@IEEEeqnarrayboxHBOXSW% +\@IEEEeqnarrayboxHBOXSWfalse + +\def\@IEEEeqnarraybox{\relax\@ifnextchar[{\@@IEEEeqnarraybox}{\@@IEEEeqnarraybox[\relax]}} +% We have to be careful here to normalize catcodes just before acquiring the +% cols as that specification may contain punctuation which could be subject +% to document catcode changes. +\def\@@IEEEeqnarraybox[#1]{\relax\begingroup\IEEEnormalcatcodes\@ifnextchar[{\@@@IEEEeqnarraybox[#1]}{\@@@IEEEeqnarraybox[#1][b]}} +\def\@@@IEEEeqnarraybox[#1][#2]{\relax\@ifnextchar[{\@@@@IEEEeqnarraybox[#1][#2]}{\@@@@IEEEeqnarraybox[#1][#2][\relax]}} + +% #1 = decl; #2 = t,b,c; #3 = width, #4 = col specs +\def\@@@@IEEEeqnarraybox[#1][#2][#3]#4{\endgroup\@IEEEeqnarrayISinnerfalse % not yet within the lines of the halign + \@IEEEeqnarraymasterstrutsave% save current master strut values + \@IEEEeqnarraystrutsize{0pt}{0pt}[\relax]% turn off struts by default + \@IEEEeqnarrayusemasterstruttrue% use master strut till user asks otherwise + \IEEEvisiblestrutsfalse% diagnostic mode defaults to off + % no extra space unless the user specifically requests it + \lineskip=0pt\relax% + \lineskiplimit=0pt\relax% + \baselineskip=\normalbaselineskip\relax% + \jot=\IEEEnormaljot\relax% + \mathsurround\z@\relax% no extra spacing around math + % the default end glues are zero for an \IEEEeqnarraybox + \edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPzero}% default start glue + \edef\@IEEEeqnarraycolSEPdefaultend{\@IEEEeqnarraycolSEPzero}% default end glue + \edef\@IEEEeqnarraycolSEPdefaultmid{\@IEEEeqnarraycolSEPzero}% default inter-column glue + \@advanceIEEEeqncolcntfalse% do not advance the col counter for each col the user uses, + % used in \IEEEeqnarraymulticol and in the preamble build + \IEEEeqnarrayboxdecl\relax% allow a way for the user to make global overrides + #1\relax% allow user to override defaults + \let\\\@IEEEeqnarrayboxcr% replace newline with one that allows optional spacing + \@IEEEbuildpreamble{#4}\relax% build the preamble and put it into \@IEEEtrantmptoksA + % add an isolation column to the preamble to stop \\'s {} from getting into the last col + \ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi% col separator for those after the first + \toks0={##}% + % add the isolation column to the preamble + \@IEEEappendtoksA{\tabskip\z@skip\bgroup\the\toks0\egroup}% + % set the starting tabskip glue as determined by the preamble build + \tabskip=\@IEEEBPstartglue\relax + % begin the alignment + \everycr{}% + % use only the very first token to determine the positioning + \@IEEEextracttoken{#2}\relax + \ifx\@IEEEextractedtokensdiscarded\@empty\else + \typeout{** WARNING: IEEEeqnarraybox position specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax + \fi + % \@IEEEextractedtoken has the first token, the rest are ignored + % if we need to put things into and hbox and go into math mode, do so now + \if@IEEEeqnarrayboxHBOXSW \leavevmode \hbox \bgroup $\fi% + % use the appropriate vbox type + \if\@IEEEextractedtoken t\relax\vtop\else\if\@IEEEextractedtoken c\relax% + \vcenter\else\vbox\fi\fi\bgroup% + \@IEEEeqnarrayISinnertrue% commands are now within the lines + \ifx#3\relax\halign\else\halign to #3\relax\fi% + \bgroup + % "exspand" the preamble + \span\the\@IEEEtrantmptoksA\cr} + +% carry strut status and enter the isolation/strut column, +% exit from math mode if needed, and exit +\def\end@IEEEeqnarraybox{\@IEEEeqnarrayglobalizestrutstatus% carry strut status +&% enter isolation/strut column +\@IEEEeqnarrayinsertstrut% do strut if needed +\@IEEEeqnarraymasterstrutrestore% restore the previous master strut values +% reset the strut system for next IEEEeqnarray +% (sets local strut values back to previous master strut values) +\@IEEEeqnarraystrutreset% +% ensure last line, exit from halign, close vbox +\crcr\egroup\egroup% +% exit from math mode and close hbox if needed +\if@IEEEeqnarrayboxHBOXSW $\egroup\fi} + + + +% IEEEeqnarraybox uses a modifed \\ instead of the plain \cr to +% end rows. This allows for things like \\[vskip amount] +% This "cr" macros are modified versions those for LaTeX2e's eqnarray +% For IEEEeqnarraybox, \\* is the same as \\ +% the {\ifnum0=`} braces must be kept away from the last column to avoid +% altering spacing of its math, so we use & to advance to the isolation/strut column +% carry strut status into isolation/strut column +\def\@IEEEeqnarrayboxcr{\@IEEEeqnarrayglobalizestrutstatus% carry strut status +&% enter isolation/strut column +\@IEEEeqnarrayinsertstrut% do strut if needed +% reset the strut system for next line or IEEEeqnarray +\@IEEEeqnarraystrutreset% +{\ifnum0=`}\fi% +\@ifstar{\@IEEEeqnarrayboxYCR}{\@IEEEeqnarrayboxYCR}} + +% test and setup the optional argument to \\[] +\def\@IEEEeqnarrayboxYCR{\@testopt\@IEEEeqnarrayboxXCR\z@skip} + +% IEEEeqnarraybox does not automatically increase line spacing by \jot +\def\@IEEEeqnarrayboxXCR[#1]{\ifnum0=`{\fi}% +\cr\noalign{\if@IEEEeqnarrayboxnojot\else\vskip\jot\fi\vskip#1\relax}} + + + +% usage: \@IEEEbuildpreamble{column specifiers} +% starts the halign preamble build +% the assembled preamble is put in \@IEEEtrantmptoksA +\def\@IEEEbuildpreamble#1{\@IEEEtrantmptoksA={}% clear token register +\let\@IEEEBPcurtype=u%current column type is not yet known +\let\@IEEEBPprevtype=s%the previous column type was the start +\let\@IEEEBPnexttype=u%next column type is not yet known +% ensure these are valid +\def\@IEEEBPcurglue={0pt plus 0pt minus 0pt}% +\def\@IEEEBPcurcolname{@IEEEdefault}% name of current column definition +% currently acquired numerically referenced glue +% use a name that is easier to remember +\let\@IEEEBPcurnum=\@IEEEtrantmpcountA% +\@IEEEBPcurnum=0% +% tracks number of columns in the preamble +\@IEEEeqnnumcols=0% +% record the default end glues +\edef\@IEEEBPstartglue{\@IEEEeqnarraycolSEPdefaultstart}% +\edef\@IEEEBPendglue{\@IEEEeqnarraycolSEPdefaultend}% +\edef\@IEEEedefMACRO{#1}\relax% fully expand the preamble to support macro containers +% now parse the user's column specifications +% \ignorespaces is used as a delimiter, need at least one trailing \relax because +% \@@IEEEbuildpreamble looks into the future +\expandafter\@@IEEEbuildpreamble\@IEEEedefMACRO\ignorespaces\relax\relax} + + +% usage: \@@IEEEbuildpreamble{current column}{next column} +% parses and builds the halign preamble +\def\@@IEEEbuildpreamble#1#2{\let\@@nextIEEEbuildpreamble=\@@IEEEbuildpreamble% +% use only the very first token to check the end +\@IEEEextracttokengroups{#1}\relax +\ifx\@IEEEextractedfirsttoken\ignorespaces\let\@@nextIEEEbuildpreamble=\@@IEEEfinishpreamble\else% +% identify current and next token type +\@IEEEgetcoltype{#1}{\@IEEEBPcurtype}{1}% current, error on invalid +\@IEEEgetcoltype{#2}{\@IEEEBPnexttype}{0}% next, no error on invalid next +% if curtype is a glue, get the glue def +\if\@IEEEBPcurtype g\@IEEEgetcurglue{#1}{\@IEEEBPcurglue}\fi% +% if curtype is a column, get the column def and set the current column name +\if\@IEEEBPcurtype c\@IEEEgetcurcol{#1}\fi% +% if curtype is a numeral, acquire the user defined glue +\if\@IEEEBPcurtype n\@IEEEprocessNcol{#1}\fi% +% process the acquired glue +\if\@IEEEBPcurtype g\@IEEEprocessGcol\fi% +% process the acquired col +\if\@IEEEBPcurtype c\@IEEEprocessCcol\fi% +% ready prevtype for next col spec. +\let\@IEEEBPprevtype=\@IEEEBPcurtype% +% be sure and put back the future token(s) as a group +\fi\@@nextIEEEbuildpreamble{#2}} + + +% usage: \@@IEEEfinishpreamble{discarded} +% executed just after preamble build is completed +% warn about zero cols, and if prevtype type = u, put in end tabskip glue +% argument is not used +\def\@@IEEEfinishpreamble#1{\ifnum\@IEEEeqnnumcols<1\relax +\@IEEEclspkgerror{No column specifiers declared for IEEEeqnarray}% +{At least one column type must be declared for each IEEEeqnarray.}% +\fi%num cols less than 1 +%if last type undefined, set default end tabskip glue +\if\@IEEEBPprevtype u\@IEEEappendtoksA{\tabskip=\@IEEEBPendglue}\fi} + + +% usage: \@IEEEgetcoltype{col specifier}{\output}{error more} +% Identify and return the column specifier's type code in the given +% \output macro: +% n = number +% g = glue (any other char in catagory 12) +% c = letter +% e = \ignorespaces (end of sequence) +% u = undefined +% error mode: 0 = no error message, 1 = error on invalid char +\def\@IEEEgetcoltype#1#2#3{% +% use only the very first token to determine the type +\@IEEEextracttoken{#1}\relax +% \@IEEEextractedtoken has the first token, the rest are discarded +\let#2=u\relax% assume invalid until know otherwise +\ifx\@IEEEextractedtoken\ignorespaces\let#2=e\else +\ifcat\@IEEEextractedtoken\relax\else% screen out control sequences +\if0\@IEEEextractedtoken\let#2=n\else +\if1\@IEEEextractedtoken\let#2=n\else +\if2\@IEEEextractedtoken\let#2=n\else +\if3\@IEEEextractedtoken\let#2=n\else +\if4\@IEEEextractedtoken\let#2=n\else +\if5\@IEEEextractedtoken\let#2=n\else +\if6\@IEEEextractedtoken\let#2=n\else +\if7\@IEEEextractedtoken\let#2=n\else +\if8\@IEEEextractedtoken\let#2=n\else +\if9\@IEEEextractedtoken\let#2=n\else +\ifcat,\@IEEEextractedtoken\let#2=g\relax +\else\ifcat a\@IEEEextractedtoken\let#2=c\relax\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +\if#2u\relax +\if0\noexpand#3\relax\else\@IEEEclspkgerror{Invalid character in column specifications}% +{Only letters, numerals and certain other symbols are allowed \MessageBreak +as IEEEeqnarray column specifiers.}\fi\fi} + + +% usage: \@IEEEgetcurcol{col specifier} +% verify the letter referenced column exists +% and return its name in \@IEEEBPcurcolname +% if column specifier is invalid, use the default column @IEEEdefault +\def\@IEEEgetcurcol#1{\expandafter\ifx\csname @IEEEeqnarraycolDEF#1\endcsname\@IEEEeqnarraycolisdefined% +\def\@IEEEBPcurcolname{#1}\else% invalid column name +\@IEEEclspkgerror{Invalid column type "#1" in column specifications.\MessageBreak +Using a default centering column instead}% +{You must define IEEEeqnarray column types before use.}% +\def\@IEEEBPcurcolname{@IEEEdefault}\fi} + + +% usage: \@IEEEgetcurglue{glue specifier}{\output} +% identify the predefined (punctuation) glue value +% and return it in the given output macro +\def\@IEEEgetcurglue#1#2{% +% ! = \! (neg small) -0.16667em (-3/18 em) +% , = \, (small) 0.16667em ( 3/18 em) +% : = \: (med) 0.22222em ( 4/18 em) +% ; = \; (large) 0.27778em ( 5/18 em) +% ' = \quad 1em +% " = \qquad 2em +% . = 0.5\arraycolsep +% / = \arraycolsep +% ? = 2\arraycolsep +% * = 1fil +% + = \@IEEEeqnarraycolSEPcenter +% - = \@IEEEeqnarraycolSEPzero +% Note that all em values are referenced to the math font (textfont2) fontdimen6 +% value for 1em. +% +% use only the very first token to determine the type +\@IEEEextracttoken{#1}\relax +\ifx\@IEEEextractedtokensdiscarded\@empty\else + \typeout{** WARNING: IEEEeqnarray predefined inter-column glue type specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax +\fi +% get the math font 1em value +% LaTeX2e's NFSS2 does not preload the fonts, but \IEEEeqnarray needs +% to gain access to the math (\textfont2) font's spacing parameters. +% So we create a bogus box here that uses the math font to ensure +% that \textfont2 is loaded and ready. If this is not done, +% the \textfont2 stuff here may not work. +% Thanks to Bernd Raichle for his 1997 post on this topic. +{\setbox0=\hbox{$\displaystyle\relax$}}% +% fontdimen6 has the width of 1em (a quad). +\@IEEEtrantmpdimenA=\fontdimen6\textfont2\relax% +% identify the glue value based on the first token +% we discard anything after the first +\if!\@IEEEextractedtoken\@IEEEtrantmpdimenA=-0.16667\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if,\@IEEEextractedtoken\@IEEEtrantmpdimenA=0.16667\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if:\@IEEEextractedtoken\@IEEEtrantmpdimenA=0.22222\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if;\@IEEEextractedtoken\@IEEEtrantmpdimenA=0.27778\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if'\@IEEEextractedtoken\@IEEEtrantmpdimenA=1\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if"\@IEEEextractedtoken\@IEEEtrantmpdimenA=2\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if.\@IEEEextractedtoken\@IEEEtrantmpdimenA=0.5\arraycolsep\edef#2{\the\@IEEEtrantmpdimenA}\else +\if/\@IEEEextractedtoken\edef#2{\the\arraycolsep}\else +\if?\@IEEEextractedtoken\@IEEEtrantmpdimenA=2\arraycolsep\edef#2{\the\@IEEEtrantmpdimenA}\else +\if *\@IEEEextractedtoken\edef#2{0pt plus 1fil minus 0pt}\else +\if+\@IEEEextractedtoken\edef#2{\@IEEEeqnarraycolSEPcenter}\else +\if-\@IEEEextractedtoken\edef#2{\@IEEEeqnarraycolSEPzero}\else +\edef#2{\@IEEEeqnarraycolSEPzero}% +\@IEEEclspkgerror{Invalid predefined inter-column glue type "#1" in\MessageBreak +column specifications. Using a default value of\MessageBreak +0pt instead}% +{Only !,:;'"./?*+ and - are valid predefined glue types in the\MessageBreak +IEEEeqnarray column specifications.}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + + +% usage: \@IEEEprocessNcol{digit} +% process a numerical digit from the column specification +% and look up the corresponding user defined glue value +% can transform current type from n to g or a as the user defined glue is acquired +\def\@IEEEprocessNcol#1{\if\@IEEEBPprevtype g% +\@IEEEclspkgerror{Back-to-back inter-column glue specifiers in column\MessageBreak +specifications. Ignoring consecutive glue specifiers\MessageBreak +after the first}% +{You cannot have two or more glue types next to each other\MessageBreak +in the IEEEeqnarray column specifications.}% +\let\@IEEEBPcurtype=a% abort this glue, future digits will be discarded +\@IEEEBPcurnum=0\relax% +\else% if we previously aborted a glue +\if\@IEEEBPprevtype a\@IEEEBPcurnum=0\let\@IEEEBPcurtype=a%maintain digit abortion +\else%acquire this number +% save the previous type before the numerical digits started +\if\@IEEEBPprevtype n\else\let\@IEEEBPprevsavedtype=\@IEEEBPprevtype\fi% +\multiply\@IEEEBPcurnum by 10\relax% +\advance\@IEEEBPcurnum by #1\relax% add in number, \relax is needed to stop TeX's number scan +\if\@IEEEBPnexttype n\else%close acquisition +\expandafter\ifx\csname @IEEEeqnarraycolSEPDEF\expandafter\romannumeral\number\@IEEEBPcurnum\endcsname\@IEEEeqnarraycolisdefined% +\edef\@IEEEBPcurglue{\csname @IEEEeqnarraycolSEP\expandafter\romannumeral\number\@IEEEBPcurnum\endcsname}% +\else%user glue not defined +\@IEEEclspkgerror{Invalid user defined inter-column glue type "\number\@IEEEBPcurnum" in\MessageBreak +column specifications. Using a default value of\MessageBreak +0pt instead}% +{You must define all IEEEeqnarray numerical inter-column glue types via\MessageBreak +\string\IEEEeqnarraydefcolsep \space before they are used in column specifications.}% +\edef\@IEEEBPcurglue{\@IEEEeqnarraycolSEPzero}% +\fi% glue defined or not +\let\@IEEEBPcurtype=g% change the type to reflect the acquired glue +\let\@IEEEBPprevtype=\@IEEEBPprevsavedtype% restore the prev type before this number glue +\@IEEEBPcurnum=0\relax%ready for next acquisition +\fi%close acquisition, get glue +\fi%discard or acquire number +\fi%prevtype glue or not +} + + +% process an acquired glue +% add any acquired column/glue pair to the preamble +\def\@IEEEprocessGcol{\if\@IEEEBPprevtype a\let\@IEEEBPcurtype=a%maintain previous glue abortions +\else +% if this is the start glue, save it, but do nothing else +% as this is not used in the preamble, but before +\if\@IEEEBPprevtype s\edef\@IEEEBPstartglue{\@IEEEBPcurglue}% +\else%not the start glue +\if\@IEEEBPprevtype g%ignore if back to back glues +\@IEEEclspkgerror{Back-to-back inter-column glue specifiers in column\MessageBreak +specifications. Ignoring consecutive glue specifiers\MessageBreak +after the first}% +{You cannot have two or more glue types next to each other\MessageBreak +in the IEEEeqnarray column specifications.}% +\let\@IEEEBPcurtype=a% abort this glue +\else% not a back to back glue +\if\@IEEEBPprevtype c\relax% if the previoustype was a col, add column/glue pair to preamble +\ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi +\toks0={##}% +% make preamble advance col counter if this environment needs this +\if@advanceIEEEeqncolcnt\@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}\fi +% insert the column defintion into the preamble, being careful not to expand +% the column definition +\@IEEEappendtoksA{\tabskip=\@IEEEBPcurglue}% +\@IEEEappendNOEXPANDtoksA{\begingroup\csname @IEEEeqnarraycolPRE}% +\@IEEEappendtoksA{\@IEEEBPcurcolname}% +\@IEEEappendNOEXPANDtoksA{\endcsname}% +\@IEEEappendtoksA{\the\toks0}% +\@IEEEappendNOEXPANDtoksA{\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST}% +\@IEEEappendtoksA{\@IEEEBPcurcolname}% +\@IEEEappendNOEXPANDtoksA{\endcsname\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\endgroup}% +\advance\@IEEEeqnnumcols by 1\relax%one more column in the preamble +\else% error: non-start glue with no pending column +\@IEEEclspkgerror{Inter-column glue specifier without a prior column\MessageBreak +type in the column specifications. Ignoring this glue\MessageBreak +specifier}% +{Except for the first and last positions, glue can be placed only\MessageBreak +between column types.}% +\let\@IEEEBPcurtype=a% abort this glue +\fi% previous was a column +\fi% back-to-back glues +\fi% is start column glue +\fi% prev type not a +} + + +% process an acquired letter referenced column and, if necessary, add it to the preamble +\def\@IEEEprocessCcol{\if\@IEEEBPnexttype g\else +\if\@IEEEBPnexttype n\else +% we have a column followed by something other than a glue (or numeral glue) +% so we must add this column to the preamble now +\ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi%col separator for those after the first +\if\@IEEEBPnexttype e\@IEEEappendtoksA{\tabskip=\@IEEEBPendglue\relax}\else%put in end glue +\@IEEEappendtoksA{\tabskip=\@IEEEeqnarraycolSEPdefaultmid\relax}\fi% or default mid glue +\toks0={##}% +% make preamble advance col counter if this environment needs this +\if@advanceIEEEeqncolcnt\@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}\fi +% insert the column definition into the preamble, being careful not to expand +% the column definition +\@IEEEappendNOEXPANDtoksA{\begingroup\csname @IEEEeqnarraycolPRE}% +\@IEEEappendtoksA{\@IEEEBPcurcolname}% +\@IEEEappendNOEXPANDtoksA{\endcsname}% +\@IEEEappendtoksA{\the\toks0}% +\@IEEEappendNOEXPANDtoksA{\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST}% +\@IEEEappendtoksA{\@IEEEBPcurcolname}% +\@IEEEappendNOEXPANDtoksA{\endcsname\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\endgroup}% +\advance\@IEEEeqnnumcols by 1\relax%one more column in the preamble +\fi%next type not numeral +\fi%next type not glue +} + + +%% +%% END OF IEEEeqnarray DEFINITIONS +%% + + + + + +% set up the running headers and footers +% +% header and footer font and size specifications +\def\@IEEEheaderstyle{\normalfont\scriptsize} +\def\@IEEEfooterstyle{\normalfont\scriptsize} +% +% compsoc uses sans-serif headers and footers +\ifCLASSOPTIONcompsoc + \def\@IEEEheaderstyle{\normalfont\sffamily\scriptsize} + \def\@IEEEfooterstyle{\normalfont\sffamily\scriptsize} +\fi + + +% standard page style, ps@headings +\def\ps@headings{% default to standard twoside headers, no footers +% will change later if the mode requires otherwise +\def\@oddhead{\hbox{}\@IEEEheaderstyle\rightmark\hfil\thepage}\relax +\def\@evenhead{\@IEEEheaderstyle\thepage\hfil\leftmark\hbox{}}\relax +\let\@oddfoot\@empty +\let\@evenfoot\@empty +\ifCLASSOPTIONtechnote + % technote twoside + \def\@oddhead{\hbox{}\@IEEEheaderstyle\leftmark\hfil\thepage}\relax + \def\@evenhead{\@IEEEheaderstyle\thepage\hfil\leftmark\hbox{}}\relax +\fi +\ifCLASSOPTIONdraftcls + % draft footers + \def\@oddfoot{\@IEEEfooterstyle\@date\hfil DRAFT}\relax + \def\@evenfoot{\@IEEEfooterstyle DRAFT\hfil\@date}\relax +\fi +% oneside +\if@twoside\else + % standard one side headers + \def\@oddhead{\hbox{}\@IEEEheaderstyle\leftmark\hfil\thepage}\relax + \let\@evenhead\@empty + \ifCLASSOPTIONdraftcls + % oneside draft footers + \def\@oddfoot{\@IEEEfooterstyle\@date\hfil DRAFT}\relax + \let\@evenfoot\@empty + \fi +\fi +% turn off headers for conferences +\ifCLASSOPTIONconference + \let\@oddhead\@empty + \let\@evenhead\@empty +\fi +% turn off footers for draftclsnofoot +\ifCLASSOPTIONdraftclsnofoot + \let\@oddfoot\@empty + \let\@evenfoot\@empty +\fi} + + +% title page style, ps@IEEEtitlepagestyle +\def\ps@IEEEtitlepagestyle{% default title page headers, no footers +\def\@oddhead{\hbox{}\@IEEEheaderstyle\leftmark\hfil\thepage}\relax +\def\@evenhead{\@IEEEheaderstyle\thepage\hfil\leftmark\hbox{}}\relax +\let\@oddfoot\@empty +\let\@evenfoot\@empty +% will change later if the mode requires otherwise +\ifCLASSOPTIONdraftcls + % draft footers + \ifCLASSOPTIONdraftclsnofoot\else + % but only if not draftclsnofoot + \def\@oddfoot{\@IEEEfooterstyle\@date\hfil DRAFT}\relax + \def\@evenfoot{\@IEEEfooterstyle DRAFT\hfil\@date}\relax + \fi +\else + % all nondraft mode footers + \if@IEEEusingpubid + % for title pages that are using a pubid + % do not repeat pubid on the title page if using a peer review cover page + \ifCLASSOPTIONpeerreview\else + % for noncompsoc papers, the pubid uses footnotesize and + % is at the same vertical position as where the last baseline would normally be + \def\@oddfoot{\hbox{}\hss\@IEEEfooterstyle\footnotesize\raisebox{\footskip}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax + \def\@evenfoot{\hbox{}\hss\@IEEEfooterstyle\footnotesize\raisebox{\footskip}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax + \ifCLASSOPTIONcompsoc + % for compsoc papers, the pubid is at the same vertical position as the normal footer + \def\@oddfoot{\hbox{}\hss\@IEEEfooterstyle\raisebox{0pt}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax + \def\@evenfoot{\hbox{}\hss\@IEEEfooterstyle\raisebox{0pt}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax + \fi + \fi + \fi +\fi +% turn off headers for conferences +\ifCLASSOPTIONconference + \let\@oddhead\@empty + \let\@evenhead\@empty +\fi} + + +% peer review cover page style, ps@IEEEpeerreviewcoverpagestyle +\def\ps@IEEEpeerreviewcoverpagestyle{% default peer review cover no headers, no footers +\let\@oddhead\@empty +\let\@evenhead\@empty +\let\@oddfoot\@empty +\let\@evenfoot\@empty +% will change later if the mode requires otherwise +\ifCLASSOPTIONdraftcls + % draft footers + \ifCLASSOPTIONdraftclsnofoot\else + % but only if not draftclsnofoot + \def\@oddfoot{\@IEEEfooterstyle\@date\hfil DRAFT}\relax + \def\@evenfoot{\@IEEEfooterstyle DRAFT\hfil\@date}\relax + \fi +\else + % all nondraft mode footers + \if@IEEEusingpubid + % for peer review cover pages that are using a pubid + % for noncompsoc papers, the pubid uses footnotesize and + % is at the same vertical position as where the last baseline would normally be + \def\@oddfoot{\hbox{}\hss\@IEEEfooterstyle\footnotesize\raisebox{\footskip}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax + \def\@evenfoot{\hbox{}\hss\@IEEEfooterstyle\footnotesize\raisebox{\footskip}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax + \ifCLASSOPTIONcompsoc + % for compsoc papers, the pubid is at the same vertical position as the normal footer + \def\@oddfoot{\hbox{}\hss\@IEEEfooterstyle\raisebox{0pt}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax + \def\@evenfoot{\hbox{}\hss\@IEEEfooterstyle\raisebox{0pt}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax + \fi + \fi +\fi} + + + +%% Defines the command for putting the header. +%% Note that all the text is forced into uppercase, if you have some text +%% that needs to be in lower case, for instance et. al., then either manually +%% set \leftmark and \rightmark or use \MakeLowercase{et. al.} within the +%% arguments to \markboth. +%% V1.7b add \protect to work with Babel +\def\markboth#1#2{\def\leftmark{\MakeUppercase{\protect#1}}% +\def\rightmark{\MakeUppercase{\protect#2}}} + +\def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} + + + + +%% CITATION AND BIBLIOGRAPHY COMMANDS +%% +%% V1.6 no longer supports the older, nonstandard \shortcite and \citename setup stuff +% +% +% Modify Latex2e \@citex to separate citations with "], [" +\def\@citex[#1]#2{% + \let\@citea\@empty + \@cite{\@for\@citeb:=#2\do + {\@citea\def\@citea{], [}% + \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% + \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi + \@ifundefined{b@\@citeb}{\mbox{\reset@font\bfseries ?}% + \G@refundefinedtrue + \@latex@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + {\hbox{\csname b@\@citeb\endcsname}}}}{#1}} + +% V1.6 we create hooks for the optional use of Donald Arseneau's +% cite.sty package. cite.sty is "smart" and will notice that the +% following format controls are already defined and will not +% redefine them. The result will be the proper sorting of the +% citation numbers and auto detection of 3 or more entry "ranges" - +% all in IEEE style: [1], [2], [5]--[7], [12] +% This also allows for an optional note, i.e., \cite[mynote]{..}. +% If the \cite with note has more than one reference, the note will +% be applied to the last of the listed references. It is generally +% desired that if a note is given, only one reference is listed in +% that \cite. +% Thanks to Mr. Arseneau for providing the required format arguments +% to produce the IEEE style. +\def\citepunct{], [} +\def\citedash{]--[} + +% V1.7 default to using same font for urls made by url.sty +\AtBeginDocument{\csname url@samestyle\endcsname} + +% V1.6 class files should always provide these +\def\newblock{\hskip .11em\@plus.33em\@minus.07em} +\let\@openbib@code\@empty +% V1.8b article.cls is now providing these too +% we do not use \@mkboth, nor alter the page style +\newenvironment{theindex} + {\if@twocolumn + \@restonecolfalse + \else + \@restonecoltrue + \fi + \twocolumn[\section*{\indexname}]% + \parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \columnseprule \z@ + \columnsep 35\p@ + \let\item\@idxitem} + {\if@restonecol\onecolumn\else\clearpage\fi} +\newcommand\@idxitem{\par\hangindent 40\p@} +\newcommand\subitem{\@idxitem \hspace*{20\p@}} +\newcommand\subsubitem{\@idxitem \hspace*{30\p@}} +\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax} + + + +% Provide support for the control entries of IEEEtran.bst V1.00 and later. +% V1.7 optional argument allows for a different aux file to be specified in +% order to handle multiple bibliographies. For example, with multibib.sty: +% \newcites{sec}{Secondary Literature} +% \bstctlcite[@auxoutsec]{BSTcontrolhak} +\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}} +\def\@bstctlcite[#1]#2{\@bsphack + \@for\@citeb:=#2\do{% + \edef\@citeb{\expandafter\@firstofone\@citeb}% + \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}% + \@esphack} + +% \IEEEnoauxwrite{} allows for citations that do not add to or affect +% the order of the existing citation list. Can be useful for \cite +% within \thanks{}. +\DeclareRobustCommand{\IEEEnoauxwrite}[1]{\relax +\if@filesw +\@fileswfalse +#1\relax\relax\relax\relax\relax +\@fileswtrue +\else +#1\relax\relax\relax\relax\relax +\fi} + +% V1.6 provide a way for a user to execute a command just before +% a given reference number - used to insert a \newpage to balance +% the columns on the last page +\edef\@IEEEtriggerrefnum{0} % the default of zero means that + % the command is not executed +\def\@IEEEtriggercmd{\newpage} + +% allow the user to alter the triggered command +\long\def\IEEEtriggercmd#1{\long\def\@IEEEtriggercmd{#1}} + +% allow user a way to specify the reference number just before the +% command is executed +\def\IEEEtriggeratref#1{\@IEEEtrantmpcountA=#1% +\edef\@IEEEtriggerrefnum{\the\@IEEEtrantmpcountA}}% + +% trigger command at the given reference +\def\@IEEEbibitemprefix{\@IEEEtrantmpcountA=\@IEEEtriggerrefnum\relax% +\advance\@IEEEtrantmpcountA by -1\relax% +\ifnum\c@enumiv=\@IEEEtrantmpcountA\relax\@IEEEtriggercmd\relax\fi} + + +\def\@biblabel#1{[#1]} + +% compsoc journals and conferences left align the reference numbers +\@IEEEcompsoconly{\def\@biblabel#1{[#1]\hfill}} + +% controls bib item spacing +\def\IEEEbibitemsep{0pt plus .5pt} + +\@IEEEcompsocconfonly{\def\IEEEbibitemsep{0.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}} + + +\def\thebibliography#1{\section*{\refname}% + \addcontentsline{toc}{section}{\refname}% + % V1.6 add some rubber space here and provide a command trigger + \footnotesize\vskip 0.3\baselineskip plus 0.1\baselineskip minus 0.1\baselineskip% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep\relax + \itemsep \IEEEbibitemsep\relax + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \let\@IEEElatexbibitem\bibitem% + \def\bibitem{\@IEEEbibitemprefix\@IEEElatexbibitem}% +\def\newblock{\hskip .11em plus .33em minus .07em}% +% originally: +% \sloppy\clubpenalty4000\widowpenalty4000% +% by adding the \interlinepenalty here, we make it more +% difficult, but not impossible, for LaTeX to break within a reference. +% The IEEE almost never breaks a reference (but they do it more often with +% technotes). You may get an underfull vbox warning around the bibliography, +% but the final result will be much more like what the IEEE will publish. +% MDS 11/2000 +\ifCLASSOPTIONtechnote\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty100% +\else\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty500\fi% + \sfcode`\.=1000\relax} +\let\endthebibliography=\endlist + + + + +% TITLE PAGE COMMANDS +% +% +% \IEEEmembership is used to produce the sublargesize italic font used to indicate author +% IEEE membership. compsoc uses a large size sans slant font +\def\IEEEmembership#1{{\@IEEEnotcompsoconly{\sublargesize}\normalfont\@IEEEcompsoconly{\sffamily}\textit{#1}}} + + +% \IEEEauthorrefmark{} produces a footnote type symbol to indicate author affiliation. +% When given an argument of 1 to 9, \IEEEauthorrefmark{} follows the standard LaTeX footnote +% symbol sequence convention. However, for arguments 10 and above, \IEEEauthorrefmark{} +% reverts to using lower case roman numerals, so it cannot overflow. Do note that you +% cannot use \footnotemark[] in place of \IEEEauthorrefmark{} within \author as the footnote +% symbols will have been turned off to prevent \thanks from creating footnote marks. +% \IEEEauthorrefmark{} produces a symbol that appears to LaTeX as having zero vertical +% height - this allows for a more compact line packing, but the user must ensure that +% the interline spacing is large enough to prevent \IEEEauthorrefmark{} from colliding +% with the text above. +% V1.7 make this a robust command +% V1.8 transmag uses an arabic author affiliation symbol +\ifCLASSOPTIONtransmag +\DeclareRobustCommand*{\IEEEauthorrefmark}[1]{\raisebox{0pt}[0pt][0pt]{\textsuperscript{\footnotesize #1}}} +\else +\DeclareRobustCommand*{\IEEEauthorrefmark}[1]{\raisebox{0pt}[0pt][0pt]{\textsuperscript{\footnotesize\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or% + \mathsection\or \mathparagraph\or \|\or **\or \dagger\dagger% + \or \ddagger\ddagger \else\textsuperscript{\expandafter\romannumeral#1}\fi}}}} +\fi + + +% FONT CONTROLS AND SPACINGS FOR CONFERENCE MODE AUTHOR NAME AND AFFILIATION BLOCKS +% +% The default font styles for the author name and affiliation blocks (confmode) +\def\@IEEEauthorblockNstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\sublargesize} +\def\@IEEEauthorblockAstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\@IEEEcompsocconfonly{\itshape}\normalsize} +% The default if the user does not use an author block +\def\@IEEEauthordefaulttextstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\sublargesize} + +% adjustment spacing from title (or special paper notice) to author name blocks (confmode) +% can be negative +\def\@IEEEauthorblockconfadjspace{-0.25em} +% compsoc conferences need more space here +\@IEEEcompsocconfonly{\def\@IEEEauthorblockconfadjspace{0.75\@IEEEnormalsizeunitybaselineskip}} + +% spacing between name and affiliation blocks (confmode) +% This can be negative. +% The IEEE doesn't want any added spacing here, but I will leave these +% controls in place in case they ever change their mind. +% Personally, I like 0.75ex. +%\def\@IEEEauthorblockNtopspace{0.75ex} +%\def\@IEEEauthorblockAtopspace{0.75ex} +\def\@IEEEauthorblockNtopspace{0.0ex} +\def\@IEEEauthorblockAtopspace{0.0ex} +\ifCLASSOPTIONtransmag +% transmag uses one line of space above first affiliation block +\def\@IEEEauthorblockAtopspace{1\@IEEEnormalsizeunitybaselineskip} +\fi + +% baseline spacing within name and affiliation blocks (confmode) +% must be positive, spacings below certain values will make +% the position of line of text sensitive to the contents of the +% line above it i.e., whether or not the prior line has descenders, +% subscripts, etc. For this reason it is a good idea to keep +% these above 2.6ex +\def\@IEEEauthorblockNinterlinespace{2.6ex} +\def\@IEEEauthorblockAinterlinespace{2.75ex} + +% This tracks the required strut size. +% See the \@IEEEauthorhalign command for the actual default value used. +\def\@IEEEauthorblockXinterlinespace{2.7ex} + +% variables to retain font size and style across groups +% values given here have no effect as they will be overwritten later +\gdef\@IEEESAVESTATEfontsize{10} +\gdef\@IEEESAVESTATEfontbaselineskip{12} +\gdef\@IEEESAVESTATEfontencoding{OT1} +\gdef\@IEEESAVESTATEfontfamily{ptm} +\gdef\@IEEESAVESTATEfontseries{m} +\gdef\@IEEESAVESTATEfontshape{n} + +% saves the current font attributes +\def\@IEEEcurfontSAVE{\global\let\@IEEESAVESTATEfontsize\f@size% +\global\let\@IEEESAVESTATEfontbaselineskip\f@baselineskip% +\global\let\@IEEESAVESTATEfontencoding\f@encoding% +\global\let\@IEEESAVESTATEfontfamily\f@family% +\global\let\@IEEESAVESTATEfontseries\f@series% +\global\let\@IEEESAVESTATEfontshape\f@shape} + +% restores the saved font attributes +\def\@IEEEcurfontRESTORE{\fontsize{\@IEEESAVESTATEfontsize}{\@IEEESAVESTATEfontbaselineskip}% +\fontencoding{\@IEEESAVESTATEfontencoding}% +\fontfamily{\@IEEESAVESTATEfontfamily}% +\fontseries{\@IEEESAVESTATEfontseries}% +\fontshape{\@IEEESAVESTATEfontshape}% +\selectfont} + + +% variable to indicate if the current block is the first block in the column +\newif\if@IEEEprevauthorblockincol \@IEEEprevauthorblockincolfalse + + +% the command places a strut with height and depth = \@IEEEauthorblockXinterlinespace +% we use this technique to have complete manual control over the spacing of the lines +% within the halign environment. +% We set the below baseline portion at 30%, the above +% baseline portion at 70% of the total length. +% Responds to changes in the document's \baselinestretch +\def\@IEEEauthorstrutrule{\@IEEEtrantmpdimenA\@IEEEauthorblockXinterlinespace% +\@IEEEtrantmpdimenA=\baselinestretch\@IEEEtrantmpdimenA% +\rule[-0.3\@IEEEtrantmpdimenA]{0pt}{\@IEEEtrantmpdimenA}} + + +% blocks to hold the authors' names and affilations. +% Makes formatting easy for conferences +% +% use real definitions in conference mode +% name block +\def\IEEEauthorblockN#1{\relax\@IEEEauthorblockNstyle% set the default text style +\gdef\@IEEEauthorblockXinterlinespace{0pt}% disable strut for spacer row +% the \expandafter hides the \cr in conditional tex, see the array.sty docs +% for details, probably not needed here as the \cr is in a macro +% do a spacer row if needed +\if@IEEEprevauthorblockincol\expandafter\@IEEEauthorblockNtopspaceline\fi +\global\@IEEEprevauthorblockincoltrue% we now have a block in this column +%restore the correct strut value +\gdef\@IEEEauthorblockXinterlinespace{\@IEEEauthorblockNinterlinespace}% +% input the author names +#1% +% end the row if the user did not already +\crcr} +% spacer row for names +\def\@IEEEauthorblockNtopspaceline{\cr\noalign{\vskip\@IEEEauthorblockNtopspace}} +% +% affiliation block +\def\IEEEauthorblockA#1{\relax\@IEEEauthorblockAstyle% set the default text style +\gdef\@IEEEauthorblockXinterlinespace{0pt}%disable strut for spacer row +% the \expandafter hides the \cr in conditional tex, see the array.sty docs +% for details, probably not needed here as the \cr is in a macro +% do a spacer row if needed +\if@IEEEprevauthorblockincol\expandafter\@IEEEauthorblockAtopspaceline\fi +\global\@IEEEprevauthorblockincoltrue% we now have a block in this column +%restore the correct strut value +\gdef\@IEEEauthorblockXinterlinespace{\@IEEEauthorblockAinterlinespace}% +% input the author affiliations +#1% +% end the row if the user did not already +\crcr +% V1.8 transmag does not use any additional affiliation spacing after the first author +\ifCLASSOPTIONtransmag\gdef\@IEEEauthorblockAtopspace{0pt}\fi} + +% spacer row for affiliations +\def\@IEEEauthorblockAtopspaceline{\cr\noalign{\vskip\@IEEEauthorblockAtopspace}} + + +% allow papers to compile even if author blocks are used in modes other +% than conference or peerreviewca. For such cases, we provide dummy blocks. +\ifCLASSOPTIONconference +\else + \ifCLASSOPTIONpeerreviewca\else + % not conference, peerreviewca or transmag mode + \ifCLASSOPTIONtransmag\else + \def\IEEEauthorblockN#1{#1}% + \def\IEEEauthorblockA#1{#1}% + \fi + \fi +\fi + + + +% we provide our own halign so as not to have to depend on tabular +\def\@IEEEauthorhalign{\@IEEEauthordefaulttextstyle% default text style + \lineskip=0pt\relax% disable line spacing + \lineskiplimit=0pt\relax% + \baselineskip=0pt\relax% + \@IEEEcurfontSAVE% save the current font + \mathsurround\z@\relax% no extra spacing around math + \let\\\@IEEEauthorhaligncr% replace newline with halign friendly one + \tabskip=0pt\relax% no column spacing + \everycr{}% ensure no problems here + \@IEEEprevauthorblockincolfalse% no author blocks yet + \def\@IEEEauthorblockXinterlinespace{2.7ex}% default interline space + \vtop\bgroup%vtop box + \halign\bgroup&\relax\hfil\@IEEEcurfontRESTORE\relax ##\relax + \hfil\@IEEEcurfontSAVE\@IEEEauthorstrutrule\cr} + +% ensure last line, exit from halign, close vbox +\def\end@IEEEauthorhalign{\crcr\egroup\egroup} + +% handle bogus star form +\def\@IEEEauthorhaligncr{{\ifnum0=`}\fi\@ifstar{\@@IEEEauthorhaligncr}{\@@IEEEauthorhaligncr}} + +% test and setup the optional argument to \\[] +\def\@@IEEEauthorhaligncr{\@testopt\@@@IEEEauthorhaligncr\z@skip} + +% end the line and do the optional spacer +\def\@@@IEEEauthorhaligncr[#1]{\ifnum0=`{\fi}\cr\noalign{\vskip#1\relax}} + + + +% flag to prevent multiple \and warning messages +\newif\if@IEEEWARNand +\@IEEEWARNandtrue + +% if in conference or peerreviewca modes, we support the use of \and as \author is a +% tabular environment, otherwise we warn the user that \and is invalid +% outside of conference or peerreviewca modes. +\def\and{\relax} % provide a bogus \and that we will then override + +\renewcommand{\and}[1][\relax]{\if@IEEEWARNand\typeout{** WARNING: \noexpand\and is valid only + when in conference or peerreviewca}\typeout{modes (line \the\inputlineno).}\fi\global\@IEEEWARNandfalse} + +\ifCLASSOPTIONconference% +\renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}% +\fi +\ifCLASSOPTIONpeerreviewca +\renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}% +\fi +% V1.8 transmag uses conference author format +\ifCLASSOPTIONtransmag +\renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}% +\fi + +% page clearing command +% based on LaTeX2e's \cleardoublepage, but allows different page styles +% for the inserted blank pages +\def\@IEEEcleardoublepage#1{\clearpage\if@twoside\ifodd\c@page\else +\hbox{}\thispagestyle{#1}\newpage\if@twocolumn\hbox{}\thispagestyle{#1}\newpage\fi\fi\fi} + +% V1.8b hooks to allow adjustment of space above title +\def\IEEEtitletopspace{0.5\baselineskip} +% an added extra amount to allow for adjustment/offset +\def\IEEEtitletopspaceextra{0pt} + +% user command to invoke the title page +\def\maketitle{\par% + \begingroup% + \normalfont% + \def\thefootnote{}% the \thanks{} mark type is empty + \def\footnotemark{}% and kill space from \thanks within author + \let\@makefnmark\relax% V1.7, must *really* kill footnotemark to remove all \textsuperscript spacing as well. + \footnotesize% equal spacing between thanks lines + \footnotesep 0.7\baselineskip%see global setting of \footnotesep for more info + % V1.7 disable \thanks note indention for compsoc + \@IEEEcompsoconly{\long\def\@makefntext##1{\parindent 1em\noindent\hbox{\@makefnmark}##1}}% + \normalsize% + \ifCLASSOPTIONpeerreview + \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext% + \thispagestyle{IEEEpeerreviewcoverpagestyle}\@thanks% + \else + \if@twocolumn% + \ifCLASSOPTIONtechnote% + \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext% + \else + \twocolumn[{\IEEEquantizevspace{\@maketitle}[\IEEEquantizedisabletitlecmds]{0pt}[-\topskip]{\baselineskip}{\@IEEENORMtitlevspace}{\@IEEEMINtitlevspace}\@IEEEaftertitletext}]% + \fi + \else + \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext% + \fi + \thispagestyle{IEEEtitlepagestyle}\@thanks% + \fi + % pullup page for pubid if used. + \if@IEEEusingpubid + \enlargethispage{-\@IEEEpubidpullup}% + \fi + \endgroup + \setcounter{footnote}{0}\let\maketitle\relax\let\@maketitle\relax + \gdef\@thanks{}% + % v1.6b do not clear these as we will need the title again for peer review papers + % \gdef\@author{}\gdef\@title{}% + \let\thanks\relax} + + +% V1.8 parbox to format \@IEEEtitleabstractindextext +\long\def\@IEEEtitleabstractindextextbox#1{\parbox{1\textwidth}{#1}} +% V1.8 compsoc is partial width +\ifCLASSOPTIONcompsoc +% comparison with proofs suggests it's in the range of 92.1-92.3% +\long\def\@IEEEtitleabstractindextextbox#1{\parbox{0.922\textwidth}{\@IEEEcompsocnotconfonly{\rightskip\@flushglue\leftskip\z@skip}#1}} +\fi + +% formats the Title, authors names, affiliations and special paper notice +% THIS IS A CONTROLLED SPACING COMMAND! Do not allow blank lines or unintentional +% spaces to enter the definition - use % at the end of each line +\def\@maketitle{\newpage +\bgroup\par\vskip\IEEEtitletopspace\vskip\IEEEtitletopspaceextra\centering% +\ifCLASSOPTIONtechnote% technotes, V1.8a abstract and index terms are not treated differently for compsoc technotes + {\bfseries\large\@IEEEcompsoconly{\Large\sffamily}\@title\par}\vskip 1.3em{\lineskip .5em\@IEEEcompsoconly{\large\sffamily}\@author + \@IEEEspecialpapernotice\par}\relax +\else% not a technote + \vskip0.2em{\Huge\ifCLASSOPTIONtransmag\bfseries\LARGE\fi\@IEEEcompsoconly{\sffamily}\@IEEEcompsocconfonly{\normalfont\normalsize\vskip 2\@IEEEnormalsizeunitybaselineskip + \bfseries\Large}\@IEEEcompsocnotconfonly{\vskip 0.75\@IEEEnormalsizeunitybaselineskip}\@title\par}\relax + \@IEEEcompsocnotconfonly{\vskip 0.5\@IEEEnormalsizeunitybaselineskip}\vskip1.0em\par% + % V1.6 handle \author differently if in conference mode + \ifCLASSOPTIONconference% + {\@IEEEspecialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace% + \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par}\relax + \else% peerreviewca, peerreview or journal + \ifCLASSOPTIONpeerreviewca + % peerreviewca handles author names just like conference mode + {\@IEEEcompsoconly{\sffamily}\@IEEEspecialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace% + \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par + {\@IEEEcompsoconly{\vskip 1.5em\relax + \@IEEEtitleabstractindextextbox{\@IEEEtitleabstractindextext}\par\noindent\hfill + \IEEEcompsocdiamondline\hfill\hbox{}\par}}}\relax + \else% journal, peerreview or transmag + \ifCLASSOPTIONtransmag + % transmag also handles author names just like conference mode + % it also uses \@IEEEtitleabstractindextex, but with one line less + % space above, and one more below + {\@IEEEspecialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace% + \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par + {\vspace{0.5\baselineskip}\relax\@IEEEtitleabstractindextextbox{\@IEEEtitleabstractindextext}\vspace{-1\baselineskip}\par}}\relax + \else% journal or peerreview + {\lineskip.5em\@IEEEcompsoconly{\sffamily}\sublargesize\@author\@IEEEspecialpapernotice\par + {\@IEEEcompsoconly{\vskip 1.5em\relax + \@IEEEtitleabstractindextextbox{\@IEEEtitleabstractindextext}\par\noindent\hfill + \IEEEcompsocdiamondline\hfill\hbox{}\par}}}\relax + \fi + \fi + \fi +\fi\par\addvspace{0.5\baselineskip}\egroup} + + +% V1.7 Computer Society "diamond line" which follows index terms for nonconference papers +% V1.8a full width diamond line for single column use +\def\@IEEEcompsocdiamondlinei{\vrule depth 0pt height 0.5pt width 4cm\nobreak\hspace{7.5pt}\nobreak +\raisebox{-3.5pt}{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\fontsize{11}{12}\selectfont\char70}\nobreak +\hspace{7.5pt}\nobreak\vrule depth 0pt height 0.5pt width 4cm\relax} +% V1.8a narrower width diamond line for double column use +\def\@IEEEcompsocdiamondlineii{\vrule depth 0pt height 0.5pt width 2.5cm\nobreak\hspace{7.5pt}\nobreak +\raisebox{-3.5pt}{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\fontsize{11}{12}\selectfont\char70}\nobreak +\hspace{7.5pt}\nobreak\vrule depth 0pt height 0.5pt width 2.5cm\relax} +% V1.8a bare core without rules to base a last resort on for very narrow linewidths +\def\@IEEEcompsocdiamondlineiii{\mbox{}\nobreak\hspace{7.5pt}\nobreak +\raisebox{-3.5pt}{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\fontsize{11}{12}\selectfont\char70}\nobreak +\hspace{7.5pt}\nobreak\mbox{}\relax} + +% V1.8a allow \IEEEcompsocdiamondline to adjust for different linewidths. +% Use \@IEEEcompsocdiamondlinei if its width is less than 0.66\linewidth (0.487 nominal for single column) +% if not, fall back to \@IEEEcompsocdiamondlineii if its width is less than 0.75\linewidth (0.659 nominal for double column) +% if all else fails, try to make a custom diamondline based on the abnormally narrow linewidth +\def\IEEEcompsocdiamondline{\settowidth{\@IEEEtrantmpdimenA}{\@IEEEcompsocdiamondlinei}\relax +\ifdim\@IEEEtrantmpdimenA<0.66\linewidth\relax\@IEEEcompsocdiamondlinei\relax +\else +\settowidth{\@IEEEtrantmpdimenA}{\@IEEEcompsocdiamondlineii}\relax +\ifdim\@IEEEtrantmpdimenA<0.75\linewidth\relax\@IEEEcompsocdiamondlineii\relax +\else +\settowidth{\@IEEEtrantmpdimenA}{\@IEEEcompsocdiamondlineiii}\relax +\@IEEEtrantmpdimenB=\linewidth\relax +\addtolength{\@IEEEtrantmpdimenB}{-1\@IEEEtrantmpdimenA}\relax +\vrule depth 0pt height 0.5pt width 0.33\@IEEEtrantmpdimenB\@IEEEcompsocdiamondlineiii\vrule depth 0pt height 0.5pt width 0.33\@IEEEtrantmpdimenB\relax +\fi\fi} + + +% V1.7 standard LateX2e \thanks, but with \itshape under compsoc. Also make it a \long\def +% We also need to trigger the one-shot footnote rule +\def\@IEEEtriggeroneshotfootnoterule{\global\@IEEEenableoneshotfootnoteruletrue} + + +\long\def\thanks#1{\footnotemark + \protected@xdef\@thanks{\@thanks + \protect\footnotetext[\the\c@footnote]{\@IEEEcompsoconly{\itshape + \protect\@IEEEtriggeroneshotfootnoterule\relax}\ignorespaces#1}}} +\let\@thanks\@empty + + +% V1.7 allow \author to contain \par's. This is needed to allow \thanks to contain \par. +\long\def\author#1{\gdef\@author{#1}} + + +% in addition to setting up IEEEitemize, we need to remove a baselineskip space above and +% below it because \list's \pars introduce blank lines because of the footnote struts. +\def\@IEEEsetupcompsocitemizelist{\def\labelitemi{$\bullet$}% +\setlength{\IEEElabelindent}{0pt}\setlength{\labelsep}{1.2em}\setlength{\parskip}{0pt}% +\setlength{\partopsep}{0pt}\setlength{\topsep}{0.5\baselineskip}\vspace{-1\baselineskip}\relax} + + +% flag for fake non-compsoc \IEEEcompsocthanksitem - prevents line break on very first item +\newif\if@IEEEbreakcompsocthanksitem \@IEEEbreakcompsocthanksitemfalse + +\ifCLASSOPTIONcompsoc +% V1.7 compsoc bullet item \thanks +% also, we need to redefine this to destroy the argument in \IEEEquantizevspace +\long\def\IEEEcompsocitemizethanks#1{\relax\@IEEEbreakcompsocthanksitemfalse\footnotemark + \protected@xdef\@thanks{\@thanks + \protect\footnotetext[\the\c@footnote]{\itshape\protect\@IEEEtriggeroneshotfootnoterule + {\let\IEEEiedlistdecl\relax\protect\begin{IEEEitemize}[\protect\@IEEEsetupcompsocitemizelist]\ignorespaces#1\relax + \protect\end{IEEEitemize}}\protect\vspace{-1\baselineskip}}}} +\DeclareRobustCommand*{\IEEEcompsocthanksitem}{\item} +\else +% non-compsoc, allow for dual compilation via rerouting to normal \thanks +\long\def\IEEEcompsocitemizethanks#1{\thanks{#1}} +% redirect to "pseudo-par" \hfil\break\indent after swallowing [] from \IEEEcompsocthanksitem[] +\DeclareRobustCommand{\IEEEcompsocthanksitem}{\@ifnextchar [{\@IEEEthanksswallowoptionalarg}% +{\@IEEEthanksswallowoptionalarg[\relax]}} +% be sure and break only after first item, be sure and ignore spaces after optional argument +\def\@IEEEthanksswallowoptionalarg[#1]{\relax\if@IEEEbreakcompsocthanksitem\hfil\break +\indent\fi\@IEEEbreakcompsocthanksitemtrue\ignorespaces} +\fi + + +% V1.6b define the \IEEEpeerreviewmaketitle as needed +\ifCLASSOPTIONpeerreview +\def\IEEEpeerreviewmaketitle{\@IEEEcleardoublepage{empty}% +\ifCLASSOPTIONtwocolumn +\twocolumn[{\IEEEquantizevspace{\@IEEEpeerreviewmaketitle}[\IEEEquantizedisabletitlecmds]{0pt}[-\topskip]{\baselineskip}{\@IEEENORMtitlevspace}{\@IEEEMINtitlevspace}}] +\else +\newpage\@IEEEpeerreviewmaketitle\@IEEEstatictitlevskip +\fi +\thispagestyle{IEEEtitlepagestyle}} +\else +% \IEEEpeerreviewmaketitle does nothing if peer review option has not been selected +\def\IEEEpeerreviewmaketitle{\relax} +\fi + +% peerreview formats the repeated title like the title in journal papers. +\def\@IEEEpeerreviewmaketitle{\bgroup\par\addvspace{0.5\baselineskip}\centering\@IEEEcompsoconly{\sffamily}% +\normalfont\normalsize\vskip0.2em{\Huge\@title\par}\vskip1.0em\par +\par\addvspace{0.5\baselineskip}\egroup} + + + +% V1.6 +% this is a static rubber spacer between the title/authors and the main text +% used for single column text, or when the title appears in the first column +% of two column text (technotes). +\def\@IEEEstatictitlevskip{{\normalfont\normalsize +% adjust spacing to next text +% v1.6b handle peer review papers +\ifCLASSOPTIONpeerreview +% for peer review papers, the same value is used for both title pages +% regardless of the other paper modes + \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip +\else + \ifCLASSOPTIONconference% conference + \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip% + \else% + \ifCLASSOPTIONtechnote% technote + \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip% + \else% journal uses more space + \vskip 2.5\baselineskip plus 0.75\baselineskip minus 0.375\baselineskip% + \fi + \fi +\fi}} + + +% set the nominal and minimum values for the quantized title spacer +% the quantization algorithm will not allow the spacer size to +% become less than \@IEEEMINtitlevspace - instead it will be lengthened +% default to journal values +\def\@IEEENORMtitlevspace{2.5\baselineskip} +\def\@IEEEMINtitlevspace{2\baselineskip} +% conferences and technotes need tighter spacing +\ifCLASSOPTIONconference% conference + \def\@IEEENORMtitlevspace{1\baselineskip} + \def\@IEEEMINtitlevspace{0.75\baselineskip} +\fi +\ifCLASSOPTIONtechnote% technote + \def\@IEEENORMtitlevspace{1\baselineskip} + \def\@IEEEMINtitlevspace{0.75\baselineskip} +\fi + + +% V1.8a +\def\IEEEquantizevspace{\begingroup\@ifstar{\@IEEEquantizevspacestarformtrue\@IEEEquantizevspace}{\@IEEEquantizevspacestarformfalse\@IEEEquantizevspace}} +% \IEEEquantizevspace[output dimen register]{object}[object decl] +% {top baselineskip} +% [offset][prevdepth][lineskip limit][lineskip] +% {unit height}{nominal vspace}{minimum vspace} +% +% Calculates and creates the vspace needed to make the combined height with +% the given object an integer multiple of the given unit height. This command +% is more general than the older \@IEEEdynamictitlevspace it replaces. +% +% The star form has no effect at present, but is reserved for future use. +% +% If the optional argument [output dimen register] is given, the calculated +% vspace height is stored in the given output dimen (or skip) register +% and no other action is taken, otherwise the object followed by a vspace* +% of the appropriate height is evaluated/output. +% +% The optional object decl (declarations) is code that is evaluated just +% before the object's height is evaluated. Its intented purpose is to allow +% for the alteration or disabling of code within the object during internal +% height evaluation (e.g., \long\def\thanks#1{\relax} ). +% This special code is not invoked if/when the object is rendered at the end. +% +% The nominal vspace is the target value of the added vspace and the minimum +% vspace is the lower allowed limit. The vspacer will be the value that achieves +% integral overall height, in terms of the given unit height, that is closest +% to the nominal vspace and that is not less than the specified minimum vspace. +% +% The line spacing algorithm of TeX is somewhat involved and requires special +% care with regard to the first line of a vertical list (which is indicated +% when \prevdepth is -1000pt or less). top baselineskip specifies the +% baselineskip or topskip used prior to the object. If the height of the +% first line of the object is greater than the given top baselineskip, then +% the top baselineskip is subtracted from the height of the first line and +% that difference is considered along with the rest of the object height +% (because the object will be shifted down by an amount = +% top line height - top baselineskip). Otherwise, the height of the first line +% of the object is ignored as far as the calculations are concerned. +% This algorithm is adequate for objects that appear at the top of a page +% (e.g., titles) where \topskip spacing is used. +% +% However, as explained on page 78 of the TeXbook, interline spacing is more +% complex when \baselineskip is being used (indicated by \prevdepth > +% -1000pt). The four optional parameters offset, prevdepth, lineskip limit and +% lineskip are assumed to be equal to be 0pt, \prevdepth, \lineskiplimit and +% \lineskip, respectively, if they are omitted. +% +% The prevdepth is the depth of the line before the object, the lineskip limit +% specifies how close the top of the object can come to the bottom of the +% previous line before \baselineskip is ignored and \lineskip is inserted +% between the object and the line above it. Lineskip does not come into +% play unless the first line of the object is high enough to "get too close" +% (as specified by lineskiplimit) to the line before it. The the prevdepth, +% lineskip limit, and lineskip optional parameters are not needed for the +% first object/line on a page (i.e., prevdepth <= -1000pt) where the simplier +% \topskip spacing rules are in effect. +% +% Offset is a manual adjustment that is added to the height calculations of +% object irrespective of the value of \prevdepth. It is useful when the top +% baselineskip will result in a noninteger unit height object placement even +% if the object itself has integral height. e.g., a footnotesize baselineskip +% is used before the object, thus an offset of, say -3pt, can be given as a +% correction. + +% Common combinations of these parameters include: +% +% top baselineskip: (and default values for offset, prevdepth, etc.) +% \topskip % for objects that appear at the top of a page +% \maxdimen % always ignore the height of the top line +% 0pt % always consider any positive height of the top line +% +% for objects to appear inline in normal text: +% top baselineskip = \baselineskip +% +% set prevdepth = -1000pt and top baselineskip = 0pt to consider the +% overall height of the object without any other external skip +% consideration + +\newif\if@IEEEquantizevspacestarform % flag to indicate star form +\newif\if@IEEEquantizevspaceuseoutdimenreg % flag to indicate output dimen register is to be used +% Use our own private registers because the object could contain a +% structure that uses the existing tmp scratch pad registers +\newdimen\@IEEEquantizeheightA +\newdimen\@IEEEquantizeheightB +\newdimen\@IEEEquantizeheightC +\newdimen\@IEEEquantizeprevdepth % need to save this early as can change +\newcount\@IEEEquantizemultiple +\newbox\@IEEEquantizeboxA + + +\def\@IEEEquantizevspace{\@ifnextchar [{\@IEEEquantizevspaceuseoutdimenregtrue\@@IEEEquantizevspace}{\@IEEEquantizevspaceuseoutdimenregfalse\@@IEEEquantizevspace[]}} + + +\long\def\@@IEEEquantizevspace[#1]#2{\relax +% acquire and store +% #1 optional output dimen register +% #2 object +\edef\@IEEEquantizeoutdimenreg{#1}\relax +% allow for object specifications that contain parameters +\@IEEEtrantmptoksA={#2}\relax +\long\edef\@IEEEquantizeobject{\the\@IEEEtrantmptoksA}\relax +\@ifnextchar [{\@@@IEEEquantizevspace}{\@@@IEEEquantizevspace[\relax]}} + +\long\def\@@@IEEEquantizevspace[#1]#2{\relax +% acquire and store +% [#1] optional object decl, is \relax if not given by user +% #2 top baselineskip +% allow for object decl specifications that have parameters +\@IEEEtrantmptoksA={#1}\relax +\long\edef\@IEEEquantizeobjectdecl{\the\@IEEEtrantmptoksA}\relax +\edef\@IEEEquantizetopbaselineskip{#2}\ivIEEEquantizevspace} + +% acquire optional argument set and store +% [offset][prevdepth][lineskip limit][lineskip] +\def\ivIEEEquantizevspace{\@ifnextchar [{\@vIEEEquantizevspace}{\@vIEEEquantizevspace[0pt]}} +\def\@vIEEEquantizevspace[#1]{\edef\@IEEEquantizeoffset{#1}\@ifnextchar [{\@viIEEEquantizevspace}{\@viIEEEquantizevspace[\prevdepth]}} +\def\@viIEEEquantizevspace[#1]{\@IEEEquantizeprevdepth=#1\relax\@ifnextchar [{\@viiIEEEquantizevspace}{\@viiIEEEquantizevspace[\lineskiplimit]}} +\def\@viiIEEEquantizevspace[#1]{\edef\@IEEEquantizelineskiplimit{#1}\@ifnextchar [{\@viiiIEEEquantizevspace}{\@viiiIEEEquantizevspace[\lineskip]}} +\def\@viiiIEEEquantizevspace[#1]{\edef\@IEEEquantizelineskip{#1}\@ixIEEEquantizevspace} + +% main routine +\def\@ixIEEEquantizevspace#1#2#3{\relax +\edef\@IEEEquantizeunitheight{#1}\relax +\edef\@IEEEquantizenomvspace{#2}\relax +\edef\@IEEEquantizeminvspace{#3}\relax +% \@IEEEquantizeoutdimenreg +% \@IEEEquantizeobject +% \@IEEEquantizeobjectdecl +% \@IEEEquantizetopbaselineskip +% \@IEEEquantizeoffset +% \@IEEEquantizeprevdepth +% \@IEEEquantizelineskiplimit +% \@IEEEquantizelineskip +% \@IEEEquantizeunitheight +% \@IEEEquantizenomvspace +% \@IEEEquantizeminvspace +% get overall height of object +\setbox\@IEEEquantizeboxA\vbox{\begingroup\@IEEEquantizeobjectdecl\@IEEEquantizeobject\relax\endgroup}\relax +\@IEEEquantizeheightA\ht\@IEEEquantizeboxA\relax +% get height of first line of object +\setbox\@IEEEquantizeboxA\vtop{\begingroup\@IEEEquantizeobjectdecl\@IEEEquantizeobject\relax\endgroup}\relax +\@IEEEquantizeheightB\ht\@IEEEquantizeboxA\relax +\ifdim\@IEEEquantizeprevdepth>-1000pt\relax % prevdepth > -1000pf means full baselineskip\lineskip rules in effect +% lineskip spacing rule takes effect if height of top line > baselineskip - prevdepth - lineskiplimit, +% otherwise the baselineskip rule is in effect and the height of the first line does not matter at all. +\@IEEEquantizeheightC=\@IEEEquantizetopbaselineskip\relax +\advance\@IEEEquantizeheightC-\@IEEEquantizeprevdepth\relax +\advance\@IEEEquantizeheightC-\@IEEEquantizelineskiplimit\relax % this works even though \@IEEEquantizelineskiplimit is a macro because TeX allows --10pt notation +\ifdim\@IEEEquantizeheightB>\@IEEEquantizeheightC\relax +% lineskip spacing rule is in effect i.e., the object is going to be shifted down relative to the +% baselineskip set position by its top line height (already a part of the total height) + prevdepth + lineskip - baselineskip +\advance\@IEEEquantizeheightA\@IEEEquantizeprevdepth\relax +\advance\@IEEEquantizeheightA\@IEEEquantizelineskip\relax +\advance\@IEEEquantizeheightA-\@IEEEquantizetopbaselineskip\relax +\else +% height of first line <= \@IEEEquantizetopbaselineskip - \@IEEEquantizeprevdepth - \@IEEEquantizelineskiplimit +% standard baselineskip rules are in effect, so don't consider height of first line +\advance\@IEEEquantizeheightA-\@IEEEquantizeheightB\relax +\fi +% +\else % prevdepth <= -1000pt, simplier \topskip type rules in effect +\ifdim\@IEEEquantizeheightB>\@IEEEquantizetopbaselineskip +% height of top line (already included in the total height) in excess of +% baselineskip is the amount it will be downshifted +\advance\@IEEEquantizeheightA-\@IEEEquantizetopbaselineskip\relax +\else +% height of first line is irrelevant, remove it +\advance\@IEEEquantizeheightA-\@IEEEquantizeheightB\relax +\fi +\fi % prevdepth <= -1000pt +% +% adjust height for any manual offset +\advance\@IEEEquantizeheightA\@IEEEquantizeoffset\relax +% add in nominal spacer +\advance\@IEEEquantizeheightA\@IEEEquantizenomvspace\relax +% check for nonzero unitheight +\@IEEEquantizeheightB=\@IEEEquantizeunitheight\relax +\ifnum\@IEEEquantizeheightB=0\relax +\@IEEEclspkgerror{IEEEquantizevspace unit height cannot be zero. Assuming 10pt.}% +{Division by zero is not allowed.} +\@IEEEquantizeheightB=10pt\relax +\fi +% get integer number of lines +\@IEEEquantizemultiple=\@IEEEquantizeheightA\relax +\divide\@IEEEquantizemultiple\@IEEEquantizeheightB\relax +% set A to contain the excess height over the \@IEEEquantizemultiple of lines +% A = height - multiple*unitheight +\@IEEEquantizeheightC\@IEEEquantizeheightB\relax +\multiply\@IEEEquantizeheightC\@IEEEquantizemultiple\relax +\advance\@IEEEquantizeheightA-\@IEEEquantizeheightC\relax +% set B to contain the height short of \@IEEEquantizemultiple+1 of lines +% B = unitheight - A +\advance\@IEEEquantizeheightB-\@IEEEquantizeheightA\relax +% choose A or B based on which is closer +\@IEEEquantizeheightC\@IEEEquantizenomvspace\relax +\ifdim\@IEEEquantizeheightA<\@IEEEquantizeheightB\relax +% C = nomvspace - A, go with lower +\advance\@IEEEquantizeheightC-\@IEEEquantizeheightA\relax +\else +% C = nomvspace + B, go with upper +\advance\@IEEEquantizeheightC\@IEEEquantizeheightB\relax +\fi +% if violate lower bound, use next integer bound +\ifdim\@IEEEquantizeheightC<\@IEEEquantizeminvspace\relax +% A + B = unitheight +\advance\@IEEEquantizeheightC\@IEEEquantizeheightA\relax +\advance\@IEEEquantizeheightC\@IEEEquantizeheightB\relax +\fi +% export object and spacer outside of group +\global\let\@IEEEquantizeobjectout\@IEEEquantizeobject\relax +\global\@IEEEquantizeheightC\@IEEEquantizeheightC\relax +\endgroup +\if@IEEEquantizevspaceuseoutdimenreg +\@IEEEquantizeoutdimenreg=\@IEEEquantizeheightC\relax +\else +\@IEEEquantizeobjectout\relax +\vskip\@IEEEquantizeheightC\relax +\fi} + + +% user command to disable all global assignments, possible use within object decl +\def\IEEEquantizedisableglobal{\let\global\relax +\let\gdef\def +\let\xdef\edef} +% user command to allow for the disabling of \thanks and other commands, possible use within object decl +\def\IEEEquantizedisabletitlecmds{\long\def\thanks##1{\relax}\relax +\long\def\IEEEcompsocitemizethanks##1{\relax}\def\newpage{\relax}} + + + + + +% V1.6 +% we allow the user access to the last part of the title area +% useful in emergencies such as when a different spacing is needed +% This text is NOT compensated for in the dynamic sizer. +\let\@IEEEaftertitletext=\relax +\long\def\IEEEaftertitletext#1{\def\@IEEEaftertitletext{#1}} + + +% V1.7 provide a way for users to enter abstract and keywords +% into the onecolumn title are. This text is compensated for +% in the dynamic sizer. +\let\@IEEEtitleabstractindextext=\relax +\long\def\IEEEtitleabstractindextext#1{\def\@IEEEtitleabstractindextext{#1}} + +% V1.7 provide a way for users to get the \@IEEEtitleabstractindextext if +% not in compsoc or transmag journal mode - this way abstract and keywords +% can still be placed in their conventional position if not in those modes. +\def\IEEEdisplaynontitleabstractindextext{% +% display for all conference formats +\ifCLASSOPTIONconference\@IEEEtitleabstractindextext\relax +\else% non-conferences + % V1.8a display for all technotes + \ifCLASSOPTIONtechnote\@IEEEtitleabstractindextext\relax + % V1.8a add diamond line after abstract and index terms for compsoc technotes + \@IEEEcompsoconly{\noindent\hfill\IEEEcompsocdiamondline\hfill\hbox{}\par}\relax + \else % non-conferences and non-technotes + \ifCLASSOPTIONcompsoc% display if not compsoc and not transmag + \else + \ifCLASSOPTIONtransmag + \else% not compsoc journal nor transmag journal + \@IEEEtitleabstractindextext\relax + \fi + \fi + \fi +\fi} + + +% command to allow alteration of baselinestretch, but only if the current +% baselineskip is unity. Used to tweak the compsoc abstract and keywords line spacing. +\def\@IEEEtweakunitybaselinestretch#1{{\def\baselinestretch{1}\selectfont +\global\@tempskipa\baselineskip}\ifnum\@tempskipa=\baselineskip% +\def\baselinestretch{#1}\selectfont\fi\relax} + + +% abstract and keywords are in \small, except +% for 9pt docs in which they are in \footnotesize +% Because 9pt docs use an 8pt footnotesize, \small +% becomes a rather awkward 8.5pt +\def\@IEEEabskeysecsize{\small} +\ifx\CLASSOPTIONpt\@IEEEptsizenine + \def\@IEEEabskeysecsize{\footnotesize} +\fi + +% compsoc journals use \footnotesize, compsoc conferences use normalsize +\@IEEEcompsoconly{\def\@IEEEabskeysecsize{\footnotesize}} +\@IEEEcompsocconfonly{\def\@IEEEabskeysecsize{\small}} + + +% V1.6 have abstract and keywords strip leading spaces, pars and newlines +% so that spacing is more tightly controlled. +\def\abstract{\normalfont + \if@twocolumn + \@IEEEabskeysecsize\bfseries\textit{\abstractname}---\relax + \else + \bgroup\par\addvspace{0.5\baselineskip}\centering\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{\abstractname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize + \fi\@IEEEgobbleleadPARNLSP} +% V1.6 The IEEE wants only 1 pica from end of abstract to introduction heading when in +% conference mode (the heading already has this much above it) +\def\endabstract{\relax\ifCLASSOPTIONconference\vspace{0ex}\else\vspace{1.34ex}\fi\par\if@twocolumn\else\endquotation\fi + \normalfont\normalsize} + +\def\IEEEkeywords{\normalfont + \if@twocolumn + \@IEEEabskeysecsize\bfseries\textit{\IEEEkeywordsname}---\relax + \else + \bgroup\par\addvspace{0.5\baselineskip}\centering\@IEEEabskeysecsize\textbf{\IEEEkeywordsname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize + \fi\@IEEEgobbleleadPARNLSP} +\def\endIEEEkeywords{\relax\ifCLASSOPTIONtechnote\vspace{1.34ex}\else\vspace{0.67ex}\fi + \par\if@twocolumn\else\endquotation\fi% + \normalfont\normalsize} + +% V1.7 compsoc keywords index terms +\ifCLASSOPTIONcompsoc + \ifCLASSOPTIONconference% compsoc conference +\def\abstract{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\bfseries + \if@twocolumn + \@IEEEabskeysecsize\noindent\textit{\abstractname}---\relax + \else + \bgroup\par\addvspace{0.5\baselineskip}\centering\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{\abstractname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize% + \fi\@IEEEgobbleleadPARNLSP} +\def\IEEEkeywords{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\bfseries + \if@twocolumn + \@IEEEabskeysecsize\vskip 0.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip\noindent + \textit{\IEEEkeywordsname}---\relax + \else + \bgroup\par\addvspace{0.5\baselineskip}\centering\@IEEEabskeysecsize\textbf{\IEEEkeywordsname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize% + \fi\@IEEEgobbleleadPARNLSP} + \else% compsoc not conference +\def\abstract{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\sffamily + \if@twocolumn + \@IEEEabskeysecsize\noindent\textbf{\abstractname}---\relax + \else + \bgroup\par\addvspace{0.5\baselineskip}\centering\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{\abstractname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize% + \fi\@IEEEgobbleleadPARNLSP} +\def\IEEEkeywords{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\sffamily + \if@twocolumn + \@IEEEabskeysecsize\vskip 0.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip\noindent + \textbf{\IEEEkeywordsname}---\relax + \else + \bgroup\par\addvspace{0.5\baselineskip}\centering\@IEEEabskeysecsize\textbf{\IEEEkeywordsname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize% + \fi\@IEEEgobbleleadPARNLSP} + \fi +\fi + +% V1.8 transmag keywords index terms +% no abstract name, use indentation +\ifCLASSOPTIONtransmag +\def\abstract{\normalfont\parindent 1em\relax + \if@twocolumn + \@IEEEabskeysecsize\bfseries\indent + \else + \bgroup\par\addvspace{0.5\baselineskip}\centering\vspace{-1.78ex}\@IEEEabskeysecsize + \textbf{\abstractname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize + \fi\@IEEEgobbleleadPARNLSP} + +\def\IEEEkeywords{\normalfont\parindent 1em\relax + \if@twocolumn + \@IEEEabskeysecsize\vspace{1\baselineskip}\bfseries\indent\textit{\IEEEkeywordsname}---\relax + \else + \bgroup\par\vspace{1\baselineskip}\centering\@IEEEabskeysecsize + \textbf{\IEEEkeywordsname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize + \fi\@IEEEgobbleleadPARNLSP} +\fi + + + +% gobbles all leading \, \\ and \par, upon finding first token that +% is not a \ , \\ or a \par, it ceases and returns that token +% +% used to strip leading \, \\ and \par from the input +% so that such things in the beginning of an environment will not +% affect the formatting of the text +\long\def\@IEEEgobbleleadPARNLSP#1{\let\@IEEEswallowthistoken=0% +\let\@IEEEgobbleleadPARNLSPtoken#1% +\let\@IEEEgobbleleadPARtoken=\par% +\let\@IEEEgobbleleadNLtoken=\\% +\let\@IEEEgobbleleadSPtoken=\ % +\def\@IEEEgobbleleadSPMACRO{\ }% +\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadPARtoken% +\let\@IEEEswallowthistoken=1% +\fi% +\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadNLtoken% +\let\@IEEEswallowthistoken=1% +\fi% +\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadSPtoken% +\let\@IEEEswallowthistoken=1% +\fi% +% a control space will come in as a macro +% when it is the last one on a line +\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadSPMACRO% +\let\@IEEEswallowthistoken=1% +\fi% +% if we have to swallow this token, do so and taste the next one +% else spit it out and stop gobbling +\ifx\@IEEEswallowthistoken 1\let\@IEEEnextgobbleleadPARNLSP=\@IEEEgobbleleadPARNLSP\else% +\let\@IEEEnextgobbleleadPARNLSP=#1\fi% +\@IEEEnextgobbleleadPARNLSP}% + + + + +% TITLING OF SECTIONS +\def\@IEEEsectpunct{:\ \,} % Punctuation after run-in section heading (headings which are + % part of the paragraphs), need little bit more than a single space + % spacing from section number to title +% compsoc conferences use regular period/space punctuation +\ifCLASSOPTIONcompsoc +\ifCLASSOPTIONconference +\def\@IEEEsectpunct{.\ } +\fi\fi + + +\def\@seccntformat#1{\csname the#1dis\endcsname\hskip 0.5em\relax} + +\ifCLASSOPTIONcompsoc +% compsoc journals need extra spacing +\ifCLASSOPTIONconference\else +\def\@seccntformat#1{\csname the#1dis\endcsname\hskip 1em\relax} +\fi\fi + +%v1.7 put {} after #6 to allow for some types of user font control +%and use \@@par rather than \par +\def\@sect#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + % load section label and spacer into \@svsec + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi% + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@% tempskipa determines whether is treated as a high + \begingroup #6{\relax% or low level heading + \noindent % subsections are NOT indented + % print top level headings. \@svsec is label, #8 is heading title + % The IEEE does not block indent the section title text, it flows like normal + {\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\@@par}}% + \endgroup + \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\relax\else + \protect\numberline{\csname the#1\endcsname}\fi#7}% + \else % printout low level headings + % svsechd seems to swallow the trailing space, protect it with \mbox{} + % got rid of sectionmark stuff + \def\@svsechd{#6{\hskip #3\relax\@svsec #8\@IEEEsectpunct\mbox{}}% + \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\relax\else + \protect\numberline{\csname the#1\endcsname}\fi#7}}% + \fi%skip down + \@xsect{#5}} + + +% section* handler +%v1.7 put {} after #4 to allow for some types of user font control +%and use \@@par rather than \par +\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + %\begingroup #4\@hangfrom{\hskip #1}{\interlinepenalty \@M #5\par}\endgroup + % The IEEE does not block indent the section title text, it flows like normal + \begingroup \noindent #4{\relax{\hskip #1}{\interlinepenalty \@M #5\@@par}}\endgroup + % svsechd swallows the trailing space, protect it with \mbox{} + \else \def\@svsechd{#4{\hskip #1\relax #5\@IEEEsectpunct\mbox{}}}\fi + \@xsect{#3}} + + +%% SECTION heading spacing and font +%% +% arguments are: #1 - sectiontype name +% (for \@sect) #2 - section level +% #3 - section heading indent +% #4 - top separation (absolute value used, neg indicates not to indent main text) +% If negative, make stretch parts negative too! +% #5 - (absolute value used) positive: bottom separation after heading, +% negative: amount to indent main text after heading +% Both #4 and #5 negative means to indent main text and use negative top separation +% #6 - font control +% You've got to have \normalfont\normalsize in the font specs below to prevent +% trouble when you do something like: +% \section{Note}{\ttfamily TT-TEXT} is known to ... +% The IEEE sometimes REALLY stretches the area before a section +% heading by up to about 0.5in. However, it may not be a good +% idea to let LaTeX have quite this much rubber. +\ifCLASSOPTIONconference% +% The IEEE wants section heading spacing to decrease for conference mode +\def\section{\@startsection{section}{1}{\z@}{1.5ex plus 1.5ex minus 0.5ex}% +{0.7ex plus 1ex minus 0ex}{\normalfont\normalsize\centering\scshape}}% +\def\subsection{\@startsection{subsection}{2}{\z@}{1.5ex plus 1.5ex minus 0.5ex}% +{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}% +\else % for journals +\def\section{\@startsection{section}{1}{\z@}{3.0ex plus 1.5ex minus 1.5ex}% V1.6 3.0ex from 3.5ex +{0.7ex plus 1ex minus 0ex}{\normalfont\normalsize\centering\scshape}}% +\def\subsection{\@startsection{subsection}{2}{\z@}{3.5ex plus 1.5ex minus 1.5ex}% +{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}% +\fi + +% for both journals and conferences +% decided to put in a little rubber above the section, might help somebody +\def\subsubsection{\@startsection{subsubsection}{3}{\parindent}{0ex plus 0.1ex minus 0.1ex}% +{0ex}{\normalfont\normalsize\itshape}}% +\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{0ex plus 0.1ex minus 0.1ex}% +{0ex}{\normalfont\normalsize\itshape}}% + + +% compsoc +\ifCLASSOPTIONcompsoc +\ifCLASSOPTIONconference +% compsoc conference +\def\section{\@startsection{section}{1}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}% +{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}{\normalfont\large\bfseries}}% +\def\subsection{\@startsection{subsection}{2}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}% +{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}{\normalfont\sublargesize\bfseries}}% +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}% +{0ex}{\normalfont\normalsize\bfseries}}% +\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{0ex plus 0.1ex minus 0.1ex}% +{0ex}{\normalfont\normalsize}}% +\else% compsoc journals +% use negative top separation as compsoc journals do not indent paragraphs after section titles +\def\section{\@startsection{section}{1}{\z@}{-3.5ex plus -2ex minus -1.5ex}% +{0.7ex plus 1ex minus 0ex}{\normalfont\sublargesize\sffamily\bfseries\scshape}}% +% Note that subsection and smaller may not be correct for the Computer Society, +% I have to look up an example. +\def\subsection{\@startsection{subsection}{2}{\z@}{-3.5ex plus -1.5ex minus -1.5ex}% +{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\sffamily\bfseries}}% +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-2.5ex plus -1ex minus -1ex}% +{0.5ex plus 0.5ex minus 0ex}{\normalfont\normalsize\sffamily\itshape}}% +\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{-0ex plus -0.1ex minus -0.1ex}% +{0ex}{\normalfont\normalsize}}% +\fi\fi + +% transmag +\ifCLASSOPTIONtransmag +\def\subsection{\@startsection{subsection}{2}{0.75\parindent}{3.5ex plus 1.5ex minus 1.5ex}% +{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}% +\def\subsubsection{\@startsection{subsubsection}{3}{1.25\parindent}{0.1ex plus 0.1ex minus 0.1ex}% +{0.1ex}{\normalfont\normalsize\itshape}}% +\fi + + +% V1.8a provide for a raised line Introduction section for use with Computer +% Society papers. We have to remove any spacing glue after the section +% heading and then remove the blank line for the new paragraph after it. +% LaTeX's section handler alters \everypar and we need to propogate those +% changes outside of the \parbox lest there be spacing problems at the top +% of the next section. +\def\IEEEraisesectionheading#1{\noindent\raisebox{1.5\baselineskip}[0pt][0pt]{\parbox[b]{\columnwidth}{#1\unskip\global\everypar=\everypar}}\vspace{-1\baselineskip}\vspace{-\parskip}\par} + + + +%% ENVIRONMENTS +% "box" symbols at end of proofs +\def\IEEEQEDclosed{\mbox{\rule[0pt]{1.3ex}{1.3ex}}} % for a filled box +% V1.6 some journals use an open box instead that will just fit around a closed one +\def\IEEEQEDopen{{\setlength{\fboxsep}{0pt}\setlength{\fboxrule}{0.2pt}\fbox{\rule[0pt]{0pt}{1.3ex}\rule[0pt]{1.3ex}{0pt}}}} +\ifCLASSOPTIONcompsoc +\def\IEEEQED{\IEEEQEDopen} % default to open for compsoc +\else +\def\IEEEQED{\IEEEQEDclosed} % otherwise default to closed +\fi + +%V1.8 flag to indicate if QED symbol is to be shown +\newif\if@IEEEQEDshow \@IEEEQEDshowtrue +\def\IEEEproofindentspace{2\parindent}% V1.8 allow user to change indentation amount if desired +% v1.7 name change to avoid namespace collision with amsthm. Also add support +% for an optional argument. +\def\IEEEproof{\@ifnextchar[{\@IEEEproof}{\@IEEEproof[\IEEEproofname]}} +\def\@IEEEproof[#1]{\@IEEEQEDshowtrue\par\noindent\hspace{\IEEEproofindentspace}{\itshape #1: }} +\def\endIEEEproof{\if@IEEEQEDshow\hspace*{\fill}\nobreakspace\IEEEQED\fi\par} +% qedhere for equation environments, similar to AMS \qedhere +\def\IEEEQEDhereeqn{\global\@IEEEQEDshowfalse\eqno\let\eqno\relax\let\leqno\relax + \let\veqno\relax\hbox{\IEEEQED}} +% IEEE style qedhere for IEEEeqnarray and other environments +\def\IEEEQEDhere{\global\@IEEEQEDshowfalse\IEEEQED} +% command to disable QED at end of IEEEproof +\def\IEEEQEDoff{\global\@IEEEQEDshowfalse} + + +%\itemindent is set to \z@ by list, so define new temporary variable +\newdimen\@IEEEtmpitemindent + +\ifCLASSOPTIONcompsoc +% V1.8a compsoc uses bold theorem titles, a period instead of a colon, vertical spacing, and hanging indentation +% V1.8 allow long theorem names to break across lines. +% Thanks to Miquel Payaro for reporting this. +\def\@begintheorem#1#2{\@IEEEtmpitemindent\itemindent\relax + \topsep 0.2\@IEEEnormalsizeunitybaselineskip plus 0.26\@IEEEnormalsizeunitybaselineskip minus 0.05\@IEEEnormalsizeunitybaselineskip + \rmfamily\trivlist\hangindent\parindent% + \item[]\textit{\bfseries\noindent #1\ #2.} \itemindent\@IEEEtmpitemindent\relax} +\def\@opargbegintheorem#1#2#3{\@IEEEtmpitemindent\itemindent\relax +\topsep 0.2\@IEEEnormalsizeunitybaselineskip plus 0.26\@IEEEnormalsizeunitybaselineskip minus 0.05\@IEEEnormalsizeunitybaselineskip +\rmfamily\trivlist\hangindent\parindent% +% V1.6 The IEEE is back to using () around theorem names which are also in italics +% Thanks to Christian Peel for reporting this. + \item[]\textit{\bfseries\noindent #1\ #2\ (#3).} \itemindent\@IEEEtmpitemindent\relax} +% V1.7 remove bogus \unskip that caused equations in theorems to collide with +% lines below. +\def\@endtheorem{\endtrivlist\vskip 0.25\@IEEEnormalsizeunitybaselineskip plus 0.26\@IEEEnormalsizeunitybaselineskip minus 0.05\@IEEEnormalsizeunitybaselineskip} +\else +% +% noncompsoc +% +% V1.8 allow long theorem names to break across lines. +% Thanks to Miquel Payaro for reporting this. +\def\@begintheorem#1#2{\@IEEEtmpitemindent\itemindent\relax\topsep 0pt\rmfamily\trivlist% + \item[]\textit{\indent #1\ #2:} \itemindent\@IEEEtmpitemindent\relax} +\def\@opargbegintheorem#1#2#3{\@IEEEtmpitemindent\itemindent\relax\topsep 0pt\rmfamily \trivlist% +% V1.6 The IEEE is back to using () around theorem names which are also in italics +% Thanks to Christian Peel for reporting this. + \item[]\textit{\indent #1\ #2\ (#3):} \itemindent\@IEEEtmpitemindent\relax} +% V1.7 remove bogus \unskip that caused equations in theorems to collide with +% lines below. +\def\@endtheorem{\endtrivlist} +\fi + + + +% V1.6 +% display command for the section the theorem is in - so that \thesection +% is not used as this will be in Roman numerals when we want arabic. +% LaTeX2e uses \def\@thmcounter#1{\noexpand\arabic{#1}} for the theorem number +% (second part) display and \def\@thmcountersep{.} as a separator. +% V1.7 intercept calls to the section counter and reroute to \@IEEEthmcounterinsection +% to allow \appendix(ices} to override as needed. +% +% special handler for sections, allows appendix(ices) to override +\gdef\@IEEEthmcounterinsection#1{\arabic{#1}} +% string macro +\edef\@IEEEstringsection{section} + +% redefine the #1#2[#3] form of newtheorem to use a hook to \@IEEEthmcounterinsection +% if section in_counter is used +\def\@xnthm#1#2[#3]{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}\@newctr{#1}[#3]% + \edef\@IEEEstringtmp{#3} + \ifx\@IEEEstringtmp\@IEEEstringsection + \expandafter\xdef\csname the#1\endcsname{% + \noexpand\@IEEEthmcounterinsection{#3}\@thmcountersep + \@thmcounter{#1}}% + \else + \expandafter\xdef\csname the#1\endcsname{% + \expandafter\noexpand\csname the#3\endcsname \@thmcountersep + \@thmcounter{#1}}% + \fi + \global\@namedef{#1}{\@thm{#1}{#2}}% + \global\@namedef{end#1}{\@endtheorem}}} + + + +%% SET UP THE DEFAULT PAGESTYLE +\pagestyle{headings} +\pagenumbering{arabic} + +% normally the page counter starts at 1 +\setcounter{page}{1} +% however, for peerreview the cover sheet is page 0 or page -1 +% (for duplex printing) +\ifCLASSOPTIONpeerreview + \if@twoside + \setcounter{page}{-1} + \else + \setcounter{page}{0} + \fi +\fi + +% standard book class behavior - let bottom line float up and down as +% needed when single sided +\ifCLASSOPTIONtwoside\else\raggedbottom\fi +% if two column - turn on twocolumn, allow word spacings to stretch more and +% enforce a rigid position for the last lines +\ifCLASSOPTIONtwocolumn +% the peer review option delays invoking twocolumn + \ifCLASSOPTIONpeerreview\else + \twocolumn + \fi +\sloppy +\flushbottom +\fi + + + + +% \APPENDIX and \APPENDICES definitions + +% This is the \@ifmtarg command from the LaTeX ifmtarg package +% by Peter Wilson (CUA) and Donald Arseneau +% \@ifmtarg is used to determine if an argument to a command +% is present or not. +% For instance: +% \@ifmtarg{#1}{\typeout{empty}}{\typeout{has something}} +% \@ifmtarg is used with our redefined \section command if +% \appendices is invoked. +% The command \section will behave slightly differently depending +% on whether the user specifies a title: +% \section{My appendix title} +% or not: +% \section{} +% This way, we can eliminate the blank lines where the title +% would be, and the unneeded : after Appendix in the table of +% contents +\begingroup +\catcode`\Q=3 +\long\gdef\@ifmtarg#1{\@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil} +\long\gdef\@xifmtarg#1#2Q#3#4#5\@nil{#4} +\endgroup +% end of \@ifmtarg defs + + +% V1.7 +% command that allows the one time saving of the original definition +% of section to \@IEEEappendixsavesection for \appendix or \appendices +% we don't save \section here as it may be redefined later by other +% packages (hyperref.sty, etc.) +\def\@IEEEsaveoriginalsectiononce{\let\@IEEEappendixsavesection\section +\let\@IEEEsaveoriginalsectiononce\relax} + +% neat trick to grab and process the argument from \section{argument} +% we process differently if the user invoked \section{} with no +% argument (title) +% note we reroute the call to the old \section* +\def\@IEEEprocessthesectionargument#1{% +\@ifmtarg{#1}{% +\@IEEEappendixsavesection*{\appendixname\nobreakspace\thesectiondis}% +\addcontentsline{toc}{section}{\appendixname\nobreakspace\thesection}}{% +\@IEEEappendixsavesection*{\appendixname\nobreakspace\thesectiondis\\* #1}% +\addcontentsline{toc}{section}{\appendixname\nobreakspace\thesection: #1}}} + +% we use this if the user calls \section{} after +% \appendix-- which has no meaning. So, we ignore the +% command and its argument. Then, warn the user. +\def\@IEEEdestroythesectionargument#1{\typeout{** WARNING: Ignoring useless +\protect\section\space in Appendix (line \the\inputlineno).}} + + +% remember \thesection forms will be displayed in \ref calls +% and in the Table of Contents. +% The \sectiondis form is used in the actual heading itself + +% appendix command for one single appendix +% normally has no heading. However, if you want a +% heading, you can do so via the optional argument: +% \appendix[Optional Heading] +\def\appendix{\relax} +\renewcommand{\appendix}[1][]{\@IEEEsaveoriginalsectiononce\par + % v1.6 keep hyperref's identifiers unique + \gdef\theHsection{Appendix.A}% + % v1.6 adjust hyperref's string name for the section + \xdef\Hy@chapapp{appendix}% + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{subsubsection}{0}% + \setcounter{paragraph}{0}% + \gdef\thesection{A}% + \gdef\thesectiondis{}% + \gdef\thesubsection{\Alph{subsection}}% + \gdef\@IEEEthmcounterinsection##1{A} + \refstepcounter{section}% update the \ref counter + \@ifmtarg{#1}{\@IEEEappendixsavesection*{\appendixname}% + \addcontentsline{toc}{section}{\appendixname}}{% + \@IEEEappendixsavesection*{\appendixname\nobreakspace\\* #1}% + \addcontentsline{toc}{section}{\appendixname: #1}}% + % redefine \section command for appendix + % leave \section* as is + \def\section{\@ifstar{\@IEEEappendixsavesection*}{% + \@IEEEdestroythesectionargument}}% throw out the argument + % of the normal form +} + + + +% appendices command for multiple appendices +% user then calls \section with an argument (possibly empty) to +% declare the individual appendices +\def\appendices{\@IEEEsaveoriginalsectiononce\par + % v1.6 keep hyperref's identifiers unique + \gdef\theHsection{Appendix.\Alph{section}}% + % v1.6 adjust hyperref's string name for the section + \xdef\Hy@chapapp{appendix}% + \setcounter{section}{-1}% we want \refstepcounter to use section 0 + \setcounter{subsection}{0}% + \setcounter{subsubsection}{0}% + \setcounter{paragraph}{0}% + \ifCLASSOPTIONromanappendices% + \gdef\thesection{\Roman{section}}% + \gdef\thesectiondis{\Roman{section}}% + \@IEEEcompsocconfonly{\gdef\thesectiondis{\Roman{section}.}}% + \gdef\@IEEEthmcounterinsection##1{A\arabic{##1}} + \else% + \gdef\thesection{\Alph{section}}% + \gdef\thesectiondis{\Alph{section}}% + \@IEEEcompsocconfonly{\gdef\thesectiondis{\Alph{section}.}}% + \gdef\@IEEEthmcounterinsection##1{\Alph{##1}} + \fi% + \refstepcounter{section}% update the \ref counter + \setcounter{section}{0}% NEXT \section will be the FIRST appendix + % redefine \section command for appendices + % leave \section* as is + \def\section{\@ifstar{\@IEEEappendixsavesection*}{% process the *-form + \refstepcounter{section}% or is a new section so, + \@IEEEprocessthesectionargument}}% process the argument + % of the normal form +} + + + +% V1.7 compoc uses nonbold drop cap and small caps word style +\ifCLASSOPTIONcompsoc + \def\IEEEPARstartFONTSTYLE{\mdseries} + \def\IEEEPARstartWORDFONTSTYLE{\scshape} + \def\IEEEPARstartWORDCAPSTYLE{\relax} +\fi +% +% +% \IEEEPARstart +% Definition for the big two line drop cap letter at the beginning of the +% first paragraph of journal papers. The first argument is the first letter +% of the first word, the second argument is the remaining letters of the +% first word which will be rendered in upper case. +% In V1.6 this has been completely rewritten to: +% +% 1. no longer have problems when the user begins an environment +% within the paragraph that uses \IEEEPARstart. +% 2. auto-detect and use the current font family +% 3. revise handling of the space at the end of the first word so that +% interword glue will now work as normal. +% 4. produce correctly aligned edges for the (two) indented lines. +% +% We generalize things via control macros - playing with these is fun too. +% +% V1.7 added more control macros to make it easy for IEEEtrantools.sty users +% to change the font style. +% +% the number of lines that are indented to clear it +% may need to increase if using decenders +\providecommand{\IEEEPARstartDROPLINES}{2} +% minimum number of lines left on a page to allow a \@IEEEPARstart +% Does not take into consideration rubber shrink, so it tends to +% be overly cautious +\providecommand{\IEEEPARstartMINPAGELINES}{2} +% V1.7 the height of the drop cap is adjusted to match the height of this text +% in the current font (when \IEEEPARstart is called). +\providecommand{\IEEEPARstartHEIGHTTEXT}{T} +% the depth the letter is lowered below the baseline +% the height (and size) of the letter is determined by the sum +% of this value and the height of the \IEEEPARstartHEIGHTTEXT in the current +% font. It is a good idea to set this value in terms of the baselineskip +% so that it can respond to changes therein. +\providecommand{\IEEEPARstartDROPDEPTH}{1.1\baselineskip} +% V1.7 the font the drop cap will be rendered in, +% can take zero or one argument. +\providecommand{\IEEEPARstartFONTSTYLE}{\bfseries} +% V1.7 any additional, non-font related commands needed to modify +% the drop cap letter, can take zero or one argument. +\providecommand{\IEEEPARstartCAPSTYLE}{\MakeUppercase} +% V1.7 the font that will be used to render the rest of the word, +% can take zero or one argument. +\providecommand{\IEEEPARstartWORDFONTSTYLE}{\relax} +% V1.7 any additional, non-font related commands needed to modify +% the rest of the word, can take zero or one argument. +\providecommand{\IEEEPARstartWORDCAPSTYLE}{\MakeUppercase} +% This is the horizontal separation distance from the drop letter to the main text. +% Lengths that depend on the font (e.g., ex, em, etc.) will be referenced +% to the font that is active when \IEEEPARstart is called. +\providecommand{\IEEEPARstartSEP}{0.15em} +% V1.7 horizontal offset applied to the left of the drop cap. +\providecommand{\IEEEPARstartHOFFSET}{0em} +% V1.7 Italic correction command applied at the end of the drop cap. +\providecommand{\IEEEPARstartITLCORRECT}{\/} + +% width of the letter output, set globally. Can be used in \IEEEPARstartSEP +% or \IEEEPARstartHOFFSET, but not the height lengths. +\newdimen\IEEEPARstartletwidth +\IEEEPARstartletwidth 0pt\relax + +% definition of \IEEEPARstart +% THIS IS A CONTROLLED SPACING AREA, DO NOT ALLOW SPACES WITHIN THESE LINES +% +% The token \@IEEEPARstartfont will be globally defined after the first use +% of \IEEEPARstart and will be a font command which creates the big letter +% The first argument is the first letter of the first word and the second +% argument is the rest of the first word(s). +\def\IEEEPARstart#1#2{\par{% +% if this page does not have enough space, break it and lets start +% on a new one +\@IEEEtranneedspace{\IEEEPARstartMINPAGELINES\baselineskip}{\relax}% +% V1.7 move this up here in case user uses \textbf for \IEEEPARstartFONTSTYLE +% which uses command \leavevmode which causes an unwanted \indent to be issued +\noindent +% calculate the desired height of the big letter +% it extends from the top of \IEEEPARstartHEIGHTTEXT in the current font +% down to \IEEEPARstartDROPDEPTH below the current baseline +\settoheight{\@IEEEtrantmpdimenA}{\IEEEPARstartHEIGHTTEXT}% +\addtolength{\@IEEEtrantmpdimenA}{\IEEEPARstartDROPDEPTH}% +% extract the name of the current font in bold +% and place it in \@IEEEPARstartFONTNAME +\def\@IEEEPARstartGETFIRSTWORD##1 ##2\relax{##1}% +{\IEEEPARstartFONTSTYLE{\selectfont\edef\@IEEEPARstartFONTNAMESPACE{\fontname\font\space}% +\xdef\@IEEEPARstartFONTNAME{\expandafter\@IEEEPARstartGETFIRSTWORD\@IEEEPARstartFONTNAMESPACE\relax}}}% +% define a font based on this name with a point size equal to the desired +% height of the drop letter +\font\@IEEEPARstartsubfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenA\relax% +% save this value as a counter (integer) value (sp points) +\@IEEEtrantmpcountA=\@IEEEtrantmpdimenA% +% now get the height of the actual letter produced by this font size +\settoheight{\@IEEEtrantmpdimenB}{\@IEEEPARstartsubfont\IEEEPARstartCAPSTYLE{#1}}% +% If something bogus happens like the first argument is empty or the +% current font is strange, do not allow a zero height. +\ifdim\@IEEEtrantmpdimenB=0pt\relax% +\typeout{** WARNING: IEEEPARstart drop letter has zero height! (line \the\inputlineno)}% +\typeout{ Forcing the drop letter font size to 10pt.}% +\@IEEEtrantmpdimenB=10pt% +\fi% +% and store it as a counter +\@IEEEtrantmpcountB=\@IEEEtrantmpdimenB% +% Since a font size doesn't exactly correspond to the height of the capital +% letters in that font, the actual height of the letter, \@IEEEtrantmpcountB, +% will be less than that desired, \@IEEEtrantmpcountA +% we need to raise the font size, \@IEEEtrantmpdimenA +% by \@IEEEtrantmpcountA / \@IEEEtrantmpcountB +% But, TeX doesn't have floating point division, so we have to use integer +% division. Hence the use of the counters. +% We need to reduce the denominator so that the loss of the remainder will +% have minimal affect on the accuracy of the result +\divide\@IEEEtrantmpcountB by 200% +\divide\@IEEEtrantmpcountA by \@IEEEtrantmpcountB% +% Then reequalize things when we use TeX's ability to multiply by +% floating point values +\@IEEEtrantmpdimenB=0.005\@IEEEtrantmpdimenA% +\multiply\@IEEEtrantmpdimenB by \@IEEEtrantmpcountA% +% \@IEEEPARstartfont is globaly set to the calculated font of the big letter +% We need to carry this out of the local calculation area to to create the +% big letter. +\global\font\@IEEEPARstartfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenB% +% Now set \@IEEEtrantmpdimenA to the width of the big letter +% We need to carry this out of the local calculation area to set the +% hanging indent +\settowidth{\global\@IEEEtrantmpdimenA}{\@IEEEPARstartfont +\IEEEPARstartCAPSTYLE{#1\IEEEPARstartITLCORRECT}}}% +% end of the isolated calculation environment +\global\IEEEPARstartletwidth\@IEEEtrantmpdimenA\relax% +% add in the extra clearance we want +\advance\@IEEEtrantmpdimenA by \IEEEPARstartSEP\relax% +% add in the optional offset +\advance\@IEEEtrantmpdimenA by \IEEEPARstartHOFFSET\relax% +% V1.7 don't allow negative offsets to produce negative hanging indents +\@IEEEtrantmpdimenB\@IEEEtrantmpdimenA +\ifnum\@IEEEtrantmpdimenB < 0 \@IEEEtrantmpdimenB 0pt\fi +% \@IEEEtrantmpdimenA has the width of the big letter plus the +% separation space and \@IEEEPARstartfont is the font we need to use +% Now, we make the letter and issue the hanging indent command +% The letter is placed in a box of zero width and height so that other +% text won't be displaced by it. +\hangindent\@IEEEtrantmpdimenB\hangafter=-\IEEEPARstartDROPLINES% +\makebox[0pt][l]{\hspace{-\@IEEEtrantmpdimenA}% +\raisebox{-\IEEEPARstartDROPDEPTH}[0pt][0pt]{\hspace{\IEEEPARstartHOFFSET}% +\@IEEEPARstartfont\IEEEPARstartCAPSTYLE{#1\IEEEPARstartITLCORRECT}% +\hspace{\IEEEPARstartSEP}}}% +{\IEEEPARstartWORDFONTSTYLE{\IEEEPARstartWORDCAPSTYLE{\selectfont#2}}}} + + + + +% determines if the space remaining on a given page is equal to or greater +% than the specified space of argument one +% if not, execute argument two (only if the remaining space is greater than zero) +% and issue a \newpage +% +% example: \@IEEEtranneedspace{2in}{\vfill} +% +% Does not take into consideration rubber shrinkage, so it tends to +% be overly cautious +% Based on an example posted by Donald Arseneau +% Note this macro uses \@IEEEtrantmpdimenB internally for calculations, +% so DO NOT PASS \@IEEEtrantmpdimenB to this routine +% if you need a dimen register, import with \@IEEEtrantmpdimenA instead +\def\@IEEEtranneedspace#1#2{\penalty-100\begingroup%shield temp variable +\@IEEEtrantmpdimenB\pagegoal\advance\@IEEEtrantmpdimenB-\pagetotal% space left +\ifdim #1>\@IEEEtrantmpdimenB\relax% not enough space left +\ifdim\@IEEEtrantmpdimenB>\z@\relax #2\fi% +\newpage% +\fi\endgroup} + + + +% IEEEbiography ENVIRONMENT +% Allows user to enter biography leaving place for picture (adapts to font size) +% As of V1.5, a new optional argument allows you to have a real graphic! +% V1.5 and later also fixes the "colliding biographies" which could happen when a +% biography's text was shorter than the space for the photo. +% MDS 7/2001 +% V1.6 prevent multiple biographies from making multiple TOC entries +\newif\if@IEEEbiographyTOCentrynotmade +\global\@IEEEbiographyTOCentrynotmadetrue + +% biography counter so hyperref can jump directly to the biographies +% and not just the previous section +\newcounter{IEEEbiography} +\setcounter{IEEEbiography}{0} + +% photo area size +\def\@IEEEBIOphotowidth{1.0in} % width of the biography photo area +\def\@IEEEBIOphotodepth{1.25in} % depth (height) of the biography photo area +% area cleared for photo +\def\@IEEEBIOhangwidth{1.14in} % width cleared for the biography photo area +\def\@IEEEBIOhangdepth{1.25in} % depth cleared for the biography photo area + % actual depth will be a multiple of + % \baselineskip, rounded up +\def\@IEEEBIOskipN{4\baselineskip}% nominal value of the vskip above the biography + +\newenvironment{IEEEbiography}[2][]{\normalfont\@IEEEcompsoconly{\sffamily}\footnotesize% +\unitlength 1in\parskip=0pt\par\parindent 1em\interlinepenalty500% +% we need enough space to support the hanging indent +% the nominal value of the spacer +% and one extra line for good measure +\@IEEEtrantmpdimenA=\@IEEEBIOhangdepth% +\advance\@IEEEtrantmpdimenA by \@IEEEBIOskipN% +\advance\@IEEEtrantmpdimenA by 1\baselineskip% +% if this page does not have enough space, break it and lets start +% with a new one +\@IEEEtranneedspace{\@IEEEtrantmpdimenA}{\relax}% +% nominal spacer can strech, not shrink use 1fil so user can out stretch with \vfill +\vskip \@IEEEBIOskipN plus 1fil minus 0\baselineskip% +% the default box for where the photo goes +\def\@IEEEtempbiographybox{{\setlength{\fboxsep}{0pt}\framebox{% +\begin{minipage}[b][\@IEEEBIOphotodepth][c]{\@IEEEBIOphotowidth}\centering PLACE\\ PHOTO\\ HERE \end{minipage}}}}% +% +% detect if the optional argument was supplied, this requires the +% \@ifmtarg command as defined in the appendix section above +% and if so, override the default box with what they want +\@ifmtarg{#1}{\relax}{\def\@IEEEtempbiographybox{\mbox{\begin{minipage}[b][\@IEEEBIOphotodepth][c]{\@IEEEBIOphotowidth}% +\centering% +#1% +\end{minipage}}}}% end if optional argument supplied +% Make an entry into the table of contents only if we have not done so before +\if@IEEEbiographyTOCentrynotmade% +% link labels to the biography counter so hyperref will jump +% to the biography, not the previous section +\setcounter{IEEEbiography}{-1}% +\refstepcounter{IEEEbiography}% +\addcontentsline{toc}{section}{Biographies}% +\global\@IEEEbiographyTOCentrynotmadefalse% +\fi% +% one more biography +\refstepcounter{IEEEbiography}% +% Make an entry for this name into the table of contents +\addcontentsline{toc}{subsection}{#2}% +% V1.6 properly handle if a new paragraph should occur while the +% hanging indent is still active. Do this by redefining \par so +% that it will not start a new paragraph. (But it will appear to the +% user as if it did.) Also, strip any leading pars, newlines, or spaces. +\let\@IEEEBIOORGparCMD=\par% save the original \par command +\edef\par{\hfil\break\indent}% the new \par will not be a "real" \par +\settoheight{\@IEEEtrantmpdimenA}{\@IEEEtempbiographybox}% get height of biography box +\@IEEEtrantmpdimenB=\@IEEEBIOhangdepth% +\@IEEEtrantmpcountA=\@IEEEtrantmpdimenB% countA has the hang depth +\divide\@IEEEtrantmpcountA by \baselineskip% calculates lines needed to produce the hang depth +\advance\@IEEEtrantmpcountA by 1% ensure we overestimate +% set the hanging indent +\hangindent\@IEEEBIOhangwidth% +\hangafter-\@IEEEtrantmpcountA% +% reference the top of the photo area to the top of a capital T +\settoheight{\@IEEEtrantmpdimenB}{\mbox{T}}% +% set the photo box, give it zero width and height so as not to disturb anything +\noindent\makebox[0pt][l]{\hspace{-\@IEEEBIOhangwidth}\raisebox{\@IEEEtrantmpdimenB}[0pt][0pt]{% +\raisebox{-\@IEEEBIOphotodepth}[0pt][0pt]{\@IEEEtempbiographybox}}}% +% now place the author name and begin the bio text +\noindent\textbf{#2\ }\@IEEEgobbleleadPARNLSP}{\relax\let\par=\@IEEEBIOORGparCMD\par% +% 7/2001 V1.5 detect when the biography text is shorter than the photo area +% and pad the unused area - preventing a collision from the next biography entry +% MDS +\ifnum \prevgraf <\@IEEEtrantmpcountA\relax% detect when the biography text is shorter than the photo + \advance\@IEEEtrantmpcountA by -\prevgraf% calculate how many lines we need to pad + \advance\@IEEEtrantmpcountA by -1\relax% we compensate for the fact that we indented an extra line + \@IEEEtrantmpdimenA=\baselineskip% calculate the length of the padding + \multiply\@IEEEtrantmpdimenA by \@IEEEtrantmpcountA% + \noindent\rule{0pt}{\@IEEEtrantmpdimenA}% insert an invisible support strut +\fi% +\par\normalfont} + + + +% V1.6 +% added biography without a photo environment +\newenvironment{IEEEbiographynophoto}[1]{% +% Make an entry into the table of contents only if we have not done so before +\if@IEEEbiographyTOCentrynotmade% +% link labels to the biography counter so hyperref will jump +% to the biography, not the previous section +\setcounter{IEEEbiography}{-1}% +\refstepcounter{IEEEbiography}% +\addcontentsline{toc}{section}{Biographies}% +\global\@IEEEbiographyTOCentrynotmadefalse% +\fi% +% one more biography +\refstepcounter{IEEEbiography}% +% Make an entry for this name into the table of contents +\addcontentsline{toc}{subsection}{#1}% +\normalfont\@IEEEcompsoconly{\sffamily}\footnotesize\interlinepenalty500% +\vskip 4\baselineskip plus 1fil minus 0\baselineskip% +\parskip=0pt\par% +\noindent\textbf{#1\ }\@IEEEgobbleleadPARNLSP}{\relax\par\normalfont} + + +% provide the user with some old font commands +% got this from article.cls +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} + + +% SPECIAL PAPER NOTICE COMMANDS +% +% holds the special notice text +\def\@IEEEspecialpapernotice{\relax} + +% for special papers, like invited papers, the user can do: +% \IEEEspecialpapernotice{(Invited Paper)} before \maketitle +\def\IEEEspecialpapernotice#1{\ifCLASSOPTIONconference% +\def\@IEEEspecialpapernotice{{\sublargesize\textit{#1}\vspace*{1em}}}% +\else% +\def\@IEEEspecialpapernotice{{\\*[1.5ex]\sublargesize\textit{#1}}\vspace*{-2ex}}% +\fi} + + + + +% PUBLISHER ID COMMANDS +% to insert a publisher's ID footer +% V1.6 \IEEEpubid has been changed so that the change in page size and style +% occurs in \maketitle. \IEEEpubid must now be issued prior to \maketitle +% use \IEEEpubidadjcol as before - in the second column of the title page +% These changes allow \maketitle to take the reduced page height into +% consideration when dynamically setting the space between the author +% names and the maintext. +% +% the amount the main text is pulled up to make room for the +% publisher's ID footer +% The IEEE uses about 1.3\baselineskip for journals, +% dynamic title spacing will clean up the fraction +\def\@IEEEpubidpullup{1.3\baselineskip} +\ifCLASSOPTIONtechnote +% for technotes it must be an integer of baselineskip as there can be no +% dynamic title spacing for two column mode technotes (the title is in the +% in first column) and we should maintain an integer number of lines in the +% second column +% There are some examples (such as older issues of "Transactions on +% Information Theory") in which the IEEE really pulls the text off the ID for +% technotes - about 0.55in (or 4\baselineskip). We'll use 2\baselineskip +% and call it even. +\def\@IEEEpubidpullup{2\baselineskip} +\fi + +% V1.7 compsoc does not use a pullup +\ifCLASSOPTIONcompsoc +\def\@IEEEpubidpullup{0pt} +\fi + +% holds the ID text +\def\@IEEEpubid{\relax} + +% flag so \maketitle can tell if \IEEEpubid was called +\newif\if@IEEEusingpubid +\global\@IEEEusingpubidfalse +% issue this command in the page to have the ID at the bottom +% V1.6 use before \maketitle +\def\IEEEpubid#1{\def\@IEEEpubid{#1}\global\@IEEEusingpubidtrue} + + +% command which will pull up (shorten) the column it is executed in +% to make room for the publisher ID. Place in the second column of +% the title page when using \IEEEpubid +% Is smart enough not to do anything when in single column text or +% if the user hasn't called \IEEEpubid +% currently needed in for the second column of a page with the +% publisher ID. If not needed in future releases, please provide this +% command and define it as \relax for backward compatibility +% v1.6b do not allow command to operate if the peer review option has been +% selected because \IEEEpubidadjcol will not be on the cover page. +% V1.7 do nothing if compsoc +\def\IEEEpubidadjcol{\ifCLASSOPTIONcompsoc\else\ifCLASSOPTIONpeerreview\else +\if@twocolumn\if@IEEEusingpubid\enlargethispage{-\@IEEEpubidpullup}\fi\fi\fi\fi} + +% Special thanks to Peter Wilson, Daniel Luecking, and the other +% gurus at comp.text.tex, for helping me to understand how best to +% implement the IEEEpubid command in LaTeX. + + + +%% Lockout some commands under various conditions + +% general purpose bit bucket +\newsavebox{\@IEEEtranrubishbin} + +% flags to prevent multiple warning messages +\newif\if@IEEEWARNthanks +\newif\if@IEEEWARNIEEEPARstart +\newif\if@IEEEWARNIEEEbiography +\newif\if@IEEEWARNIEEEbiographynophoto +\newif\if@IEEEWARNIEEEpubid +\newif\if@IEEEWARNIEEEpubidadjcol +\newif\if@IEEEWARNIEEEmembership +\newif\if@IEEEWARNIEEEaftertitletext +\@IEEEWARNthankstrue +\@IEEEWARNIEEEPARstarttrue +\@IEEEWARNIEEEbiographytrue +\@IEEEWARNIEEEbiographynophototrue +\@IEEEWARNIEEEpubidtrue +\@IEEEWARNIEEEpubidadjcoltrue +\@IEEEWARNIEEEmembershiptrue +\@IEEEWARNIEEEaftertitletexttrue + + +%% Lockout some commands when in various modes, but allow them to be restored if needed +%% +% save commands which might be locked out +% so that the user can later restore them if needed +\let\@IEEESAVECMDthanks\thanks +\let\@IEEESAVECMDIEEEPARstart\IEEEPARstart +\let\@IEEESAVECMDIEEEbiography\IEEEbiography +\let\@IEEESAVECMDendIEEEbiography\endIEEEbiography +\let\@IEEESAVECMDIEEEbiographynophoto\IEEEbiographynophoto +\let\@IEEESAVECMDendIEEEbiographynophoto\endIEEEbiographynophoto +\let\@IEEESAVECMDIEEEpubid\IEEEpubid +\let\@IEEESAVECMDIEEEpubidadjcol\IEEEpubidadjcol +\let\@IEEESAVECMDIEEEmembership\IEEEmembership +\let\@IEEESAVECMDIEEEaftertitletext\IEEEaftertitletext + + +% disable \IEEEPARstart when in draft mode +% This may have originally been done because the pre-V1.6 drop letter +% algorithm had problems with a non-unity baselinestretch +% At any rate, it seems too formal to have a drop letter in a draft +% paper. +\ifCLASSOPTIONdraftcls +\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** ATTENTION: \noexpand\IEEEPARstart + is disabled in draft mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse} +\fi +% and for technotes +\ifCLASSOPTIONtechnote +\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** WARNING: \noexpand\IEEEPARstart + is locked out for technotes (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse} +\fi + + +% lockout unneeded commands when in conference mode +\ifCLASSOPTIONconference +% when locked out, \thanks, \IEEEbiography, \IEEEbiographynophoto, \IEEEpubid, +% \IEEEmembership and \IEEEaftertitletext will all swallow their given text. +% \IEEEPARstart will output a normal character instead +% warn the user about these commands only once to prevent the console screen +% from filling up with redundant messages +\def\thanks#1{\if@IEEEWARNthanks\typeout{** WARNING: \noexpand\thanks + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNthanksfalse} +\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** WARNING: \noexpand\IEEEPARstart + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse} + + +% LaTeX treats environments and commands with optional arguments differently. +% the actual ("internal") command is stored as \\commandname +% (accessed via \csname\string\commandname\endcsname ) +% the "external" command \commandname is a macro with code to determine +% whether or not the optional argument is presented and to provide the +% default if it is absent. So, in order to save and restore such a command +% we would have to save and restore \\commandname as well. But, if LaTeX +% ever changes the way it names the internal names, the trick would break. +% Instead let us just define a new environment so that the internal +% name can be left undisturbed. +\newenvironment{@IEEEbogusbiography}[2][]{\if@IEEEWARNIEEEbiography\typeout{** WARNING: \noexpand\IEEEbiography + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEbiographyfalse% +\setbox\@IEEEtranrubishbin\vbox\bgroup}{\egroup\relax} +% and make biography point to our bogus biography +\let\IEEEbiography=\@IEEEbogusbiography +\let\endIEEEbiography=\end@IEEEbogusbiography + +\renewenvironment{IEEEbiographynophoto}[1]{\if@IEEEWARNIEEEbiographynophoto\typeout{** WARNING: \noexpand\IEEEbiographynophoto + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEbiographynophotofalse% +\setbox\@IEEEtranrubishbin\vbox\bgroup}{\egroup\relax} + +\def\IEEEpubid#1{\if@IEEEWARNIEEEpubid\typeout{** WARNING: \noexpand\IEEEpubid + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEpubidfalse} +\def\IEEEpubidadjcol{\if@IEEEWARNIEEEpubidadjcol\typeout{** WARNING: \noexpand\IEEEpubidadjcol + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEpubidadjcolfalse} +\def\IEEEmembership#1{\if@IEEEWARNIEEEmembership\typeout{** WARNING: \noexpand\IEEEmembership + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEmembershipfalse} +\def\IEEEaftertitletext#1{\if@IEEEWARNIEEEaftertitletext\typeout{** WARNING: \noexpand\IEEEaftertitletext + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEaftertitletextfalse} +\fi + + +% provide a way to restore the commands that are locked out +\def\IEEEoverridecommandlockouts{% +\typeout{** ATTENTION: Overriding command lockouts (line \the\inputlineno).}% +\let\thanks\@IEEESAVECMDthanks% +\let\IEEEPARstart\@IEEESAVECMDIEEEPARstart% +\let\IEEEbiography\@IEEESAVECMDIEEEbiography% +\let\endIEEEbiography\@IEEESAVECMDendIEEEbiography% +\let\IEEEbiographynophoto\@IEEESAVECMDIEEEbiographynophoto% +\let\endIEEEbiographynophoto\@IEEESAVECMDendIEEEbiographynophoto% +\let\IEEEpubid\@IEEESAVECMDIEEEpubid% +\let\IEEEpubidadjcol\@IEEESAVECMDIEEEpubidadjcol% +\let\IEEEmembership\@IEEESAVECMDIEEEmembership% +\let\IEEEaftertitletext\@IEEESAVECMDIEEEaftertitletext} + + + +% need a backslash character for typeout output +{\catcode`\|=0 \catcode`\\=12 +|xdef|@IEEEbackslash{\}} + + +% hook to allow easy disabling of all legacy warnings +\def\@IEEElegacywarn#1#2{\typeout{** ATTENTION: \@IEEEbackslash #1 is deprecated (line \the\inputlineno). +Use \@IEEEbackslash #2 instead.}} + + +% provide some legacy IEEEtran commands +\def\IEEEcompsoctitleabstractindextext{\@IEEElegacywarn{IEEEcompsoctitleabstractindextext}{IEEEtitleabstractindextext}\IEEEtitleabstractindextext} +\def\IEEEdisplaynotcompsoctitleabstractindextext{\@IEEElegacywarn{IEEEdisplaynotcompsoctitleabstractindextext}{IEEEdisplaynontitleabstractindextext}\IEEEdisplaynontitleabstractindextext} +% provide some legacy IEEEtran environments + + +% V1.8a no more support for these legacy commands +%\def\authorblockA{\@IEEElegacywarn{authorblockA}{IEEEauthorblockA}\IEEEauthorblockA} +%\def\authorblockN{\@IEEElegacywarn{authorblockN}{IEEEauthorblockN}\IEEEauthorblockN} +%\def\authorrefmark{\@IEEElegacywarn{authorrefmark}{IEEEauthorrefmark}\IEEEauthorrefmark} +%\def\PARstart{\@IEEElegacywarn{PARstart}{IEEEPARstart}\IEEEPARstart} +%\def\pubid{\@IEEElegacywarn{pubid}{IEEEpubid}\IEEEpubid} +%\def\pubidadjcol{\@IEEElegacywarn{pubidadjcol}{IEEEpubidadjcol}\IEEEpubidadjcol} +%\def\specialpapernotice{\@IEEElegacywarn{specialpapernotice}{IEEEspecialpapernotice}\IEEEspecialpapernotice} +% and environments +%\def\keywords{\@IEEElegacywarn{keywords}{IEEEkeywords}\IEEEkeywords} +%\def\endkeywords{\endIEEEkeywords} +% V1.8 no more support for legacy IED list commands +%\let\labelindent\IEEElabelindent +%\def\calcleftmargin{\@IEEElegacywarn{calcleftmargin}{IEEEcalcleftmargin}\IEEEcalcleftmargin} +%\def\setlabelwidth{\@IEEElegacywarn{setlabelwidth}{IEEEsetlabelwidth}\IEEEsetlabelwidth} +%\def\usemathlabelsep{\@IEEElegacywarn{usemathlabelsep}{IEEEusemathlabelsep}\IEEEusemathlabelsep} +%\def\iedlabeljustifyc{\@IEEElegacywarn{iedlabeljustifyc}{IEEEiedlabeljustifyc}\IEEEiedlabeljustifyc} +%\def\iedlabeljustifyl{\@IEEElegacywarn{iedlabeljustifyl}{IEEEiedlabeljustifyl}\IEEEiedlabeljustifyl} +%\def\iedlabeljustifyr{\@IEEElegacywarn{iedlabeljustifyr}{IEEEiedlabeljustifyr}\IEEEiedlabeljustifyr} +% V1.8 no more support for QED and proof stuff +%\def\QED{\@IEEElegacywarn{QED}{IEEEQED}\IEEEQED} +%\def\QEDclosed{\@IEEElegacywarn{QEDclosed}{IEEEQEDclosed}\IEEEQEDclosed} +%\def\QEDopen{\@IEEElegacywarn{QEDopen}{IEEEQEDopen}\IEEEQEDopen} +%\AtBeginDocument{\def\proof{\@IEEElegacywarn{proof}{IEEEproof}\IEEEproof}\def\endproof{\endIEEEproof}} +% V1.8 no longer support biography or biographynophoto +%\def\biography{\@IEEElegacywarn{biography}{IEEEbiography}\IEEEbiography} +%\def\biographynophoto{\@IEEElegacywarn{biographynophoto}{IEEEbiographynophoto}\IEEEbiographynophoto} +%\def\endbiography{\endIEEEbiography} +%\def\endbiographynophoto{\endIEEEbiographynophoto} +% V1.7 and later no longer supports \overrideIEEEmargins +%\def\overrideIEEEmargins{% +%\typeout{** WARNING: \string\overrideIEEEmargins \space no longer supported (line \the\inputlineno).}% +%\typeout{** Use the \string\CLASSINPUTinnersidemargin, \string\CLASSINPUToutersidemargin \space controls instead.}} + +\endinput + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% End of IEEEtran.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%% +% That's all folks! + diff --git a/PBDSecPaper.pdf b/PBDSecPaper.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a950151c6d04f82bc906a1adbf63850c29f29186 GIT binary patch literal 264717 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 literal 0 HcmV?d00001 diff --git a/PBDSecPaper.tex b/PBDSecPaper.tex index 7776ec2..640fee1 100644 --- a/PBDSecPaper.tex +++ b/PBDSecPaper.tex @@ -78,7 +78,7 @@ \maketitle \begin{abstract} -PBD centers around minimizing costs of developing and manufacturering new components along with changing the landscape of this ecosystem, through the use of a ``meet-in-the-middle'' methodology where successive refinements of specificiations meet with abstractions of potential implemenetations; the goal being to obtain the same level of abstraction as is writtien into good coding functions~\cite{Vincentelli2002}. Security centers around being able to gauge the trustworthiness of components as well as the larger system made of distributed components. There is a distinct lack of design methodology for doing platform-based design of security elements, although there is conceptual use in mobile embedded systems~\cite{Schaumont2005}. Ground work for implementing security via PBD exists; this paper is centered around connecting the dots and laying the foundation for framework that will be built upon for creating security in a documented, rigorous, and standardized way. +Platform-Based Design (PBD) centers around minimizing costs of developing and manufacturing new components along with changing the landscape of this ecosystem, through the use of a ``meet-in-the-middle'' methodology where successive refinements of specificiations meet with abstractions of potential implemenetations; the goal being to obtain the same level of abstraction as is written into good coding functions~\cite{Vincentelli2002}. Security centers around being able to gauge the trustworthiness of components as well as the larger system made of distributed components. There is a distinct lack of design methodology for doing platform-based design of security elements, although there is conceptual use in mobile embedded systems~\cite{Schaumont2005}. While the ground work for implementing security via PBD exists; this paper is centered around connecting the dots and laying the foundation for a framework that will be built upon for creating security in a documented, rigorous, and standardized way. \end{abstract} \section{Motivation} diff --git a/PBDSecPaper_SP.pdf b/PBDSecPaper_SP.pdf new file mode 100644 index 0000000000000000000000000000000000000000..069b5e3c3f33ebed52ebc6f18a4eed7974a6d449 GIT binary patch literal 259598 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 literal 0 HcmV?d00001 diff --git a/PBDSecPaper_SP.tex b/PBDSecPaper_SP.tex new file mode 100644 index 0000000..1ed7c93 --- /dev/null +++ b/PBDSecPaper_SP.tex @@ -0,0 +1,382 @@ +% template-v1.tex: LaTeX2e template for Usenix papers. +% Version: usetex-v1, 31-Oct-2002 +% Revision history at end. + +\documentclass[10pt,conference,letterpaper]{IEEEtran} +% Choose the appropriate option: +% +% 1. workingdraft: +% +% For initial submission and shepherding. Features prominent +% date, notice of draft status, page numbers, and annotation +% facilities. The three supported annotation macros are: +% \edannote{text} -- anonymous annotation note +% \begin{ednote}{who} -- annotation note attributed +% text to ``who'' +% \end{ednote} +% \HERE -- a marker that can be left +% in the text and easily +% searched for later +% 2. proof: +% +% A galley proof identical to the final copy except for page +% numbering and proof date on the bottom. Annotations are +% removed. +% +% 3. webversion: +% +% A web-publishable version, uses \docstatus{} to indicate +% publication information (where and when paper was published), +% and page numbers. +% +% 4. finalversion: +% +% The final camera-ready-copy (CRC) version of the paper. +% Published in conference proceedings. This doesn't include +% page numbers, annotations, or draft status (Usenix adds +% headers, footers, and page numbers onto the CRC). +% +% If several are used, the last one in this list wins +% + +% +% In addition, the option "endnotes" permits the use of the +% otherwise-disabled, Usenix-deprecated footnote{} command in +% documents. In this case, be sure to include a +% \makeendnotes command at the end of your document or +% the endnotes will not actually appear. +% + +% These packages are optional, but useful +\usepackage{epsfig} % postscript figures +\usepackage{url} % \url{} command with good linebreaks +%\usepackage[showframe]{geometry} % http://ctan.org/pkg/geometry +\usepackage{graphicx} % http://catn.org/pkg/graphicx + +\begin{document} + +\title{Mapping Security to Platform-Based Design} + +% document status: submitted to foo, published in bar, etc. +%\docstatus{Submitted to Cool Stuff Conference 2002} + +% authors. separate groupings with \and. +%\author{ +%\authname{Paul A.\ Wortman} +%\authaddr{ECE} +%\authaddr{University of Connecticut} +%\authaddr{ Storrs, CT, 06279} +%\authurl{\url{paul.wortman@engr.uconn.edu}} +%\authurl{\url{http://host.dom/yoururl}} +%%\and +%%\authname{Name Two} +%%\authaddr{Two's Institution} +%%\authurl{\url{two@host.dom}} +%% +%} % end author + +\maketitle + +\begin{abstract} +Platform-Based Design (PBD) centers around minimizing costs of developing and manufacturing new components along with changing the landscape of this ecosystem, through the use of a ``meet-in-the-middle'' methodology where successive refinements of specificiations meet with abstractions of potential implemenetations; the goal being to obtain the same level of abstraction as is written into good coding functions~\cite{Vincentelli2002}. Security centers around being able to gauge the trustworthiness of components as well as the larger system made of distributed components. There is a distinct lack of design methodology for doing platform-based design of security elements, although there is conceptual use in mobile embedded systems~\cite{Schaumont2005}. While the ground work for implementing security via PBD exists; this paper is centered around connecting the dots and laying the foundation for a framework that will be built upon for creating security in a documented, rigorous, and standardized way. +\end{abstract} + +\section{Motivation} +\label{Motivation} +As systems move towards more complex designs and implementations (as allowed by growths in technology; Moore's Law) the ability to make simplistic changes to these designs becomes exponentially more difficult. For this reason, levels of abstraction are desired when simplifying the design/evaluation phases of systems development. An example of this abstraction simplification is the use of system-on-chip (SoC) to replace multi-chip solutions. This SoC abstraction solution is then used for a variety of tasks, ranging from arithmatic to system behavior. It is an industry standard to use SoC to handle encryption/security in a secure and removed manner~\cite{Wu2006}. Middleware describes software that resides between an application and the inner workings of the system hosting the application. The purpose of the middleware is to abstract the complexities of the underlying technology from the application layer~\cite{Lang2003}; to act as translation software for communicating from lower level to a higher level. The lower-to-higher translation is the same sort of ``abstraction bridge'' that is required by the ``meet-in-the-middle'' methodology of PBD, along with the sort of software construct that benefits the virtualization of security component mapping. +\begin{quotation} + ``However, even though current silicon technology is closely following the growing demands; the effort needed in modeling, simulating, and validating such designs is adversely affected. This is because current modeling tools and frameworks, hardware and software co-design environments, and validation and verification frameworks do not scale with the rising demands.''`\cite{Patel2007} +\end{quotation} +Work in the security realm is much more chaotic, although undertakings have been made to define the scope of security and its intricacies in a well documented manner~\cite{Benzel2005}. Other work in the security realm includes security-aware mapping for automotive systems, explorations of dependable and secure computing, how to model secure systems, and defining the general theorems of security properties~\cite{Lin2013, Avizienis2004, Jorgen2008, Zakinthinos1997, Zhou2007}. Security has many facets to it: failure, processes, security mechanisms, secuirty principles, security policies, trust, etc. A key developing aspect of security is its standardization of encryption algorithms, methods of authentication, and communication protocol standards. \\ + +Standardization is the process of developing and implementing technical standards. Standardization can help to maximinze compatability, interoperability, safety, repeatability, or quality; it can also faciliate commoditization of formerly custom processes. Standards appear in all sorts of domains. For the IC domain standardization manifests as a flexibile integrated circuit where customization for a particular application is achieved by programming one or more components on the chip (e.g. virtualization). PC makers and application software designers develop their products quickly and efficiently around a standard `platform' that emerged over time. As a quick over view of these standards: x86 ISA which makes is possible to reuse the OS \& SW applications, a full specified set of buses (ISA, USB, PCI) which allow for use of the same expansion boards of IC's for different products, and a full specification of a set of IO devices (e.g. keyboard, mouse, audio and video devices). The advantage of the standardization of the PC domain is that software can also be developed independently of the new hardware availability, thus offering a real hardware-software codesign approach. If the instruction set architecture (IAS) is kept constant (e.g. standardized) then software porting, along with future development, is far easier~\cite{Vincentelli2002}. In a `System Domain' lens, standardization is the aspect of the capabilities a platform offers to develop quickly new applications (adoptability). In other words, this requires a distillation of the principles so that a rigorous methodology can developed and profitably used across different design domains. +So why is standardization useful? Standardization allows for manufacturers, system developers, and software designers to all work around a single, accepted, platform. It is understood what the capabilities of the hardware are, what the limitations of system IO will be, along with what the methods/protocols of communication will be. Even these preset aspects of the `standard' have their own `contractual obligations' of how they will function, what their respective `net-lists' are, and where the limtations of such standards lie. While the act of creating a standard takes time, not only due to time of development but due to speed of adoption of wide use, it is a necessary step. Without standarization, it becomes far more difficult to create universally used complex systems, let alone validate their correctness and trustworthiness. This is how one is able to change the current paradigm to a new standard model. + +What is gained, and lost, when shifting the method of design to a more platform-based design/security centric model? After all development of these tools implies that there is a need to change the focus and methods of design/development~\cite{Vincentelli2007}. The advatange to this method is ease of changes in development and searching of design spaces during early design and development of those systems. For PBD this means that a company/manufacturer is able to lower the cost and time spent in the `early development phase'; the time spent when first drawing up system designs prior to initial prototyping. While the advantage of overcoming multiple prototpying re-designs with a series of virtualization tools will cut down on development time, it can not be forgotten that rigorous standards and documentation need to be developed for this sort of advantage. Once this hurdle is passed then the advantages of such a system can be reaped. For security this means that components can be standardized from a local, network, and distributed standpoint. These different scopes of security will be tackled in Section~\ref{Security}. The main point here is that with standardization comes a form of `contract' that all parties can expect will be followed, thus allowing for a different manufacturers/developers to create different aspects of a system, while knowing that these different elements will come together in the final product; much like the advantages of platform-based design. The disadvantage of using a new method is the loss in time for developing the standards, rigors, and documentation that would be used as new guide lines for the industry. These sorts of costs have been felt while developing any of the current standards of security; most definitely with the development of new algorithms for encryption. Further more, security vulnerabilities are found mainly due to incorrect implementations or due to incorrect assumptions about functionality; both of which are more easily avoidable with the use of rigorous planning and design. The other disadvantage is in the adoptability of these new methods. Ideally all manufacturers would adopt a new commodity; rather than components, `design combinations' would be the new commodity that manufacturers would peddle (e.g. instead of saying ``my components are the best'' the dialog moves towards ``My ability to combine these components is the best''). + +Virtualization will help offset the time and monetary costs of using and implementing these new methodologies/ideologies. Essentially the issue boils down to how to abstract the lower level requirements of a system (assembly/C) into a simpler high level set of tools (API/block). A new set of tools needs to be developed that can be used to build bigger and greater things out of a series of smaller more manage/customizable blocks. Flexbilitiy of low level elements will help minimize conflict when attempting to design higher level blocks. As with any new system, there is a need for `tunable desings' that can be centered around specific aspects (e.g. power/energy efficient systems to minimize ``power cost buildup'', or security/trust centric needs). Functions, in this tool set, should be kept simple (e.g. decide output, \textbf{but} not how the output manifests). The reason behind this is that the design can remain simplistic in its [design and] operation. Virtualization tools lend to both the ideas of abstraction (choosing the simple output) and standardization/documentation (know what the outputs are, but not needing to know exactly how they manifest; just that they will)~\cite{Alagar2007}. They are a much needed tool for exploring design spaces and bringing codesign of software and hardware elements. + +Hardware/Software codesign is crucial for bridging together the software and hardware aspects of a new system in an efficient and effective manner. There are different coding languages to handle different aspects (i.e. SW/HW) of vitrualization. When dealing with the virtualization of software the aspects of timing and concurrenccy semantics still fall short. These problems come from a lack of resolution and control at the lowest levels of virtualization interaction. The overwhelming hardware issue is that hardware semantics are very specific and tough to simulate. There has been the development of hardware simulation languages, such as SystemC~\cite{Kreku2008}, but there has not been the development of tools to bridge the space between hardware and software simulation/virtualization. Codesign of software simulations of hardware allows for development of high level software abstraction to interact with low level hardware abstraction. The reasoning being the constant growth in complexity calls for simulation/virtualization of the design process. System-on-chip (SoC) technology will be already dominated by 100-1000 core multiprocessing on a chip by 2020~\cite{Teich2012}. Changes will affect the way companies design embedded software and new languages, and tool chains will need to emerge in order to cope with the enormous complexity. Low-cost embedded systems (daily-life devices) will undoubtably see development of concurrent software and exploitation of parallelism. In order to cope with the desire to include environment in the design of future cyber-physical systems, a system's heterogeneity will most definitely continue to grow as well in SoCs as in distributed systems of systems. A huge part of design time is already spent on the verification, either in a simulative manner or using formal techniques~\cite{Teich2012}. ``Indeed, market data indicate that more than 80\% of system development efforts are now in software versus hardware. This implies that an effective platform has to offer a powerful design environment for software to cope with development cost.''~\cite{Vincentelli2002} Coverification will require an increasing proportion of the design time as systems become more complex. Progress at the electronic system level might diminish due to verification techniques that cannot cope with the modeling of errors and ways to retrieve and correct them, or, even better, prove that certian properties formulated as contraints during syntehsis will hold in the implementation by construction. The verification process on one level of abstraction needs to prove that an implementation (the structural view) indeed satisfies the specification (behavioral view)~\cite{Teich2012}. The uncertainty of environment and communication partners of complex interacting cyber-physical systems, runtime adaptivity will be a must for guaranteeing the efficiency of a system. Due to the availability of reconfigurable hardware and multicore processing, which will also take a more important role in the tool chain for system simulation and evaluation, online codesign techniques will work towards a standard as time moves forward. As with any design problem, if the functional aspects are indistinguishable from the implementation aspects, then it is very difficult to evolve the design over multiple hardware generations~\cite{Vincentelli2007}. It should be noted that there are tools that already exists for low, or high, system simulation. New territory is the combination of these tools to form a `hardware-to-software' virtualization tool that is both efficient and effective. +Metropolis is one tool that is based in part on the concept of platform-based design. Metropolis can analyze statically and dynamically functional designs with models that have no notion of physical quantities and mapped designs where the association of functionality to architectural services allows for evaluation of characteristics (e.g.~latency, throughput, power, and energy) of an implementation of a particular functionality with a particular platform instance~\cite{Vincentelli2007, Metropolis}. Metropolis is but one manifestation of platform-based design as a tool. PBD has been used for the platform-exploration of synthetic biological systems as seen in the work done by Densmore et.~al.~to create a strong and flexable tool~\cite{Densmore2009}. Other applications, of platform-based design, include design on a JPEG encoder, imaging, and use for distributed automotive design~\cite{Vincentelli2007, Sedcole2006, Gamatie2011, Lin2013, Teich2012, Gerstlauer2009, Gronbaek2008, Pimentel2006, Schaumont2005, Keutzer2000, Benveniste2012, Pinto2006, Bonivento2006, Pellizzoni2009, Densmore2009, Kreku2008, Gruttner2013} + +The manufacturer's standpoint boils down to: the design should minimize mask-making costs but be flexible enough to warrant its use for a set of applications so that production volume will be high over an extended chip lifetime~\cite{Vincentelli2007}. Companies try to drive adoptability by means of creating something that users want to interact with, but not be complicated to learn (e.g. abstraction of technology for ease of use). Accounting for ease of use can lead to vulnerabilities in security or the development of new tools. Automation is desirable from a `business' standpoint since customers/users enjoy the `set it and forget it' mentality for technology (especially new technologies). Companies/Manufacturers need positive customer/user experiences, otherwise there is no desire to extend any supplied functionality to any other devices/needs on the part of the consumer. Adoptablility tends to come from user `word of mouth' praising the functionality and ease of use of new technology/methods/devices and how the developing party reacts to system failures or user-need (branching from complaints and support requests). This is exactly why industry would love for platform-based design to become a new standard; gain high adoptability. The monetary costs saved would be enough to warrent adoption of the technology, \textbf{but} the monetary costs of developing such a system (e.g. design, evalutation, validation) does not carry the same attraction (simply because companies are selfish and want to \textbf{make} money). Security concerns center around how to define trust/trustworthiness, determining the functions and behvaiors of security components, and the prinicples, policies, and mechanisms that are rigorously documented to standardize behavior. Also designed by industry to clearer standards, giving better security and ease of set-up and implementation. It is the aim of this paper to first outline platform-based design (Section~\ref{Platform-based design}) and its advantages and disadvantages, then move towards examining a model for designing security (Section~\ref{Security}) and lastly illustrate to the reader why platform-based design should be the basis for security design and development. + +\section{Platford-based design} +\label{Platform-based design} +Platform-based design is a methodology where function spaces are mapped to platform spaces (e.g. architectural space) or vica-versa. Generally the mapping of a function instance towards a platform instance leads to a larger subset of platform instances branching from a single function instance; as can be seen in Figure~\ref{fig:RecursivePBD}. Of course this relationship works in the reverse manner as well; a single platform instance maps to a subset of function instances. Although one can think of the mapping process as happening in one direction, or the other, platform-based design is a ``meet-in-the-middle'' approach. A designer/developer works towards merging two platforms (e.g. software functionality and hardware architectures) where the resulting `middle-ground', or mapping, can be thought of as its own `mapping instance'; merging an abstract higher level function with an abstracted lower level platform. More on the recusive nature of PBD will be explored later in this section, for now we will examine the benefits of using such a methodology. + +The monetary considerations of platform-based design include system re-use, flexibility of elements, and re-programmability. As system complexity grows the costs of producing chips becomes more expensive, thus pushing for the systems that are produced to be ``multi-capable'' (e.g. re-use value)~\cite{Keutzer2000}. The greatest challenge in the hardware design space is placement and arragement of components based on an array of differing variables. Design of architecture platforms is a result of trade-off in complex space, and worse yet some aspects directly compete/contradict each other~\cite{Vincentelli2002, Gruttner2013}. The size of the application space that can be supported by the architectures belonging to the architecture platform represents the flexability of the platform. The size of the architecture space that satisfies the constraints embodied in the design architecture is what providers/manufacturers have in designing their hardware instances. Even at this level of abstraction these two aspects of hardware design can compete with each other. Ex: A manufacturer has pre-determined sizes that constrain their development space apriori. Further more, aspects such as design space constraints and heat distribution are a well known source of trouble when designing embedded systems. + +As with any new technology/design methodoloy/concept there are expensive initial costs for development, evaluation, and validation until more rigorous documentation can be made. As with any early development, it pays to think everything through first before diving into prototyping (want roughly 90/10 split between planning and action; same as with software development). This can be aided through the development of virtualization tools; which unfortunately come with their own development, evaluation, and validation costs. Harping on this, two main concerns for effective platform-based design developement and adoptation are software developement and a set of tools that insulate the details of architecture from application software (e.g. virtualization). The more abstract the programmer's model, the richer is the set of platform instances, but the more difficult is to choose the ``optimal'' architecture platform instance and map automatically into it~\cite{Vincentelli2002}. + +In PBD, the partitioning of the design into hardware and software is not the essence of system design as many think, rather it is a consequence of decisions taken at a higher level of abstraction~\cite{Vincentelli2007}. For example, a lower level consideration may be heat dissipation concerns which manifests itself as size constraints at higher levels. The types of decisions that are made at these higher levels lend to the design traits that are requirements at lower levels. These sort of complexities in cost of design are exactly why abstraction/virtualization are required/desired. Additional levels of abstraction (along with virtualization tools for design space exploration) aid in simplifying the design process. The abstraction levels deal with critical decisions that are about the architecture of the system, e.g., processors, buses, hardware accelerators, and memories, that will carry on the computation and communication tasks associated with the overall specification of the design~\cite{Vincentelli2007, Pellizzoni2009}. These critical paths are determined based on `pivot-points' or characteristics that restrict the behavior and function of a given elements/component, or can be based on requirements for function/behavior that are requested for by the end-user. In certain scenarios these critical decisions can be centered around `safety-critical' elements, as can be seen in embedded systems deployed in the medical market (e.g. pacemakers); these `safety-critical' elements being responsible for the wellness and health of its user. The library of functional and communication components is the design space that we are allowed to explore at the appropriate level of abstraction~\cite{Vincentelli2007}. There are elements of recursive behavior that need to be tackled from a virtualized tool standpoint. In a PBD refinement-based design process, platforms should be defined to eliminate large loop iterations for affordable designs~\cite{Vincentelli2007}. This refinement should restrict the design space via new forms of regularity and structure that surrender some design potential for lower cost and first-pass sucess. + +\begin{figure*} + \includegraphics[width=\textwidth,height=8cm]{./images/recursivePBD.png} + \caption{Recursive PBD} + \label{fig:RecursivePBD} +\end{figure*} + +Due to the recursive nature of platform-based design, establishing the number, location, and components of intermediate ``platforms'' is the essence of PBD~\cite{Vincentelli2007}. In fact, designs with different requirements and specifications may use different intermediate platforms, hence different layers of regularity and design-space constraints per scenarios. The tradeoffs involved in the selection of the number and characteristics of platforms relates to the size of the design space to be explored and the accuracy of the estimation of the chracteristics of the solution adopted. Naturally, the larger the step across platforms, the more difficult is predicting performance, optimizing at the higher levels of abstraction, and providing a tight lower bound. In fact, the design space for this approach may actually be smaller than the one obtained with smaller steps because it becomes harder to explore meaningful design alternatives and the restriction on the search space impedes complete design-space exploration. Ultimately, predictions/abstractions may be so inaccurate that design optimizations are misguided and the lower bounds are incorrect~\cite{Vincentelli2007}. On the other hand, having minimally small steps across the design space leads to needless complexity and unnecessary refinement of abstraction levels. The identification of precisely defined layers where the mapping processes takes place is an important design decision and should be agreed upon at the top design management level or during the initial early design phase of the system~\cite{Vincentelli2007}. As can be seen in Figure~\ref{fig:RecursivePBD}, each layer supports a design stage where the performance indexes that characterize the architectural components provide an opaque abstraction of lower layers that allows accurate performance estimations to be used to guide the mapping process~\cite{Vincentelli2007}. Standardization, or atleast some abstraction rule documentation, is what will greatly lend to minimizing the costs of using platform-based design. It is here that one clearly sees the recursive nature of this design methodology, and hopefully, also is able to see the advantages of the wide adoptation of platform-based design. This approach results in better reuse, because it decouples independent aspects, that would otherwise be tired, e.g., a given functional specification to low-level implementation details, or to a specific communication paradigm, or to a scheduling algorithm~\cite{Vincentelli2007}. Coupled with well developed software virtualization tools, this would allow for better exploration of initial design spaces but does come at a cost of a rigorous, documented, standardization. +\begin{quotation} +``It is very important to define only as many aspects as needed at every level of abstraction, in the interest of flexibility and rapid design-space exploration.''~\cite{Vincentelli2007} +\end{quotation} +The issue of platform-based design is not so much an over-engineering of design/development, but rather a need to strike a balance between all aspects of design; much like what already happens in hardware and software design. + +\section{Security} +\label{Security} +Security is always evolving with time and understanding as knowledge of encryption and other security encapsulation techniques change over time. There are considerations that are accounted from a software standpoint: capabilities of the software, speed of the algorthims/actions that take place, and how unique (level of uniqueness) a given solution is. Similarly there are hardware considerations as well: tolerance of the chip elements in use, their capabilities, power distribution over the entire hardware design, signal lag between different elements, and cross-talk caused by communication channels. Different groups have tackled aspects of these considerations. The Trusted Computing Group (TCG) created Trusted Platform Modules (TPM) which are able to validate their own functionality and if the TPMs have been tampered with. This is, in essence, a method of `self-analysis'; thus the ground work for a `self-analyzing' security component is already in place. This self checking can be used as a method for allowing the larger system of security components to locate damaged/error-prone componenets so that they can be replaced/fixed thus raising the overall trustworthiness of the system of components. Therefore TPMs are a good stepping stone on the path for better security, but TPM/TCG has no found ``the answer'' yet~\cite{Sadeghi2008}. Another example of security/trustworthiness implementation is the use of monitors for distributed system security. Different methods are used for determining trust of actions (e.g. Byzantine General Problem). These methods are used for determining the most sane/trustworhy machine out of a distributed network so that users know they are interacting with the `freshest' data at hand. While the realm of distributed systems has found good methods/principles to govern their actions/updates of systems. These methods are by no means `final' or perfect but will rather develop with time. As one can see, there are solutions implemented across a series of different HW and SW platforms for tackling different aspects of security. The unifying factor in all of them is determining what is or isn't trustworthy. + +The definition of ``trustworthiness'' that is chosen to help color this perspective on security is as defined in the Benzel et.~al.~paper. +\begin{quotation} +``\textit{Trustworthy} (noun): the degree to which the security behavior of the component is demonstrably compliant with its stated functionality (\textit{e.g., trustworthy component}). \\ \textit{Trust}: (verb) the degree to which the user or a component depends on the trustworthiness of another component. For example, component A \textit{trusts} component B, or component B is \textit{trusted} by component A. Trust and trustworthiness are assumed to be measured on the same scale.''~\cite{Benzel2005} +\end{quotation} +Dependability is a measure of a system's availability, reliability, and its maintainability. Furthermore, Avizienis et.~al.~extends this to also encompass mechanisms designs to increase and maintain the dependability of a system~\cite{Avizienis2004}. For the purpose of this paper, the interpretation is that trustworthiness requires inherrent dependability; i.e. a user should be able to trust that trustworthy components will dependably perform the desired actions and alert said user should an error/failure occur. Unfortunately the measurement of trust(worthiness) is measured using the same, abstract scale~\cite{Benzel2005}. Thus, in turn, there is a void for the design and development of an understandable and standardized scale of trust(worthiness). Which could then lead to a change of paradigm in the methods by which security policies, mechanisms, and principles are implemented and evolve. +\begin{quotation} +``In order to develop a component-based trustworthy system, the development process must be reuse-oriented, component-oriented, and must integrate formal languages and rigorous methods in all phases of system life-cycle.''~\cite{Mohammed2009} +\end{quotation} +Component-Based Software Engineering (CBSE) is widely adopted in the software industry as the mainstream approach to software engineering~\cite{Mohammed2009, Mohammad2013}. CBSE is a reuse-based approach of defining, implementing and composing loosely coupled independent components into systems and emphasizes the separation of concerns in respect of the wide-ranging functionality available throughout a given software system. Thus it can be seen that the ideals being outlined in this paper are already in use, all that is needed is their re-application to a new design methodology. In a way one can see CBSE as a restricted-platform version of platform-based design. This furthers this paper's point, that the required elements for combining PBD and security are already in use for different purposes and simply need to be `re-purposed' for this new security centric platform-based design. +\begin{quotation} +``Most prevalent trust models only focus on assessing trustworthiness of systems at runtime, and do not provide necessary predictions of the trust of systems before they are built. This makes improving trustworthiness of the composed system to be costly and time-consuming. Therefore it is important to consider trust of the composed software system at the development time itself.''~\cite{Gamage} +\end{quotation} + +\begin{figure*} + \includegraphics[width=\textwidth,height=10cm]{./images/SecurityDesignMap.png} + \caption{Security Design Map} + \label{fig:SecDesignMap} +\end{figure*} + + +As promised earlier, the paper will now examine the different scopes of security/trustworthiness: local, network, and distributed. Each of these scopes will be examined in terms of the considerations/challenges, principles, and policies that should be used to determine action/behavior of these different security elements and the system as a whole. + +The local scope encompasses a security element's own abilities, trustworthiness, and the dependencies of that element (e.g. least common mechanisms, reduced complexity, minimized sharing, and the conflict between this as least common mechanisms). The purpose of this section is to present the considerations, principles, and policies that govern the behavior and function of security elements/components at the local scope/level. First, this paper will reiterate the definitions stated in the Benzel et.~al.~paper. Failure is a condition in which, given a specifically documented input that conforms to specification, a component or system exhibits behavior that deviates from its specified behavior. A module/database is seen as a unit of computation that encapsulates a database and provides an interface for the initialization, modification, and retireval of information from the database. The database may be either implicit, e.g. an algorithm, or explicit. Lastly, a process(es) is a program(s) in execution. To further define the actions/behavior of a given component in the local scope, this paper moves to outlinging the principles that define component behavior at the local device level. \\ +The first principle is that of `Least Common Mechanisms'. If multiple components in the system require the same function of a mechanism, then there should be a common mechanism that can be used by all of them; thus various components do not have separate implementations of the same function but rather the function is created once (e.g. device drivers, libraries, OS resource managers). The benefit of this being to minimize complexity of the system by avoiding unnecessary duplicate mechanims. Furthermore, modifications to a common function can be performed (only) once and impact of the proposed modifications allows for these alterations to be more easily understood in advance. The simpler a system is, the fewer vulnerabilities it will have; the principle of `Reduced Complexity'. From a security perspective, the benefit to this simplicity is that is is easier to understand whether an intended security policy has been captured in system design. At a security model level, it can be easier to determine whether the initial system state is secure and whether subsequent state changes preserve the system security. Given current state of the art of systems, the conservative assumption is that every complex system will contain vulnerabilities and it will be impossible to eliminate all of them, even in the most highly trustworthy of systems. At the lowest level of secure data, no computer resource should be shared between components or subjects (e.g. processes, functions, etc.) unless it is necessary to do so. This is the concept behind `Minimized Sharing'. To protect user-domain information from active entities, no information should be shared unless that sharing has been explicitly requested and granted. Encapsulation is a design discipline or compiler feature for ensuring there are no extraneous execution paths for accessing private subsets of memory/data. Minimized sharing influenced by common mechanisms can lead to designs being reentrant/virtualized so that each component depending mechanism will have its own virtual private data space; parition resources into discrete, private subsets for each dependent component. This in turn can be seen as a virtualization of hardware, a concept already illustrated earlier with the discussion of platform-based design. A further consideration of minimized sharing is to avoid covert timing channels in which the processor is one of the shared components. In other words, the scheduling algorithms must ensure that each depending component is allocated a fixed amount of time to access/interact with a given shared space/memory. Development of a technique for controlled sharing requires execution durations of shared mechanisms (or mechanisms and data structures that determine duration) to be explicitly stated in design specification documentation so that effects of sharing can be verified and evaluated. Once again illustrating the need for rigorous standards to be clearly documented. As the reader has undoutably seen, there are conflicts within just these simple concepts and principles for the local scope of trustworthiness of a security component. The principles of least common mechanism and minimal sharing directly appose each other, while still being desirable aspects of the same system. Minimizing system complexity through the use of common mechanisms does lower hardware space requirements for an architectural platform, but at the same time does also maximize the amount of sharing occuring within the security component. A designer can use one of the development techniques already mentioned to help balance these two principles, but in the end the true design question is: what information is safe to share and what information must be protected under lock and key and how to then communicate that information with high security and fidelity. + +How does a designer decide upon how elements communicate? How does one define a security component in terms of a network; how is communication done, what concerns/challenges are there? Rigorous definitions of input/output nets for componenets and the methods for communication (buses, encryption, multiplexing) must be documented and distributed as the standard methods for communicating. Service, defined in the scope of a network, refers to processing or protection provided by a component to users or other components. E.g., communication service (TCP/IP), security service (encryption, firewall). These services represent the communication that occurs between different elements in a secure system. Each service should be documented to rigorously define the input, and output, nets for each component and the method used for communication (buses, encrpytion, multiplexing). Since these services, and their actions, are central to the operation/behavior of a secure system, there are a series of considerations, principles, and policies that a system architect/designer must acknowledge when deciding on the layout of security components within a network. Principle of Secure Communication Channels states that when composing a system where there is a threat to communication between components, each communications channel must be trustworthy to a level commensurate with the security dependencies it supports. In other words, how much is the component trusted to perform its security functions by other components. Several techniques can be used to mititgate threats to the communication channels in use. Use of a channel may be restricted by protecting access to it with suitable access control mechanism (e.g. reference monitor located beneath or within each component). End-to-end communications technologies (e.g. encryption) may be used to eliminate security threats in the communication channel's physical environment. Once again, the intrinsic characteristices assumed for and provided by the channel must be specified with such documentation that it is posisble for system designers to understand the nature of the channel as initially consturcted and to assess the impact of any subseruqnet changes to the system. Without this rigorous documentation and standardization, the trustworthiness of the communications between security elements can not be assured. + +`Self-Reliant Trustworthiness' means that systems should minimize their reliance on external components for system trustworthiness. A corollary to this relates to the ability of a component to operate in isolation and then resynchronize with other components when it is rejoined with them. In other words, if a system were required to maintain a connection with another external entity in order to maintain its trustworthiness, then that very system would be vulnerable to drop in connection/communication channels. Thus from a network standpoint a system should be trustworthy by default with the external connection being used as a supplement to the component's function. The principle of `Partially Ordered Dependencies' states that calling, synchronization and other dependencies in the system should be partially ordered; e.g. for certain pairs of elements in a set, one of the elements precedes the other. A fundamental tool in system design is `layering'. A system can be organized into functionally related modules of components, where layers are linearly ordered with respect to inter-later dependencies. Inherent problems of circularity can be more easily managed if circular dependencies are constrained to occur within layers. In other words, if a shared mechanism also makes calls to or otherwise depends on services of calling mechanisms, creating a circular dependency, performance and liveness problems can result. Partially ordered dependencies and system layering contribute significantly to the simplicity and coherency of system design. A system should be built to facilitate maintenance of its security properties in face of changes to its interface, functionality sturcture or configuration; in other words allow for `secure system evolution'. Changes may include upgrades to system, maintenance activites. The benefits of designing a system with secure system evolution are reduced lifecycles costs for the vendor, reduced costs of ownership for the user, and improved system security. Most systems can aniticipate maintenance, upgrades, and chages to configuration. If a component is constructed using the precepts of modularity and information hiding then it becomes easier to replace components without disrupting the rest of a system. A system designer needs to take into account the impact of dynamic reconfiguration on the secure state of the system. Just as it is easier to build trustworthiness into a system from the outset (and for highly trustworthy systems, impossible to ahcieve without doing so), it is easier to plan for change than to be surprised by it~\cite{Benzel2005}. + +A system should be able to handle as `secure failure'. Failure in system function or mechanism should not lead to violation of any security policy. Ideally the system should be capable of detecting failure at any stage of operation (initialization, normal operation, shutdown, maintenace, error detection and recovery) and take appropriate steps to ensure security policies are not violated; as is done with most machines now a days anyway. Touching on the earlier idea of secure system evolution, the reconfiguration function of the system should be designed to ensure continuous enforcement of security policies during various phases of reconfiguration. Once a failed security function is detected, the system may reconfigure itself to cirumvent the failed component, while maintaining security, and still provide all or part of the functionality of the original system, or completely shut itself down to prevent any (further) violation in security policies. Another method for achieving this is to rollback to a secure state (which may be the initial state) and then either shutdown or replace the service/component that failed with an orthogonal or repliacted mechanisms. Failure of a component may or may not be detectable to components using it; thus one must design a method for `dealing with failure'. For this reason components should fail in a state that denies rather than grants access. A designer could employ multiple protection mechanisms (whose features can be significantly different) to reduce the possibility of attack repetition, but it should be noted that redundancy techniques may increase resource usage and adversely affect the system performance. Instead the atomicity properties of a service/component should be well documented and characterized so that the component availing itself of service can detect and handle interruption event appropriately; similar to the `self-analysis' function that TPMs have. A well designed reference monitor could fill most of these roles, though, it would require that the reference monitor can `self-analyze' itself for trustworthiness. While even this would not be a perfect solution, it does help limit total failure to the reference monitor instead of some arbitrary security component. + +Having tackled the network communication considerations for modeling a secure and trustworthy component, this paper moves toward examining these security element behvaiors and functions with respect to their existence within a larger distributed system. Trust, in the scope of a distributed system, shifts to define the degree to which the user or a componenet depends on the trustworthiness of another component. The first concept that will be tackled is that of `Hierarchical Trust for Components'. Security dependencies in a system will form a partial ordering if they preserve the principle of trusted components. This is essential to eliminate circular dependencies with regard to trustworthiness. Trust chains have various manifestations but this should not prohibit the use of overly trustworthy components. Taking a deeper dive into `hierarchical protections', a component need not be protected from more trustworthy components. In the most degenerate case of most trusted component, the component must protect itself from all other components. One should note that a trusted computer system need not protect itself from an equally trustworthy user. The main challenge here is that there needs to be a clear and documented way by which one can determine trustworthiness and protection for a system, along with outlining the hierarchy of trust that is inherent to the system. This is the same challenge that occurs at all levels and requires rigorous documentation to alleviate the constraint. Hierarchical protections is the precept that regulates the following concept of `secure distributed composition'. Composition of distributed components that enforce the same security policy should result in a system that enforces that policy at least as well as individualy components do. If components are composed into a distributed system that supports the same policy, and information contained in objects is transmitted between components, then the transmitted information must be at least as well protected in the receiving component as it was in the sending component. This is similar behavior to how SSL/TLS are used in current day implementations; data may be secure in transit, but if the end points are not secure then the data is not secure either. To ensure correct system-wide level of confidence of correct policy enforcement, the security architecture of the distributed composite system must be thoroughly analyzed. Actions that are security-relevant must be traceable to the entity on whose behalf the action is being taken; there must be `accountability and traceability'. This requires the designer to put into place a trustworthy infrastructure that can record details about actions that affect system security (e.g., audit subsystem). This system must not only be able to uniquely identify the entity on whose behalf the action is being carried out, but also record the relevant sequence of actions that are carried out. An accountability policy ought to require the audit trail itself to be protected from unauthorized access and modifications. Associating actions with system entities, and ultimately with users, and making the audit trail secure against unauthorized access and modifications provide nonrepudiation, as once some action is recorded, it is not possible to change the audit trail. Any designer should note that if a violation occurs, analysis of the audit log may provide additional information that may be helpful in determinging the path or component that allowed the violation of the security policy. Just as this audit trail would be invaluable to a debugging developer, an attacker could also use this information to illuminate the actions/behavior of the system; therefore this data absolutely must remain protected. + +Information protection, required by a security policy (e.g., access control to user-domain objects) or for system self-protection (e.g., maintining integrity of kernel code and data), must be protected to a level of continuity consistent with the security policy and the security architecture assumptions; thus providing `continuous protection on information'. Simpley stated, no guarentees about information integrity, confidentiality or privacy can be made if data is left unprotected while under control of the system (i.e., during creation, storages, processing or communication of information and during system initialization, execution, failure, interruption, and shutdown); one cannot claim to have a secure system without remaining secure for all aspects of said system. For maintaining a trustworthy system, and network of distributed truthworhty components, a designer should not only prepare for expected inputs but also for possible invalid requests or malicious mutations that could occur in the future. Invalid requests should not result in a system state in which the system cannot properly enforce the security policy. The earlier mentioned concept of secure failure applies in that a roll back mechanism can return the system to a secure state or at least fail the component in a safe and secure manner that maintains the required level of trustworhiness (does not lower the overall trustworthiness of the entire distributed system). Furthermore, a designer can use the precepts of a reference monitor to provide continuous enforcement of a security policy, noting that every request must be validated, and the reference monitor must protect iteself. Ideally the reference monitor component would be ``perfect'' in the sense of being absolutely trustworthy and not requiring an upgrade/modification path (thus limiting this element's chance of becoming compromised). Any designer must ensure protection of the system by choosing interface parameters so that security critical values are provided by more trustworthy components. To eliminate time-of-check-to-time-of-use vulnerabilities the system's security-relevant operations should appear atmoic. It could also be desirable to allow system security policies to be ``modifiable'' at runtime; in the case of needing to adjust to catastrophic external events. This raises the complexity of the system, but does allow for flexibility in the face of failure. Any changes to security policies must not only be traceable but also verifiable; it must be possible to verify that changes do not violate security policies. This could be handled by a central reference monitor. Following this thread of thinking, a system architect/designer should understand the consequences of allowing modifiable policies within the system. Depending on the type of access control and actions that are allowed and controlled by policies, certain configuration changes may lead to inconsistent states of discontinuous protection due to the complex and undecidable nature of the problem of allowing runtime changes to the security policies of the system. In other words, even modifications/updates need to be planned and documented rigorously for the purpose of maintaining a secure and trustworthy system. System modification procedures must maintain system security with respect to goals, objectives, and requirements of owners; allowing for `secure system modification'. Without proper planning and documentation, upgrades and modifications to systems can transform a secure system into an insecure one. These are similar concepts to `secure system evolution' at the network scope of these security components. + +When automating the development of security systems there are three key elements of the system that need to be examined/accounted for in the virtualization stage: security mechanisms, security principles, and security policies. For the purpose of reiteration, security mechanisms are the system artifacts that are used to enforce system security policies. Security principles are the guidelines or rules that when followed during system design will aid in making the system secure. Organizational security policies are ``the set of laws, rules, and practices that regulate how an organization manages, protects, and distributes sensitive information.''~\cite{Benzel2005} System Security Policies are rules that the information system enforces relative to the resources under its control to reflect the organizational security policy. Each of these aspects plays its part in determining the behavior and function of the overall security system. The security prinicples set the groundwork for how the system should behave and interact based on the expected user interactions. The security policies (both organizational and system) govern the rules and practices that regulate how the system, and its resources, is managed, how the information is protected, and how the system controls and distributes sensitive information. The security mechanisms are the implementations on these previous two aspects by being the system artifacts that are used to enforce the system security policies. Together these different facets shape and mold the desired higher level abstracted behavior and function that the system has been designed and developed for. Security principles may account for the majority of restrictions and considerations for a given system, but are by no means the most influential or important aspect. The security polcies developed out of the principles constrain the behavior, functions, and methods of communication between security elements. The mechanisms developed for implementing these rules and regulations must be designed in such a manner to ensurce the system's fidelity towards trustworthy actions while also being responsbile for how the system will react to unexpected input and failure. + +In the same manner that these various security aspects (e.g. mechanisms, principles, policies) must be considered during development automation, the software and hardware aspects must also come under consideration based on the desired behavior/functionality of the system under design. One could have security elements that attempt to optimize themselves to the system they are in based on a few pivot points (power, time, efficiency, level of randomness). Another option for the automated tool could trade out specific security components as an easier way to increase security without requiring re-design/re-construction of the underlying element (e.g. modularity). There is always the requirement that the overall trustworthiness of a new system must meet the standards of the security policies that `rule' the system. For these reasons a user would desire rigorous documentation that would lay out the requirements of each component, so that in the case of trying to replace faulty or damaged components there would be no loss to the overall trustworthiness of the system; while also not introducing any vulnerabilities due to the inclusion of new system components. + +Virtualization should be used for exploring the design space; it is hoped that it is obvious as to why. Not only is the cost of prototyping incredably expensive, but redesign is equally costly. Virtualization aids by removing the need for physical prototyping (less monitary costs) and allows for more rapid exploration of the full design space. While the design time for such powerful tools will be expensive (both in monitary and temporal costs), the rewards of developing, validating, and evaluating this virtualization tool will offset the early design phase costs of automated security component design. + +At this point, it is the hope of the author that the reader can see how the needs and benefits of platform-based design and security development are closely aligned along the same concepts of rigorous design, virtualization/automation of tools, and the needs for meticulous documentation. The reasoning for using platform-based design is that PBD functions as a form of `architecural base' upon which security development can be mapped over. PBD can be used for development of hardware elements, security centric SoCs, or even as a set of abstract blocks that can be used to design higher level applications (e.g. virtualization development of larger security systems). But as with the development of any tool, and more so when expecting said tools to be more publically used, there is a deep need for meticulous documentation and rigorous use/distribution of standards. without this, there is no guarentee that anyone will benefits from use of this new model. Much like with security inovation and implementation, without proper outlining of behavior and function there is greater possiblity for erroneous use thus leading to greater vulnerability of the overall system. +\begin{quotation} +``Despite occasional cryptology-related attacks, most security vulnerabilities result from poor software design and implementation, such as the ever-lasting buffer overrun bugs. Thus approaches to designing secure software, not just from a traditional cryptology viewpoint, but with a software engineering perspective, are needed to counter the current unsatisfactory situation.''~\cite{Ren2006} +\end{quotation} +Focusing efforts on rigorous design documentation allows security concerns to be recognized early in the development process and these aspects can be given sufficient attention in subsequent stages of the device's life cycle. ``By controlling system security during architectural refinement, we can decrease software production costs and speed up the time to market~\cite{ZhouFoss2006}.'' This approach also enchances the role of the software architects by requiring that their decisions be not only for functional decomposition, but also for non-functional requirements fulfillment. Hence, virtualization/automation of security development is not only effective but also enticing. +As with any new system there should be `sufficient user documentation'. Users should be provided with adequate documentation and other information such that they contribute to, rather than detract from, a system's security. The availability of documentation and training can help to ensure a knowledgable cadre of users, developers, and administrators. If any level of user does not know how to use a component properly, does not know the standard security procedures, or does not know the proper behavior to prevent social engineering attacks, then said user can easily introduce new system vulnerabilities. Complexity must be minimized. This point was touched upon earlier, but is just as valid from a documentation standpoint. User documentation should also be kept as simple as possible to ensure adoptability by a larger group of new users. Having complex user documention is problematic because if users are unable to understand how to implement/use a system they will refuse to use it, thus leading to the death of said system. If on-line documentation is inadequate, then it should be obvious that written documentation and appropriate training are needed. +Just as there is a requirement for adequate documentation there is also the need for `procedural rigor'. The rigor of the system's life cycle process should be commensurate with its intended trustworthiness. Procedural rigor defines the depth and detail of a system's lifecycle procedures. These rigors contribute to the assurance that a system is correct and free of unintended functionality in two ways. Firstly, imposing a set of checks and balances on the life cycle process such that the introduction of unspecified functionality is thwarted. Secondly, applying rigorous procedures to specifications and other design documents contribute to the ability of users to understand a system as it has been built, rather than being misled by inaccurate system representation, thus helping ensure that security and functional objectives of the system have been met. Highly rigorous development procedures supporting high trustworthiness are costly to follow. However, the lowered cost of ownership resulting from fewer flaws and security breaches during the product maintenance phase can help to mitigate the higher initial development costs associated with a rigorous life cycle process. +The reasoning for having procedural rigor and sufficient user documentation is to allow for `repeatable, documented procedures'. Techniques used to construct a component should permit the same component to be completely and correctly reconstructed at a later time. Repeatable and documented procedures support the creation of components that are identical to a component created earlier that may be in widespread use. The Common Criteria standard~\cite{CommonCriteria} provides a framework for the derivation of system requirements that is comprised of the following steps: definition of system goals and its concept of operation; identification of threats to the defined system; identification of assumptions regarding the system and its environment; identification of organizational policies external to the system; identification of security objectives for the system and its environment based on previous steps; and specification of requirements that will meet the objectives. + +The last, and by no means least, important topic that must be tackled in this section is the question of what exactly are the research challenges. There has been a lot of information, ideas, and principles presented over the course of this writing along with parallels to existing research and methodologies that can be almost directly applied to the concept of mapping security development to platform-based design. The primary cost of developing security, and running a secure system, is time. There are the monitary and hardware costs of security developement and implementation, but even those aspects all have a time cost coupled with them. Time, while being the most expensive part of security design is also the aspect that can be tackled and minimized with rigorous planning and documentation. Taking into account that even the development of documentation and standards also has its own time cost associated with it, this early phase development can also diminsh the time-cost impact for later steps in the system's development/implementation life-cycle. Security must be paramount in design from the very beginning of any design and development cycle. + +While this paper proposes one model for security design and development this, by no means, is the only model for implementing security in a system. ``Defense in depth''~\cite{DoD2002} is a model in which security is derived from the application of multiple mechanisms; to create a series of barriers against attack by an adversary. Unfortunately, for the model, without any sound security architecutre and supporting theory, the non-constructive basis of this approach equivicates this model to a temporary patch; putting barriers in places does not equate to levels of trustworthiness. The ``Balanced assurance''~\cite{Lunt1988} model centers around a hierarchy of security policies, where different policies are allocated to different components of a system. The concept is that the trustworthiness of a given component must be consistent with the importance of that component's policy; the greater the trustworthiness the greater the importance of that component. The fault here is that a system can only be considered as secure as it's least secure component. While an interesting model and shows promise with respect to specific scenarios, this is not an overarching model that will function in all cases. There are multiple models for performing/implementing security, but a significant part of the cost of building a secure system is that of evaluating, and subsequently proving, trustworthiness through a third party's efforts. A method for minimizing the costs of performing this evaluation is to make use of components that have already had their trustworthiness evaluated and verified, thereby minimizing the need to evaluate the system itself; as it is made of already trustworthy components. This model would allow for ``evaluation by pieces'' whereby one acknowledges previously evaluated components and does not require their examiniation in the greater evaluation of the composite system. Unfortunately, this model has only been made available to ``low assurance'' systems as it lacks a well-formed theory of correctness~\cite{Benzel2005}. + +Security design, development, verification, and evaluation is still a relatively new and unexplored space. Because of this there is a constant growth and evolution of security protocols and standards, which requires a thorough exploration of the security design space. It is the belief of this paper that the best model for focusing effort and development towards is a platform-based design for security development. The levels of abstraction aid in virtualization design, the overarching concept of mapping platforms to instances (and vica-versa) aids in early developemtn stages, and the need for rigorous documentation and meticulous following of standards are concepts that not only stem from platform-based design but greatly lend to the needs of security design and development. + +\section{Conclusion} +\label{Conclusion} +There is a need for development of platform-based design for security elements of all types, across all platforms. The mechanisms and procedures required are already in use, but this does not mean platform-based design for security already here. For platform-based design of security there is an absolute need for standardization, or `contracts', for all elements that compose a larger distributed systems. The reason being that without these `contracts' to clearly state the expectations of various inputs, and outputs, then there is no guarentee that any designs/developments will be able to harmonize with the rest of a complex system. Additionally this is important for determining the trustworthiness of not only different elements, but of the entire distributed system as a whole. Advantages of security mapped to PBD include swapping out old security modules with newer ones (re-use of base system), degree of system customization to meet system hardware/software needs, ease of development (and costs). The most glaring disadvantages are those that come with the shifting of any paradigm. As with any new shift in design methodoloy the largest cost in this new system would be the need for rigorous documentation and standardization of the process, components, and communication elements of said components. This is why the development of groundwork for PBD-Security designs will be a slow and arduous process, but the resulting `paydirt' will be a new set of virtualization tools at abstraction levels with design spaces yet not truly explored at regualr levels. The hope of this paper is to begin designing a frame work that pushes for not only better system design and development (PBD) but also for proper incorporation and planning of system security in an intelligent, rigorous and documented/standardized way. As with the design of any tool there are concerns during the development, evaluations and valdiation processes~\cite{Pinto2006}. Common pitfalls of development are mishandling corner cases and inadvertently misinterpreting changes in the communication semantics. Problems arise because of poor understanding and the lack of precise, rigorous, definitions of the abstraction and refinement maps used in the design flow. Abstraction and refinement should be designed to preserve, whenever possible, the properties of the design that have already been established (e.g. the 'contract' of the design). With time will come rigorous standards and useful virtualaztion tools for thorough exploration of design spaces for both hardware and software elements. + +With these concepts in-mind, it should be obvious that security design \textbf{must} occur from the start! Unless security design is incorporated apriori, a developer can only hope to spend the rest of the development processes, and beyond, attempting to secure a system that took security as optional. Simply put, data \textbf{must} be kept safe. In addition, performing security planning from the start allows for disaster planning and any other possible 'unforeseen' complications. + +Others are incorporating platform-based design in everything from image processing to implementing security across different domains~\cite{Lin2015}. People are seeing the use and effectiveness of this sort of design methodology and it is the belief of this paper that more focus should be placed on this topic. Platform-based design should be the basis for security design and development. + +The reference monitor seems a favorable choice as this sort of model is already used in distributed systems, but there is an extremely important need to maintain the security/trust/trustworthiness of this reference monitor (abstraction for necessary and sufficient features of component that enforces access controll in secure systems). It is the belief of this paper that an initial starting point for PBD-Security design development is to use this existing reference monitor concept, along with other developed tools (e.g. CBSE, TPM), and piece together the initial framework and early phase development for this new methodology, so that future efforts can be spent developing and perfecting this technique. + +%references section +%\bibliographystyle{plain} +%\bibliography{body} + +\begin{thebibliography}{99} + +\bibitem{Vincentelli2007} Alberto Sangiovanni-Vincentelli, +\emph{Quo Vadis, SLD? Reasoning About the Trends and Challeneges of System Level Design}, Proceedings of the IEEE (March 2007) + +\bibitem{Teich2012} J{\"u}rgen Teich, +\emph{Hardware/Software Codesign: The Past, the Present, and Predicting the Future}, Proceedings of the IEEE (May 2012) + +\bibitem{Lang2003} Ulrich Lang, +\emph{Access policies for middleware}, University of Cambridge (May 2003) + +\bibitem{Vincentelli2002} Alberto Sangiovanni-Vincentelli, \emph{ +Defining platform-based design}, http://www.eetimes.com/document.asp?doc\_id=1204965 + +\bibitem{Keutzer2000} Kurt Keutzer, Sharad Malik, A.~Richard Newton, Jan M.~Rabaey, and A.~Sangiovanni-Vincentelli, +\emph{System-Level Design: Orthogonalization of Concerns and Platform-Based Design}, Computer-Aided Design of Integrated Circuits and Systems (December 2000) + +\bibitem{Mohammed2009} Mubarak Sami Mohammad, +\emph{A Formal Component-Based Software Engineering Approach for Developing Trustworthy Systems}, Doctoral Dissertation (April 2009) + +\bibitem{Ren2006} Jie Ren, \emph{ +A Connector-Centric Approach to Architectural Access Control}, Dissertation (2006) + +\bibitem{ZhouFoss2006} Jie Zhou and Jim Alves-Foss, \emph{ +Architecture-Based Refinements for Secure Computer Systems Design}, Proceedings of the 2006 International Conference on Privacy, Security and Trust (2006) + +\bibitem{Gamage} Dimuthu U.~Gamage, Lahiru S.~Gallege, James H.~Hill, and Rajeev R.~Raje, +\emph{Trust of Composition of System Properties} + +\bibitem{Patel2007} Hiren D.~Patel, \emph{ +Ingredients for Successful System Level Automation \& Design Methodology}, Dissertation (April 2007) + +\bibitem{Pinto2006} Alessandro Pinto, Alvise Bonivento, Alberto L.~Sangiovanni-Vincentelli, Roberto Passerone, Marco Sgroi, \emph{ +System Level Design Paradigms: Platform-Based Design and Communication Synthesis}, ACM TODAES (July 2006) + +\bibitem{Benzel2005} Terry V.~Benzel, Cynthia E.~Irvine, Timothy E.~Levin, Ganesha Bhaskara, Thuy D.~Nguyen, and Paul C.~Clark, \emph{ +Design Principles for Security}, SecureCore Technical Report (September 2005) + +\bibitem{Avizienis2004} Algirdas Avi\v{z}ienis, Jean-Claude Laprie, Brian Randell, and Carl Landwehr, \emph{ +Basic Concepts and Taxonomy of Dependable and Secure Computing}, IEEE Transactions on Dependable and Secure Computing (October 2004) + +\bibitem{Lin2013} Chung-Wei Lin, Qi Zhu, Calvin Phung, and Alberto Sangiovanni-Vincentelli, \emph{ +Security-Aware Mapping for CAN-Based Real-Time Distributed Automotive Systems}, IEEE/ACM ICCAD (November 2013) + +\bibitem{Zakinthinos1997} Aris Zakinthinos, and E.S.~Lee, \emph{ +A General Theory of Security Properties}, IEEE Proceedings Symposium on Security and Privacy (May 1997) + +\bibitem{Jorgen2008} J{\"o}rgen Hansson, Peter H.~Feiler, and John Morley, \emph{ +Building Secure Systems using Model-Based Engineering and Architectural Models}, (2008) + +\bibitem{Canedo2013} Arquimedes Canedo, Eric Schwarzenbach, and Mohammad Abdullah Al Faruque, \emph{ +Context-sensitive Synthesis of Executable Functional Models of Cyber-Physical Systems}, ACM/IEEE ICCPS (April 2013) + +\bibitem{Cimatti2012} Alessandro Cimatti, and Stefano Tonetta, \emph{ +A Property-Based Proof System for Contract-Based Design}, EUROMICRO Conference on SEAA (September 2012) + +\bibitem{Aedo2012} A.~Benavides, J.~Aedo, and F.~Rivera, \emph{Multi-purpose System-on-Chip Platform for Rapid Prototyping}, IEEE LASCAS (March 2012) + +\bibitem{Jorgen2010} J{\"o}rgen Hansson, Lutz Wrage, Peter H.~Leiler, John Morley, Bruce Lewis, and J{\'e}r{\^o}me Hugues, \emph{ +Architectural Modeling to Verify Security and Nonfunctional Behavior}, IEEE Security \& Privacy (Feb 2010) + +\bibitem{Gerstlauer2009} Andreas Gerstlauer, Christian Haubelt, Andy D.~Pimentel, Todor P.~Stefanov, Daniel D.~Gajski, J{\"u}rgen Teich, \emph{ +Electronic System-Level Synthesis Methodologies}, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems (September 2009) + +\bibitem{Gronbaek2008} Inge Gr{\o}nb{\ae}k, \emph{ +Architecture for the Internet of Things (IoT): API and interconnect}, SENSORCOM (August 2008) + +\bibitem{Vivekanandarajah2008} Kugan Vivekanandarajah and Santhosh Kumar Pilakkat, \emph{ +Task Mapping in Heterogeneous MPSoCs for System Level Design}, IEEE ICECCS (April 2008) + +\bibitem{Pimentel2006} Andy D.~Pimentel, Cagkan Erbas, Simon Polstra, \emph{ +A Systematic Approach to Exploring Embedded System Architectures at Multipl Abstraction Levels}, IEEE Transactions on Computers (February 2006) + +\bibitem{Schaumont2005} Patrick Schaumont, David Hwang, and Ingrid Verbauwhede, \emph{ +Platform-Based Design for an Embedded-Fingerprint-Authentication Device}, IEEE Transactions on Computer-Aided Design on Integrated Circuits and Systems (November 2005) + +\bibitem{Benveniste2007} Albert Renveniste, Beno{\^i}t Cailaud, and Proberto Passerone, \emph{ +A Generic Model of Contracts for Embedded Systems}, Research Report (June 2007) + +\bibitem{Ren2006} Jie Ren, \emph{ +A Connector-Centric Approach to Architectureal Access Control}, Dissertation (2006) + +\bibitem{Zhou2007} Jie Zhou and Jim Alves-Foss, \emph{ +Security Policy Refinement and Enforcement for the Design of Multi-level Secure Systems}, Journal of Computer Security (2007) + +\bibitem{Sedcole2006} Nicholas Peter Sedcole, \emph{ +Reconfigurable Platform-Based Design in FPGAs for Video Image Processing}, Doctoral Thesis, University of London (January 2006) + +\bibitem{Benveniste2012} Albert Benveniste, Benoit Caillaud, Dejan Nickovic, Roberto Passerone, Jean-Baptiste Raclet, Philipp Reinkemeier, Alberto Sangiovanni-Vincentelli, Werner Damm, Thomas Henzinger, Kim G.~Larsen, \emph{ +Contracts for System Design}, Research Report (November 2012) + +\bibitem{Pinto2006} Alessandro Pinto, Alvise Bonivento and Alberto L.~Sangiovanni-Vincentelli, \emph{ +System Level Design Paradigms: Platform-Based Design and Communication Synthesis}, ACM Transactions on Design Automation of Electronic Systems (TODAS) (July 2006) + +\bibitem{Bonivento2006} Alvise Bonivento, Luca P.~Carloni, Alberto Sangiovanni-Vincentelli, \emph{ +Platform Based Design for Wireless Sensor Networks}, Mobile Networks and Applications (August 2006) + +\bibitem{Vincentelli2004} Alberto Sangiovanni-Vincentelli, Luca Carloni, Fernando De Bernardinis, and Marco Sgroi, \emph{ +Benefits and Challenges for Platform-Based Design}, Proceedings of the 41st annual Design Automation Conference (2004) + +\bibitem{Pellizzoni2009} Rodolfo Pellizzoni, Patrick MEredith, Min-Young Nam, Mu Sun, Marco Caccamo, and Lui Sha, \emph{ +Handling Mixed-Criticality in SoC-based Real-Time Embedded Systems}, EMSOFT (2009) + +\bibitem{Wu2006} Min Wu, Xiaoyang Zeng, Jun Han, Yongyi Wu, and Yibo Fan, \emph{ +A High-Performance Platform-Based SoC for Information Security}, Proceedings of the 2006 Asia and South Pacific Design Automation Conference (2006) + +\bibitem{Kreku2008} Jari Kreku, Mika Hoppari, Tuomo Kestil{\"a}, Yang Qu, Juha-Pekka Soininen, Per Andersson, and Kari Tiensyrj{\"a}, \emph{ +Combining UML2 Application and SystemC Platform Modelling for Performance Evaluation of Real-Time Embedded Systems}, Journal on Embedded Systems - C-Based Design of Heterogeneous Embedded Systems (January 2008) + +\bibitem{Irvine2007} Cynthia E.~Irvine and Karl Levitt, \emph{ +Trusted Hardware: Can It Be Trustworthy?}, Proceedings of the 44th annual Design Automation Conference (2007) + +\bibitem{Mohammad2013} Mubarak Sami Mohammad, \emph{ +A Formal Component-Based Software Engineering Approach for Developing Trustworthy Systems}, Doctoral Thesis (January 2013) + +\bibitem{Sadeghi2008} Ahmad-Reza Sadeghi, \emph{ +Trusted Computing - Special Aspects and Challenges}, SOFSEM 2008: Theory and Practice of Computer Science (2008) + +\bibitem{Lee2001} Edward A.~Lee and Yuhong Xiong, \emph{ +System-Level Types for Component-Based Design}, Embedded Software Lecture Notes in Computer Science Volume 2211 (2001) + +\bibitem{Bush2003} Stephen F.~Bush, \emph{ +Extended Abstract: Complexity and Vulnerability Analysis}, DIMACS Workshop on Complexity and Inference (June 2003) + +\bibitem{Gamatie2011} Abdoulaye Gamati{\'e}, S{\'e}bastien Le Beux, {\'E}ric Piel, Rabie Ben Atitallah, Anne Etien, Philippe Marquet, and Jean-Luc Dekeyser, \emph{ +A Model-Driven Design Framework for Massively Parallel Embedded Systems}, ACM Transactions on Embedded Computing Systems (November 2011) + +\bibitem{Alagar2007} Vasu Alagar and Mubarak Mohammad, \emph{ +A Component Model for Trustworthy Real-Time Reactive Systems Development}, FACS (2007) + +\bibitem{Gruttner2013} Kim Gr{\"u}ttner, Philipp A.~Hartmann, Kai Hylla, Sven Rosinger, Wolfgang Nebel, Fernando Herrera, Eugenio Villar, Carlo Brandolese, William Fornaciari, Gianluca Palermo, Chantal Ykman-Couvreur, Davide Quaglia, Francisco Ferrero, and Ra{\'u}l Valencia, \emph{ +The COMPLEX Reference Framework of HW/SW Co-Design and Power Management Supporting Platform-Based Design-Space Exploration}, Microprocessors and Microsystems Volume 37, Issue 8 (November 2013) + +\bibitem{Densmore2009} Douglas Densmore, Anne Van Devender, Matthew Johnson, and Nade Sritanyaratana, \emph{ +A Platform-Based Design Environment for Synthetic Biological Systems}, The Fifth Richard Tapia Celebration of Diversity in Computing Conference: Intellect, Initiatives, Insight, and Innovations (2009) + +\bibitem{Metropolis} \emph{Metropolis: Design Environment for Heterogeneous Systems}, +url{https://embedded.eecs.berkeley.edu/metropolis/tools.html} + +\bibitem{CommonCriteria} ISO/IEC, \emph{ +Common Criteria for Information Technology Security Evaluation}, ISO/IEC 15408 (July 2005) + +\bibitem{DoD2002} Department of Defense, Directive 8500.1, \emph{ +Information Assurance (IA)}, 24 October 2002 + +\bibitem{Lunt1988} Teresa F.~Lunt, Dorothy E.~Denning, Roger R.~Schell, Mark Heckman, and W.~R.~Shockley, \emph{ +Element-level classification with AI assurance}, Computer and Security, 7:73-82, 1988 + +\bibitem{Lin2015} Chung-Wei Lin, \emph{ +Security Mechanisms and Security-Aware Mapping for Real-Time Distributed Embedded Systems}, Doctoral Thesis, University of California, Berkeley (Summer 2015) + +\end{thebibliography} + +\end{document} + +% Revision History: +% designed specifically to meet requirements of +% TCL97 committee. +% originally a template for producing IEEE-format articles using LaTeX. +% written by Matthew Ward, CS Department, Worcester Polytechnic Institute. +% adapted by David Beazley for his excellent SWIG paper in Proceedings, +% Tcl 96 +% turned into a smartass generic template by De Clarke, with thanks to +% both the above pioneers +% use at your own risk. Complaints to /dev/null. +% make it two column with no page numbering, default is 10 point + +% Munged by Fred Douglis 10/97 to separate +% the .sty file from the LaTeX source template, so that people can +% more easily include the .sty file into an existing document. Also +% changed to more closely follow the style guidelines as represented +% by the Word sample file. +% This version uses the latex2e styles, not the very ancient 2.09 stuff. +% + +% Revised July--October 2002 by Bart Massey, Chuck Cranor, Erez +% Zadok and the FREENIX Track folks to ``be easier to use and work +% better''. Hah. Major changes include transformation into a +% latex2e class file, better support for drafts, and some +% layout improvements. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% for Ispell: +% LocalWords: workingdraft BCM ednote SubSections xfig SubSection joe From 2af1e627a01c2d294ec119fa39dedcbe297f3a6e Mon Sep 17 00:00:00 2001 From: Paul Wortman Date: Mon, 9 Nov 2015 16:46:50 -0500 Subject: [PATCH 2/3] Push of bare IEEE conference paper tex file --- bare_conf.tex | 576 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 576 insertions(+) create mode 100644 bare_conf.tex diff --git a/bare_conf.tex b/bare_conf.tex new file mode 100644 index 0000000..6a912c7 --- /dev/null +++ b/bare_conf.tex @@ -0,0 +1,576 @@ + +%% bare_conf.tex +%% V1.4b +%% 2015/08/26 +%% by Michael Shell +%% See: +%% http://www.michaelshell.org/ +%% for current contact information. +%% +%% This is a skeleton file demonstrating the use of IEEEtran.cls +%% (requires IEEEtran.cls version 1.8b or later) with an IEEE +%% conference paper. +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/pkg/ieeetran +%% and +%% http://www.ieee.org/ + +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall the IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%% +%% This work is distributed under the LaTeX Project Public License (LPPL) +%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, +%% distributed and modified. A copy of the LPPL, version 1.3, is included +%% in the base LaTeX documentation of all distributions of LaTeX released +%% 2003/12/01 or later. +%% Retain all contribution notices and credits. +%% ** Modified files should be clearly indicated as such, including ** +%% ** renaming them and changing author support contact information. ** +%%************************************************************************* + + +% *** Authors should verify (and, if needed, correct) their LaTeX system *** +% *** with the testflow diagnostic prior to trusting their LaTeX platform *** +% *** with production work. The IEEE's font choices and paper sizes can *** +% *** trigger bugs that do not appear when using other class files. *** *** +% The testflow support page is at: +% http://www.michaelshell.org/tex/testflow/ + + + +\documentclass[conference]{IEEEtran} +% Some Computer Society conferences also require the compsoc mode option, +% but others use the standard conference format. +% +% If IEEEtran.cls has not been installed into the LaTeX system files, +% manually specify the path to it like: +% \documentclass[conference]{../sty/IEEEtran} + + + + + +% Some very useful LaTeX packages include: +% (uncomment the ones you want to load) + + +% *** MISC UTILITY PACKAGES *** +% +%\usepackage{ifpdf} +% Heiko Oberdiek's ifpdf.sty is very useful if you need conditional +% compilation based on whether the output is pdf or dvi. +% usage: +% \ifpdf +% % pdf code +% \else +% % dvi code +% \fi +% The latest version of ifpdf.sty can be obtained from: +% http://www.ctan.org/pkg/ifpdf +% Also, note that IEEEtran.cls V1.7 and later provides a builtin +% \ifCLASSINFOpdf conditional that works the same way. +% When switching from latex to pdflatex and vice-versa, the compiler may +% have to be run twice to clear warning/error messages. + + + + + + +% *** CITATION PACKAGES *** +% +%\usepackage{cite} +% cite.sty was written by Donald Arseneau +% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package +% \cite{} output to follow that of the IEEE. Loading the cite package will +% result in citation numbers being automatically sorted and properly +% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using +% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's +% \cite will automatically add leading space, if needed. Use cite.sty's +% noadjust option (cite.sty V3.8 and later) if you want to turn this off +% such as if a citation ever needs to be enclosed in parenthesis. +% cite.sty is already installed on most LaTeX systems. Be sure and use +% version 5.0 (2009-03-20) and later if using hyperref.sty. +% The latest version can be obtained at: +% http://www.ctan.org/pkg/cite +% The documentation is contained in the cite.sty file itself. + + + + + + +% *** GRAPHICS RELATED PACKAGES *** +% +\ifCLASSINFOpdf + % \usepackage[pdftex]{graphicx} + % declare the path(s) where your graphic files are + % \graphicspath{{../pdf/}{../jpeg/}} + % and their extensions so you won't have to specify these with + % every instance of \includegraphics + % \DeclareGraphicsExtensions{.pdf,.jpeg,.png} +\else + % or other class option (dvipsone, dvipdf, if not using dvips). graphicx + % will default to the driver specified in the system graphics.cfg if no + % driver is specified. + % \usepackage[dvips]{graphicx} + % declare the path(s) where your graphic files are + % \graphicspath{{../eps/}} + % and their extensions so you won't have to specify these with + % every instance of \includegraphics + % \DeclareGraphicsExtensions{.eps} +\fi +% graphicx was written by David Carlisle and Sebastian Rahtz. It is +% required if you want graphics, photos, etc. graphicx.sty is already +% installed on most LaTeX systems. The latest version and documentation +% can be obtained at: +% http://www.ctan.org/pkg/graphicx +% Another good source of documentation is "Using Imported Graphics in +% LaTeX2e" by Keith Reckdahl which can be found at: +% http://www.ctan.org/pkg/epslatex +% +% latex, and pdflatex in dvi mode, support graphics in encapsulated +% postscript (.eps) format. pdflatex in pdf mode supports graphics +% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure +% that all non-photo figures use a vector format (.eps, .pdf, .mps) and +% not a bitmapped formats (.jpeg, .png). The IEEE frowns on bitmapped formats +% which can result in "jaggedy"/blurry rendering of lines and letters as +% well as large increases in file sizes. +% +% You can find documentation about the pdfTeX application at: +% http://www.tug.org/applications/pdftex + + + + + +% *** MATH PACKAGES *** +% +%\usepackage{amsmath} +% A popular package from the American Mathematical Society that provides +% many useful and powerful commands for dealing with mathematics. +% +% Note that the amsmath package sets \interdisplaylinepenalty to 10000 +% thus preventing page breaks from occurring within multiline equations. Use: +%\interdisplaylinepenalty=2500 +% after loading amsmath to restore such page breaks as IEEEtran.cls normally +% does. amsmath.sty is already installed on most LaTeX systems. The latest +% version and documentation can be obtained at: +% http://www.ctan.org/pkg/amsmath + + + + + +% *** SPECIALIZED LIST PACKAGES *** +% +%\usepackage{algorithmic} +% algorithmic.sty was written by Peter Williams and Rogerio Brito. +% This package provides an algorithmic environment fo describing algorithms. +% You can use the algorithmic environment in-text or within a figure +% environment to provide for a floating algorithm. Do NOT use the algorithm +% floating environment provided by algorithm.sty (by the same authors) or +% algorithm2e.sty (by Christophe Fiorio) as the IEEE does not use dedicated +% algorithm float types and packages that provide these will not provide +% correct IEEE style captions. The latest version and documentation of +% algorithmic.sty can be obtained at: +% http://www.ctan.org/pkg/algorithms +% Also of interest may be the (relatively newer and more customizable) +% algorithmicx.sty package by Szasz Janos: +% http://www.ctan.org/pkg/algorithmicx + + + + +% *** ALIGNMENT PACKAGES *** +% +%\usepackage{array} +% Frank Mittelbach's and David Carlisle's array.sty patches and improves +% the standard LaTeX2e array and tabular environments to provide better +% appearance and additional user controls. As the default LaTeX2e table +% generation code is lacking to the point of almost being broken with +% respect to the quality of the end results, all users are strongly +% advised to use an enhanced (at the very least that provided by array.sty) +% set of table tools. array.sty is already installed on most systems. The +% latest version and documentation can be obtained at: +% http://www.ctan.org/pkg/array + + +% IEEEtran contains the IEEEeqnarray family of commands that can be used to +% generate multiline equations as well as matrices, tables, etc., of high +% quality. + + + + +% *** SUBFIGURE PACKAGES *** +%\ifCLASSOPTIONcompsoc +% \usepackage[caption=false,font=normalsize,labelfont=sf,textfont=sf]{subfig} +%\else +% \usepackage[caption=false,font=footnotesize]{subfig} +%\fi +% subfig.sty, written by Steven Douglas Cochran, is the modern replacement +% for subfigure.sty, the latter of which is no longer maintained and is +% incompatible with some LaTeX packages including fixltx2e. However, +% subfig.sty requires and automatically loads Axel Sommerfeldt's caption.sty +% which will override IEEEtran.cls' handling of captions and this will result +% in non-IEEE style figure/table captions. To prevent this problem, be sure +% and invoke subfig.sty's "caption=false" package option (available since +% subfig.sty version 1.3, 2005/06/28) as this is will preserve IEEEtran.cls +% handling of captions. +% Note that the Computer Society format requires a larger sans serif font +% than the serif footnote size font used in traditional IEEE formatting +% and thus the need to invoke different subfig.sty package options depending +% on whether compsoc mode has been enabled. +% +% The latest version and documentation of subfig.sty can be obtained at: +% http://www.ctan.org/pkg/subfig + + + + +% *** FLOAT PACKAGES *** +% +%\usepackage{fixltx2e} +% fixltx2e, the successor to the earlier fix2col.sty, was written by +% Frank Mittelbach and David Carlisle. This package corrects a few problems +% in the LaTeX2e kernel, the most notable of which is that in current +% LaTeX2e releases, the ordering of single and double column floats is not +% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a +% single column figure to be placed prior to an earlier double column +% figure. +% Be aware that LaTeX2e kernels dated 2015 and later have fixltx2e.sty's +% corrections already built into the system in which case a warning will +% be issued if an attempt is made to load fixltx2e.sty as it is no longer +% needed. +% The latest version and documentation can be found at: +% http://www.ctan.org/pkg/fixltx2e + + +%\usepackage{stfloats} +% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e +% the ability to do double column floats at the bottom of the page as well +% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in +% LaTeX2e). It also provides a command: +%\fnbelowfloat +% to enable the placement of footnotes below bottom floats (the standard +% LaTeX2e kernel puts them above bottom floats). This is an invasive package +% which rewrites many portions of the LaTeX2e float routines. It may not work +% with other packages that modify the LaTeX2e float routines. The latest +% version and documentation can be obtained at: +% http://www.ctan.org/pkg/stfloats +% Do not use the stfloats baselinefloat ability as the IEEE does not allow +% \baselineskip to stretch. Authors submitting work to the IEEE should note +% that the IEEE rarely uses double column equations and that authors should try +% to avoid such use. Do not be tempted to use the cuted.sty or midfloat.sty +% packages (also by Sigitas Tolusis) as the IEEE does not format its papers in +% such ways. +% Do not attempt to use stfloats with fixltx2e as they are incompatible. +% Instead, use Morten Hogholm'a dblfloatfix which combines the features +% of both fixltx2e and stfloats: +% +% \usepackage{dblfloatfix} +% The latest version can be found at: +% http://www.ctan.org/pkg/dblfloatfix + + + + +% *** PDF, URL AND HYPERLINK PACKAGES *** +% +%\usepackage{url} +% url.sty was written by Donald Arseneau. It provides better support for +% handling and breaking URLs. url.sty is already installed on most LaTeX +% systems. The latest version and documentation can be obtained at: +% http://www.ctan.org/pkg/url +% Basically, \url{my_url_here}. + + + + +% *** Do not adjust lengths that control margins, column widths, etc. *** +% *** Do not use packages that alter fonts (such as pslatex). *** +% There should be no need to do such things with IEEEtran.cls V1.6 and later. +% (Unless specifically asked to do so by the journal or conference you plan +% to submit to, of course. ) + + +% correct bad hyphenation here +\hyphenation{op-tical net-works semi-conduc-tor} + + +\begin{document} +% +% paper title +% Titles are generally capitalized except for words such as a, an, and, as, +% at, but, by, for, in, nor, of, on, or, the, to and up, which are usually +% not capitalized unless they are the first or last word of the title. +% Linebreaks \\ can be used within to get better formatting as desired. +% Do not put math or special symbols in the title. +\title{Bare Demo of IEEEtran.cls\\ for IEEE Conferences} + + +% author names and affiliations +% use a multiple column layout for up to three different +% affiliations +\author{\IEEEauthorblockN{Michael Shell} +\IEEEauthorblockA{School of Electrical and\\Computer Engineering\\ +Georgia Institute of Technology\\ +Atlanta, Georgia 30332--0250\\ +Email: http://www.michaelshell.org/contact.html} +\and +\IEEEauthorblockN{Homer Simpson} +\IEEEauthorblockA{Twentieth Century Fox\\ +Springfield, USA\\ +Email: homer@thesimpsons.com} +\and +\IEEEauthorblockN{James Kirk\\ and Montgomery Scott} +\IEEEauthorblockA{Starfleet Academy\\ +San Francisco, California 96678--2391\\ +Telephone: (800) 555--1212\\ +Fax: (888) 555--1212}} + +% conference papers do not typically use \thanks and this command +% is locked out in conference mode. If really needed, such as for +% the acknowledgment of grants, issue a \IEEEoverridecommandlockouts +% after \documentclass + +% for over three affiliations, or if they all won't fit within the width +% of the page, use this alternative format: +% +%\author{\IEEEauthorblockN{Michael Shell\IEEEauthorrefmark{1}, +%Homer Simpson\IEEEauthorrefmark{2}, +%James Kirk\IEEEauthorrefmark{3}, +%Montgomery Scott\IEEEauthorrefmark{3} and +%Eldon Tyrell\IEEEauthorrefmark{4}} +%\IEEEauthorblockA{\IEEEauthorrefmark{1}School of Electrical and Computer Engineering\\ +%Georgia Institute of Technology, +%Atlanta, Georgia 30332--0250\\ Email: see http://www.michaelshell.org/contact.html} +%\IEEEauthorblockA{\IEEEauthorrefmark{2}Twentieth Century Fox, Springfield, USA\\ +%Email: homer@thesimpsons.com} +%\IEEEauthorblockA{\IEEEauthorrefmark{3}Starfleet Academy, San Francisco, California 96678-2391\\ +%Telephone: (800) 555--1212, Fax: (888) 555--1212} +%\IEEEauthorblockA{\IEEEauthorrefmark{4}Tyrell Inc., 123 Replicant Street, Los Angeles, California 90210--4321}} + + + + +% use for special paper notices +%\IEEEspecialpapernotice{(Invited Paper)} + + + + +% make the title area +\maketitle + +% As a general rule, do not put math, special symbols or citations +% in the abstract +\begin{abstract} +The abstract goes here. +\end{abstract} + +% no keywords + + + + +% For peer review papers, you can put extra information on the cover +% page as needed: +% \ifCLASSOPTIONpeerreview +% \begin{center} \bfseries EDICS Category: 3-BBND \end{center} +% \fi +% +% For peerreview papers, this IEEEtran command inserts a page break and +% creates the second title. It will be ignored for other modes. +\IEEEpeerreviewmaketitle + + + +\section{Introduction} +% no \IEEEPARstart +This demo file is intended to serve as a ``starter file'' +for IEEE conference papers produced under \LaTeX\ using +IEEEtran.cls version 1.8b and later. +% You must have at least 2 lines in the paragraph with the drop letter +% (should never be an issue) +I wish you the best of success. + +\hfill mds + +\hfill August 26, 2015 + +\subsection{Subsection Heading Here} +Subsection text here. + + +\subsubsection{Subsubsection Heading Here} +Subsubsection text here. + + +% An example of a floating figure using the graphicx package. +% Note that \label must occur AFTER (or within) \caption. +% For figures, \caption should occur after the \includegraphics. +% Note that IEEEtran v1.7 and later has special internal code that +% is designed to preserve the operation of \label within \caption +% even when the captionsoff option is in effect. However, because +% of issues like this, it may be the safest practice to put all your +% \label just after \caption rather than within \caption{}. +% +% Reminder: the "draftcls" or "draftclsnofoot", not "draft", class +% option should be used if it is desired that the figures are to be +% displayed while in draft mode. +% +%\begin{figure}[!t] +%\centering +%\includegraphics[width=2.5in]{myfigure} +% where an .eps filename suffix will be assumed under latex, +% and a .pdf suffix will be assumed for pdflatex; or what has been declared +% via \DeclareGraphicsExtensions. +%\caption{Simulation results for the network.} +%\label{fig_sim} +%\end{figure} + +% Note that the IEEE typically puts floats only at the top, even when this +% results in a large percentage of a column being occupied by floats. + + +% An example of a double column floating figure using two subfigures. +% (The subfig.sty package must be loaded for this to work.) +% The subfigure \label commands are set within each subfloat command, +% and the \label for the overall figure must come after \caption. +% \hfil is used as a separator to get equal spacing. +% Watch out that the combined width of all the subfigures on a +% line do not exceed the text width or a line break will occur. +% +%\begin{figure*}[!t] +%\centering +%\subfloat[Case I]{\includegraphics[width=2.5in]{box}% +%\label{fig_first_case}} +%\hfil +%\subfloat[Case II]{\includegraphics[width=2.5in]{box}% +%\label{fig_second_case}} +%\caption{Simulation results for the network.} +%\label{fig_sim} +%\end{figure*} +% +% Note that often IEEE papers with subfigures do not employ subfigure +% captions (using the optional argument to \subfloat[]), but instead will +% reference/describe all of them (a), (b), etc., within the main caption. +% Be aware that for subfig.sty to generate the (a), (b), etc., subfigure +% labels, the optional argument to \subfloat must be present. If a +% subcaption is not desired, just leave its contents blank, +% e.g., \subfloat[]. + + +% An example of a floating table. Note that, for IEEE style tables, the +% \caption command should come BEFORE the table and, given that table +% captions serve much like titles, are usually capitalized except for words +% such as a, an, and, as, at, but, by, for, in, nor, of, on, or, the, to +% and up, which are usually not capitalized unless they are the first or +% last word of the caption. Table text will default to \footnotesize as +% the IEEE normally uses this smaller font for tables. +% The \label must come after \caption as always. +% +%\begin{table}[!t] +%% increase table row spacing, adjust to taste +%\renewcommand{\arraystretch}{1.3} +% if using array.sty, it might be a good idea to tweak the value of +% \extrarowheight as needed to properly center the text within the cells +%\caption{An Example of a Table} +%\label{table_example} +%\centering +%% Some packages, such as MDW tools, offer better commands for making tables +%% than the plain LaTeX2e tabular which is used here. +%\begin{tabular}{|c||c|} +%\hline +%One & Two\\ +%\hline +%Three & Four\\ +%\hline +%\end{tabular} +%\end{table} + + +% Note that the IEEE does not put floats in the very first column +% - or typically anywhere on the first page for that matter. Also, +% in-text middle ("here") positioning is typically not used, but it +% is allowed and encouraged for Computer Society conferences (but +% not Computer Society journals). Most IEEE journals/conferences use +% top floats exclusively. +% Note that, LaTeX2e, unlike IEEE journals/conferences, places +% footnotes above bottom floats. This can be corrected via the +% \fnbelowfloat command of the stfloats package. + + + + +\section{Conclusion} +The conclusion goes here. + + + + +% conference papers do not normally have an appendix + + +% use section* for acknowledgment +\section*{Acknowledgment} + + +The authors would like to thank... + + + + + +% trigger a \newpage just before the given reference +% number - used to balance the columns on the last page +% adjust value as needed - may need to be readjusted if +% the document is modified later +%\IEEEtriggeratref{8} +% The "triggered" command can be changed if desired: +%\IEEEtriggercmd{\enlargethispage{-5in}} + +% references section + +% can use a bibliography generated by BibTeX as a .bbl file +% BibTeX documentation can be easily obtained at: +% http://mirror.ctan.org/biblio/bibtex/contrib/doc/ +% The IEEEtran BibTeX style support page is at: +% http://www.michaelshell.org/tex/ieeetran/bibtex/ +%\bibliographystyle{IEEEtran} +% argument is your BibTeX string definitions and bibliography database(s) +%\bibliography{IEEEabrv,../bib/paper} +% +% manually copy in the resultant .bbl file +% set second argument of \begin to the number of references +% (used to reserve space for the reference number labels box) +\begin{thebibliography}{1} + +\bibitem{IEEEhowto:kopka} +H.~Kopka and P.~W. Daly, \emph{A Guide to \LaTeX}, 3rd~ed.\hskip 1em plus + 0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999. + +\end{thebibliography} + + + + +% that's all folks +\end{document} + + From 9c9a84640395e0bc2378f5299023c0f6c591661e Mon Sep 17 00:00:00 2001 From: Paul Wortman Date: Mon, 9 Nov 2015 20:49:36 -0500 Subject: [PATCH 3/3] Additions to PBDSec paper Signed-off-by: Paul Wortman --- PBDSecPaper.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PBDSecPaper.tex b/PBDSecPaper.tex index 640fee1..47f7e80 100644 --- a/PBDSecPaper.tex +++ b/PBDSecPaper.tex @@ -185,13 +185,13 @@ Security design, development, verification, and evaluation is still a relatively \section{Conclusion} \label{Conclusion} -There is a need for development of platform-based design for security elements of all types, across all platforms. The mechanisms and procedures required are already in use, but this does not mean platform-based design for security already here. For platform-based design of security there is an absolute need for standardization, or `contracts', for all elements that compose a larger distributed systems. The reason being that without these `contracts' to clearly state the expectations of various inputs, and outputs, then there is no guarentee that any designs/developments will be able to harmonize with the rest of a complex system. Additionally this is important for determining the trustworthiness of not only different elements, but of the entire distributed system as a whole. Advantages of security mapped to PBD include swapping out old security modules with newer ones (re-use of base system), degree of system customization to meet system hardware/software needs, ease of development (and costs). The most glaring disadvantages are those that come with the shifting of any paradigm. As with any new shift in design methodoloy the largest cost in this new system would be the need for rigorous documentation and standardization of the process, components, and communication elements of said components. This is why the development of groundwork for PBD-Security designs will be a slow and arduous process, but the resulting `paydirt' will be a new set of virtualization tools at abstraction levels with design spaces yet not truly explored at regualr levels. The hope of this paper is to begin designing a frame work that pushes for not only better system design and development (PBD) but also for proper incorporation and planning of system security in an intelligent, rigorous and documented/standardized way. As with the design of any tool there are concerns during the development, evaluations and valdiation processes~\cite{Pinto2006}. Common pitfalls of development are mishandling corner cases and inadvertently misinterpreting changes in the communication semantics. Problems arise because of poor understanding and the lack of precise, rigorous, definitions of the abstraction and refinement maps used in the design flow. Abstraction and refinement should be designed to preserve, whenever possible, the properties of the design that have already been established (e.g. the 'contract' of the design). With time will come rigorous standards and useful virtualaztion tools for thorough exploration of design spaces for both hardware and software elements. +There is a need for development of platform-based design for security elements of all types, across all platforms. The mechanisms and procedures required are already in use, but this does not mean platform-based design for security is already here. For platform-based design of security there is an absolute need for standardization, or `contracts', for all elements that compose a larger distributed systems. The reason being that without these `contracts' to clearly state the expectations of various inputs, and outputs, then there is no guarentee that any designs/developments will be able to harmonize with the rest of a complex system. Additionally this is important for determining the trustworthiness of not only different elements, but of the entire distributed system as a whole. Advantages of security mapped to PBD include swapping out old security modules with newer ones (re-use of base system), degree of system customization to meet system hardware/software needs, ease of development (and costs). The most glaring disadvantages are those that come with the shifting of any paradigm. As with any new shift in design methodoloy the largest cost in this new system would be the need for rigorous documentation and standardization of the process, components, and communication elements of said components. This is why the development of groundwork for PBD-Security designs will be a slow and arduous process, but the resulting `paydirt' will be a new set of virtualization tools at abstraction levels with design spaces yet not truly explored at regualr levels. The hope of this paper is to begin designing a frame work that pushes for not only better system design and development (PBD) but also for proper incorporation and planning of system security in an intelligent, rigorous and documented/standardized way. As with the design of any tool there are concerns during the development, evaluations and valdiation processes~\cite{Pinto2006}. Common pitfalls of development are mishandling corner cases and inadvertently misinterpreting changes in the communication semantics. Problems arise because of poor understanding and the lack of precise, rigorous, definitions of the abstraction and refinement maps used in the design flow. Abstraction and refinement should be designed to preserve, whenever possible, the properties of the design that have already been established (e.g. the 'contract' of the design). With time will come rigorous standards and useful virtualaztion tools for thorough exploration of design spaces for both hardware and software elements. With these concepts in-mind, it should be obvious that security design \textbf{must} occur from the start! Unless security design is incorporated apriori, a developer can only hope to spend the rest of the development processes, and beyond, attempting to secure a system that took security as optional. Simply put, data \textbf{must} be kept safe. In addition, performing security planning from the start allows for disaster planning and any other possible 'unforeseen' complications. Others are incorporating platform-based design in everything from image processing to implementing security across different domains~\cite{Lin2015}. People are seeing the use and effectiveness of this sort of design methodology and it is the belief of this paper that more focus should be placed on this topic. Platform-based design should be the basis for security design and development. -The reference monitor seems a favorable choice as this sort of model is already used in distributed systems, but there is an extremely important need to maintain the security/trust/trustworthiness of this reference monitor (abstraction for necessary and sufficient features of component that enforces access controll in secure systems). It is the belief of this paper that an initial starting point for PBD-Security design development is to use this existing reference monitor concept, along with other developed tools (e.g. CBSE, TPM), and piece together the initial framework and early phase development for this new methodology, so that future efforts can be spent developing and perfecting this technique. +This paper can not be concluded without proposing a framework that is believed to be the jumping point for a security model to begin the adaptation of platform-based design into security development. The reference monitor seems a favorable choice as this sort of model is already used in distributed systems, but there is an extremely important need to maintain the security/trust/trustworthiness of this reference monitor (abstraction for necessary and sufficient features of component that enforces access controll in secure systems). While it should be immediately seen that there are faults with this design (e.g. single point of failure), do not allow these shortcomings to run your doubt. It is the belief of this paper that an initial starting point for PBD-Security design development is to use this existing reference monitor concept, along with other developed tools (e.g. CBSE, TPM), and piece together the initial framework and early phase development for this new methodology, so that future efforts can be spent developing and perfecting this technique. %references section %\bibliographystyle{plain}