From c440983e40c5625eba3a416d6d8951d0eec52473 Mon Sep 17 00:00:00 2001 From: dfridovi Date: Thu, 23 Jul 2026 16:40:05 +0200 Subject: [PATCH 01/41] Add LaTeX technical report skeleton (docs/paper/) First draft: abstract, teaser figure placeholder, and full introduction for a short report advertising the batched interior-point solver against PATH, with a focus on trajectory-game benchmarks. Vendors IEEEtran.cls/.bst locally since neither is available via this machine's TeX Live install, and adds a Makefile wrapping the pdflatex/bibtex build sequence. Co-Authored-By: Claude Sonnet 5 --- docs/paper/.gitignore | 10 + docs/paper/IEEEtran.bst | 2369 +++++++++++++++ docs/paper/IEEEtran.cls | 6347 +++++++++++++++++++++++++++++++++++++++ docs/paper/Makefile | 23 + docs/paper/main.pdf | Bin 0 -> 118783 bytes docs/paper/main.tex | 166 + docs/paper/refs.bib | 10 + 7 files changed, 8925 insertions(+) create mode 100644 docs/paper/.gitignore create mode 100644 docs/paper/IEEEtran.bst create mode 100644 docs/paper/IEEEtran.cls create mode 100644 docs/paper/Makefile create mode 100644 docs/paper/main.pdf create mode 100644 docs/paper/main.tex create mode 100644 docs/paper/refs.bib diff --git a/docs/paper/.gitignore b/docs/paper/.gitignore new file mode 100644 index 0000000..b1c802c --- /dev/null +++ b/docs/paper/.gitignore @@ -0,0 +1,10 @@ +*.aux +*.log +*.out +*.bbl +*.blg +*.synctex.gz +*.fdb_latexmk +*.fls +missfont.log +build.log diff --git a/docs/paper/IEEEtran.bst b/docs/paper/IEEEtran.bst new file mode 100644 index 0000000..b2c7edc --- /dev/null +++ b/docs/paper/IEEEtran.bst @@ -0,0 +1,2369 @@ +%% +%% IEEEtran.bst +%% BibTeX Bibliography Style file for IEEE Journals and Conferences (unsorted) +%% Version 1.11 (2003/04/02) +%% +%% Copyright (c) 2003 Michael Shell +%% +%% Original starting code base and algorithms obtained from the output of +%% Patrick W. Daly's makebst package as well as from prior versions of +%% IEEE BibTeX styles: +%% +%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988) +%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993) +%% +%% +%% See: +%% http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/ +%% for latest version and current contact information. +%% +%% For use with BibTeX version 0.99a or later +%% +%% This is a numerical citation style. +%% +%%********************************************************************** +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% This code is distributed under the Perl Artistic License +%% ( http://language.perl.com/misc/Artistic.html ) +%% and may be freely used, distributed and modified - subject to the +%% constraints therein. +%% Retain all contribution notices, credits and disclaimers. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%%********************************************************************** +% +% +% Changelog: +% +% 1.00 (2002/08/13) Initial release +% +% 1.10 (2002/09/27) +% 1. Corrected minor bug for improperly formed warning message when a +% book was not given a title. Thanks to Ming Kin Lai for reporting this. +% 2. Added support for CTLname_format_string and CTLname_latex_cmd fields +% in the BST control entry type. +% +% 1.11 (2003/04/02) +% 1. Fixed bug with URLs containing underscores when using url.sty. Thanks +% to Ming Kin Lai for reporting this. + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% These are the defaults for the user adjustable controls. The values used +% here can be overridden by the user via IEEEtranBSTCTL entry type. + +% NOTE: The recommended LaTeX command to invoke a control entry type is: +% +%\makeatletter +%\def\bstctlcite#1{\@bsphack +% \@for\@citeb:=#1\do{% +% \edef\@citeb{\expandafter\@firstofone\@citeb}% +% \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi}% +% \@esphack} +%\makeatother +% +% It is called at the start of the document, before the first \cite, like: +% \bstctlcite{IEEEexample:BSTcontrol} +% +% IEEEtran.cls V1.6 and later does provide this command. + + + +% #0 turns off the display of the number for articles. +% #1 enables +FUNCTION {default.is.use.number.for.article} { #1 } + + +% #0 turns off the display of the paper and type fields in @inproceedings. +% #1 enables +FUNCTION {default.is.use.paper} { #1 } + + +% #0 turns off the forced use of "et al." +% #1 enables +FUNCTION {default.is.forced.et.al} { #0 } + +% The maximum number of names that can be present beyond which an "et al." +% usage is forced. Be sure that num.names.shown.with.forced.et.al (below) +% is not greater than this value! +% Note: There are many instances of references in IEEE journals which have +% a very large number of authors as well as instances in which "et al." is +% used profusely. +FUNCTION {default.max.num.names.before.forced.et.al} { #10 } + +% The number of names that will be shown with a forced "et al.". +% Must be less than or equal to max.num.names.before.forced.et.al +FUNCTION {default.num.names.shown.with.forced.et.al} { #1 } + + +% #0 turns off the alternate interword spacing for entries with URLs. +% #1 enables +FUNCTION {default.is.use.alt.interword.spacing} { #1 } + +% If alternate interword spacing for entries with URLs is enabled, this is +% the interword spacing stretch factor that will be used. For example, the +% default "4" here means that the interword spacing in entries with URLs can +% stretch to four times normal. Does not have to be an integer. Note that +% the value specified here can be overridden by the user in their LaTeX +% code via a command such as: +% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to +% that via the IEEEtranBSTCTL entry type. +FUNCTION {default.ALTinterwordstretchfactor} { "4" } + + +% #0 turns off the "dashification" of repeated (i.e., identical to those +% of the previous entry) names. IEEE normally does this. +% #1 enables +FUNCTION {default.is.dash.repeated.names} { #1 } + + +% The default name format control string. +FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" } + + +% The default LaTeX font command for the names. +FUNCTION {default.name.latex.cmd}{ "" } + + +% Other controls that cannot be accessed via IEEEtranBSTCTL entry type. + +% #0 turns off the terminal startup banner/completed message so as to +% operate more quietly. +% #1 enables +FUNCTION {is.print.banners.to.terminal} { #1 } + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% FILE VERSION AND BANNER %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION{bst.file.version} { "1.11" } +FUNCTION{bst.file.date} { "2003/04/02" } +FUNCTION{bst.file.website} { "http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/" } + +FUNCTION {banner.message} +{ is.print.banners.to.terminal + { "-- IEEEtran.bst version" " " * bst.file.version * + " (" * bst.file.date * ") " * "by Michael Shell." * + top$ + "-- " bst.file.website * + top$ + "-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." * + top$ + } + { skip$ } + if$ +} + +FUNCTION {completed.message} +{ is.print.banners.to.terminal + { "" + top$ + "Done." + top$ + } + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING CONSTANTS %% +%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {bbl.and}{ "and" } +FUNCTION {bbl.etal}{ "et~al." } +FUNCTION {bbl.editors}{ "eds." } +FUNCTION {bbl.editor}{ "ed." } +FUNCTION {bbl.edition}{ "ed." } +FUNCTION {bbl.volume}{ "vol." } +FUNCTION {bbl.of}{ "of" } +FUNCTION {bbl.number}{ "no." } +FUNCTION {bbl.in}{ "in" } +FUNCTION {bbl.pages}{ "pp." } +FUNCTION {bbl.page}{ "p." } +FUNCTION {bbl.chapter}{ "ch." } +FUNCTION {bbl.paper}{ "paper" } +FUNCTION {bbl.part}{ "pt." } +FUNCTION {bbl.patent}{ "Patent" } +FUNCTION {bbl.patentUS}{ "U.S." } +FUNCTION {bbl.revision}{ "Rev." } +FUNCTION {bbl.series}{ "ser." } +FUNCTION {bbl.standard}{ "Std." } +FUNCTION {bbl.techrep}{ "Tech. Rep." } +FUNCTION {bbl.mthesis}{ "Master's thesis" } +FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" } +FUNCTION {bbl.urlprefix}{ "[Online]. Available:" } +FUNCTION {bbl.st}{ "st" } +FUNCTION {bbl.nd}{ "nd" } +FUNCTION {bbl.rd}{ "rd" } +FUNCTION {bbl.th}{ "th" } + + +% This is the LaTeX spacer that is used when a larger than normal space +% is called for (such as just before the address:publisher). +FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " } + +% The LaTeX code for dashes that are used to represent repeated names. +% Note: Some older IEEE journals used something like +% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along +% the baseline. However, IEEE now uses a thinner, above baseline, +% six dash long sequence. +FUNCTION {repeated.name.dashes} { "------" } + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% PREDEFINED STRING MACROS %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +MACRO {jan} {"Jan."} +MACRO {feb} {"Feb."} +MACRO {mar} {"Mar."} +MACRO {apr} {"Apr."} +MACRO {may} {"May"} +MACRO {jun} {"June"} +MACRO {jul} {"July"} +MACRO {aug} {"Aug."} +MACRO {sep} {"Sept."} +MACRO {oct} {"Oct."} +MACRO {nov} {"Nov."} +MACRO {dec} {"Dec."} + + + +%%%%%%%%%%%%%%%%%% +%% ENTRY FIELDS %% +%%%%%%%%%%%%%%%%%% + +ENTRY + { address + assignee + author + booktitle + chapter + day + dayfiled + edition + editor + howpublished + institution + intype + journal + key + language + month + monthfiled + nationality + note + number + organization + pages + paper + publisher + school + series + revision + title + type + url + volume + year + yearfiled + CTLuse_article_number + CTLuse_paper + CTLuse_forced_etal + CTLmax_names_forced_etal + CTLnames_show_etal + CTLuse_alt_spacing + CTLalt_stretch_factor + CTLdash_repeated_names + CTLname_format_string + CTLname_latex_cmd + } + {} + { label } + + + + +%%%%%%%%%%%%%%%%%%%%%%% +%% INTEGER VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%%% + +INTEGERS { prev.status.punct this.status.punct punct.std + punct.no punct.comma punct.period + prev.status.space this.status.space space.std + space.no space.normal space.large + prev.status.quote this.status.quote quote.std + quote.no quote.close + prev.status.nline this.status.nline nline.std + nline.no nline.newblock + status.cap cap.std + cap.no cap.yes} + +INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames } + +INTEGERS { is.use.number.for.article + is.use.paper + is.forced.et.al + max.num.names.before.forced.et.al + num.names.shown.with.forced.et.al + is.use.alt.interword.spacing + is.dash.repeated.names} + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%% + +STRINGS { bibinfo + longest.label + oldname + s + t + ALTinterwordstretchfactor + name.format.string + name.latex.cmd} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOW LEVEL FUNCTIONS %% +%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.controls} +{ default.is.use.number.for.article 'is.use.number.for.article := + default.is.use.paper 'is.use.paper := + default.is.forced.et.al 'is.forced.et.al := + default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al := + default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al := + default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing := + default.is.dash.repeated.names 'is.dash.repeated.names := + default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor := + default.name.format.string 'name.format.string := + default.name.latex.cmd 'name.latex.cmd := +} + + +% This IEEEtran.bst features a very powerful and flexible mechanism for +% controlling the capitalization, punctuation, spacing, quotation, and +% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need +% or use the newline/newblock feature, but it has been implemented for +% possible future use.) The output states of IEEEtran.bst consist of +% multiple independent attributes and, as such, can be thought of as being +% vectors, rather than the simple scalar values ("before.all", +% "mid.sentence", etc.) used in most other .bst files. +% +% The more flexible and complex design used here was motivated in part by +% IEEE's rather unusual bibliography style. For example, IEEE ends the +% previous field item with a period and large space prior to the publisher +% address; the @electronic entry types use periods as inter-item punctuation +% rather than the commas used by the other entry types; and URLs are never +% followed by periods even though they are the last item in the entry. +% Although it is possible to accommodate these features with the conventional +% output state system, the seemingly endless exceptions make for convoluted, +% unreliable and difficult to maintain code. +% +% IEEEtran.bst's output state system can be easily understood via a simple +% illustration of two most recently formatted entry fields (on the stack): +% +% CURRENT_ITEM +% "PREVIOUS_ITEM +% +% which, in this example, is to eventually appear in the bibliography as: +% +% "PREVIOUS_ITEM," CURRENT_ITEM +% +% It is the job of the output routine to take the previous item off of the +% stack (while leaving the current item at the top of the stack), apply its +% trailing punctuation (including closing quote marks) and spacing, and then +% to write the result to BibTeX's output buffer: +% +% "PREVIOUS_ITEM," +% +% Punctuation (and spacing) between items is often determined by both of the +% items rather than just the first one. The presence of quotation marks +% further complicates the situation because, in standard English, trailing +% punctuation marks are supposed to be contained within the quotes. +% +% IEEEtran.bst maintains two output state (aka "status") vectors which +% correspond to the previous and current (aka "this") items. Each vector +% consists of several independent attributes which track punctuation, +% spacing, quotation, and newlines. Capitalization status is handled by a +% separate scalar because the format routines, not the output routine, +% handle capitalization and, therefore, there is no need to maintain the +% capitalization attribute for both the "previous" and "this" items. +% +% When a format routine adds a new item, it copies the current output status +% vector to the previous output status vector and (usually) resets the +% current (this) output status vector to a "standard status" vector. Using a +% "standard status" vector in this way allows us to redefine what we mean by +% "standard status" at the start of each entry handler and reuse the same +% format routines under the various inter-item separation schemes. For +% example, the standard status vector for the @book entry type may use +% commas for item separators, while the @electronic type may use periods, +% yet both entry handlers exploit many of the exact same format routines. +% +% Because format routines have write access to the output status vector of +% the previous item, they can override the punctuation choices of the +% previous format routine! Therefore, it becomes trivial to implement rules +% such as "Always use a period and a large space before the publisher." By +% pushing the generation of the closing quote mark to the output routine, we +% avoid all the problems caused by having to close a quote before having all +% the information required to determine what the punctuation should be. +% +% The IEEEtran.bst output state system can easily be expanded if needed. +% For instance, it is easy to add a "space.tie" attribute value if the +% bibliography rules mandate that two items have to be joined with an +% unbreakable space. + +FUNCTION {initialize.status.constants} +{ #0 'punct.no := + #1 'punct.comma := + #2 'punct.period := + #0 'space.no := + #1 'space.normal := + #2 'space.large := + #0 'quote.no := + #1 'quote.close := + #0 'cap.no := + #1 'cap.yes := + #0 'nline.no := + #1 'nline.newblock := +} + +FUNCTION {std.status.using.comma} +{ punct.comma 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.no 'cap.std := +} + +FUNCTION {std.status.using.period} +{ punct.period 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.yes 'cap.std := +} + +FUNCTION {initialize.prev.this.status} +{ punct.no 'prev.status.punct := + space.no 'prev.status.space := + quote.no 'prev.status.quote := + nline.no 'prev.status.nline := + punct.no 'this.status.punct := + space.no 'this.status.space := + quote.no 'this.status.quote := + nline.no 'this.status.nline := + cap.yes 'status.cap := +} + +FUNCTION {this.status.std} +{ punct.std 'this.status.punct := + space.std 'this.status.space := + quote.std 'this.status.quote := + nline.std 'this.status.nline := +} + +FUNCTION {cap.status.std}{ cap.std 'status.cap := } + +FUNCTION {this.to.prev.status} +{ this.status.punct 'prev.status.punct := + this.status.space 'prev.status.space := + this.status.quote 'prev.status.quote := + this.status.nline 'prev.status.nline := +} + + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ { skip$ } + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + { skip$ } + if$ +} + + +% convert the strings "yes" or "no" to #1 or #0 respectively +FUNCTION {yes.no.to.int} +{ "l" change.case$ duplicate$ + "yes" = + { pop$ #1 } + { duplicate$ "no" = + { pop$ #0 } + { "unknown boolean " quote$ * swap$ * quote$ * + " in " * cite$ * warning$ + #0 + } + if$ + } + if$ +} + + +% pushes true if the single char string on the stack is in the +% range of "0" to "9" +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +% multiplies the integer on the stack by a factor of 10 +FUNCTION {bump.int.mag} +{ #0 'multiresult := + { duplicate$ #0 > } + { #1 - + multiresult #10 + + 'multiresult := + } + while$ +pop$ +multiresult +} + +% converts a single character string on the stack to an integer +FUNCTION {char.to.integer} +{ duplicate$ + is.num + { chr.to.int$ "0" chr.to.int$ - } + {"noninteger character " quote$ * swap$ * quote$ * + " in integer field of " * cite$ * warning$ + #0 + } + if$ +} + +% converts a string on the stack to an integer +FUNCTION {string.to.integer} +{ duplicate$ text.length$ 'namesleft := + #1 'nameptr := + #0 'numnames := + { nameptr namesleft > not } + { duplicate$ nameptr #1 substring$ + char.to.integer numnames bump.int.mag + + 'numnames := + nameptr #1 + + 'nameptr := + } + while$ +pop$ +numnames +} + + + + +% The output routines write out the *next* to the top (previous) item on the +% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains +% the output status for the top two items on the stack, these output +% routines have to consider the previous output status (which corresponds to +% the item that is being output). Full independent control of punctuation, +% closing quote marks, spacing, and newblock is provided. +% +% "output.nonnull" does not check for the presence of a previous empty +% item. +% +% "output" does check for the presence of a previous empty item and will +% remove an empty item rather than outputing it. +% +% "output.warn" is like "output", but will issue a warning if it detects +% an empty item. + +FUNCTION {output.nonnull} +{ swap$ + prev.status.punct punct.comma = + { "," * } + { skip$ } + if$ + prev.status.punct punct.period = + { add.period$ } + { skip$ } + if$ + prev.status.quote quote.close = + { "''" * } + { skip$ } + if$ + prev.status.space space.normal = + { " " * } + { skip$ } + if$ + prev.status.space space.large = + { large.space * } + { skip$ } + if$ + write$ + prev.status.nline nline.newblock = + { newline$ "\newblock " write$ } + { skip$ } + if$ +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.warn} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +% "fin.entry" is the output routine that handles the last item of the entry +% (which will be on the top of the stack when "fin.entry" is called). + +FUNCTION {fin.entry} +{ this.status.punct punct.no = + { skip$ } + { add.period$ } + if$ + this.status.quote quote.close = + { "''" * } + { skip$ } + if$ +write$ +newline$ +} + + +FUNCTION {is.last.char.not.punct} +{ duplicate$ + "}" * add.period$ + #-1 #1 substring$ "." = +} + +FUNCTION {is.multiple.pages} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ } + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {do.name.latex.cmd} +{ name.latex.cmd + empty$ + { skip$ } + { name.latex.cmd "{" * swap$ * "}" * } + if$ +} + +% IEEEtran.bst uses its own \BIBforeignlanguage command which directly +% invokes the TeX hyphenation patterns without the need of the Babel +% package. Babel does a lot more than switch hyphenation patterns and +% its loading can cause unintended effects in many class files (such as +% IEEEtran.cls). +FUNCTION {select.language} +{ duplicate$ empty$ 'pop$ + { language empty$ 'skip$ + { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * } + if$ + } + if$ +} + +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} + +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {space.word}{ " " swap$ * " " * } + + +% Field Conditioners, Converters, Checkers and External Interfaces + +FUNCTION {empty.field.to.null.string} +{ duplicate$ empty$ + { pop$ "" } + { skip$ } + if$ +} + +FUNCTION {either.or.check} +{ empty$ + { pop$ } + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {empty.entry.warn} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ url empty$ + and and and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + + +% The bibinfo system provides a way for the electronic parsing/acquisition +% of a bibliography's contents as is done by ReVTeX. For example, a field +% could be entered into the bibliography as: +% \bibinfo{volume}{2} +% Only the "2" would show up in the document, but the LaTeX \bibinfo command +% could do additional things with the information. IEEEtran.bst does provide +% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is +% currently not used as the bogus bibinfo functions defined here output the +% entry values directly without the \bibinfo wrapper. The bibinfo functions +% themselves (and the calls to them) are retained for possible future use. +% +% bibinfo.check avoids acting on missing fields while bibinfo.warn will +% issue a warning message if a missing field is detected. Prior to calling +% the bibinfo functions, the user should push the field value and then its +% name string, in that order. + +FUNCTION {bibinfo.check} +{ swap$ duplicate$ missing$ + { pop$ pop$ "" } + { duplicate$ empty$ + { swap$ pop$ } + { swap$ pop$ } + if$ + } + if$ +} + +FUNCTION {bibinfo.warn} +{ swap$ duplicate$ missing$ + { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" } + { duplicate$ empty$ + { swap$ "empty " swap$ * " in " * cite$ * warning$ } + { swap$ pop$ } + if$ + } + if$ +} + + +% IEEE separates large numbers with more than 4 digits into groups of +% three. IEEE uses a small space to separate these number groups. +% Typical applications include patent and page numbers. + +% number of consecutive digits required to trigger the group separation. +FUNCTION {large.number.trigger}{ #5 } + +% For numbers longer than the trigger, this is the blocksize of the groups. +% The blocksize must be less than the trigger threshold, and 2 * blocksize +% must be greater than the trigger threshold (can't do more than one +% separation on the initial trigger). +FUNCTION {large.number.blocksize}{ #3 } + +% What is actually inserted between the number groups. +FUNCTION {large.number.separator}{ "\," } + +% So as to save on integer variables by reusing existing ones, numnames +% holds the current number of consecutive digits read and nameptr holds +% the number that will trigger an inserted space. +FUNCTION {large.number.separate} +{ 't := + "" + #0 'numnames := + large.number.trigger 'nameptr := + { t empty$ not } + { t #-1 #1 substring$ is.num + { numnames #1 + 'numnames := } + { #0 'numnames := + large.number.trigger 'nameptr := + } + if$ + t #-1 #1 substring$ swap$ * + t #-2 global.max$ substring$ 't := + numnames nameptr = + { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$ + nameptr large.number.blocksize - #1 + global.max$ substring$ + large.number.separator swap$ * * + nameptr large.number.blocksize - 'numnames := + large.number.blocksize #1 + 'nameptr := + } + { skip$ } + if$ + } + while$ +} + +% Converts all single dashes "-" to double dashes "--". +FUNCTION {n.dashify} +{ large.number.separate + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + + +% This function detects entries with names that are identical to that of +% the previous entry and replaces the repeated names with dashes (if the +% "is.dash.repeated.names" user control is nonzero). +FUNCTION {name.or.dash} +{ 's := + oldname empty$ + { s 'oldname := s } + { s oldname = + { is.dash.repeated.names + { repeated.name.dashes } + { s 'oldname := s } + if$ + } + { s 'oldname := s } + if$ + } + if$ +} + +% Converts the number string on the top of the stack to +% "numerical ordinal form" (e.g., "7" to "7th"). There is +% no artificial limit to the upper bound of the numbers as the +% least significant digit always determines the ordinal form. +FUNCTION {num.to.ordinal} +{ duplicate$ #-1 #1 substring$ "1" = + { bbl.st * } + { duplicate$ #-1 #1 substring$ "2" = + { bbl.nd * } + { duplicate$ #-1 #1 substring$ "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ +} + +% If the string on the top of the stack begins with a number, +% (e.g., 11th) then replace the string with the leading number +% it contains. Otherwise retain the string as-is. s holds the +% extracted number, t holds the part of the string that remains +% to be scanned. +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +% Converts the word number string on the top of the stack to +% Arabic string form. Will be successful up to "tenth". +FUNCTION {word.to.num} +{ duplicate$ "l" change.case$ 's := + s "first" = + { pop$ "1" } + { skip$ } + if$ + s "second" = + { pop$ "2" } + { skip$ } + if$ + s "third" = + { pop$ "3" } + { skip$ } + if$ + s "fourth" = + { pop$ "4" } + { skip$ } + if$ + s "fifth" = + { pop$ "5" } + { skip$ } + if$ + s "sixth" = + { pop$ "6" } + { skip$ } + if$ + s "seventh" = + { pop$ "7" } + { skip$ } + if$ + s "eighth" = + { pop$ "8" } + { skip$ } + if$ + s "ninth" = + { pop$ "9" } + { skip$ } + if$ + s "tenth" = + { pop$ "10" } + { skip$ } + if$ +} + + +% Converts the string on the top of the stack to numerical +% ordinal (e.g., "11th") form. +FUNCTION {convert.edition} +{ duplicate$ empty$ 'skip$ + { duplicate$ #1 #1 substring$ is.num + { extract.num + num.to.ordinal + } + { word.to.num + duplicate$ #1 #1 substring$ is.num + { num.to.ordinal } + { "edition ordinal word " quote$ * edition * quote$ * + " may be too high (or improper) for conversion" * " in " * cite$ * warning$ + } + if$ + } + if$ + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LATEX BIBLIOGRAPHY CODE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {start.entry} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + initialize.prev.this.status +} + +% Here we write out all the LaTeX code that we will need. The most involved +% code sequences are those that control the alternate interword spacing and +% foreign language hyphenation patterns. The heavy use of \providecommand +% gives users a way to override the defaults. Special thanks to Javier Bezos, +% Johannes Braams, Robin Fairburns, Heiko Oberdiek, Donald Arseneau and all +% the other gurus on comp.text.tex for their help and advice on the topic of +% \selectlanguage, Babel and BibTeX. +FUNCTION {begin.bib} +{ preamble$ empty$ 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ + "\providecommand{\url}[1]{#1}" + write$ newline$ + "\csname url@rmstyle\endcsname" + write$ newline$ + "\providecommand{\newblock}{\relax}" + write$ newline$ + "\providecommand{\bibinfo}[2]{#2}" + write$ newline$ + "\providecommand\BIBentrySTDinterwordspacing{\spaceskip=0pt\relax}" + write$ newline$ + "\providecommand\BIBentryALTinterwordstretchfactor{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + "\providecommand\BIBentryALTinterwordspacing{\spaceskip=\fontdimen2\font plus " + write$ newline$ + "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}" + write$ newline$ + "\providecommand\BIBforeignlanguage[2]{{%" + write$ newline$ + "\expandafter\ifx\csname l@#1\endcsname\relax" + write$ newline$ + "\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%" + write$ newline$ + "\typeout{** loaded for the language `#1'. Using the pattern for}%" + write$ newline$ + "\typeout{** the default language instead.}%" + write$ newline$ + "\else" + write$ newline$ + "\language=\csname l@#1\endcsname" + write$ newline$ + "\fi" + write$ newline$ + "#2}}" + write$ newline$ +} + +FUNCTION {end.bib} +{ newline$ "\end{thebibliography}" write$ newline$ } + +FUNCTION {if.url.alt.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + +FUNCTION {if.url.std.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%% +%% LONGEST LABEL PASS %% +%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%% +%% FORMAT HANDLERS %% +%%%%%%%%%%%%%%%%%%%%% + +%% Lower Level Formats (used by higher level formats) + +FUNCTION {format.address.org.or.pub.date} +{ 't := + "" + year empty$ + { "empty year in " cite$ * warning$ } + { skip$ } + if$ + address empty$ t empty$ and + year empty$ and month empty$ and + { skip$ } + { this.to.prev.status + this.status.std + cap.status.std + address "address" bibinfo.check * + t empty$ + { skip$ } + { punct.period 'prev.status.punct := + space.large 'prev.status.space := + address empty$ + { skip$ } + { ": " * } + if$ + t * + } + if$ + year empty$ month empty$ and + { skip$ } + { t empty$ address empty$ and + { skip$ } + { ", " * } + if$ + month empty$ + { year empty$ + { skip$ } + { year "year" bibinfo.check * } + if$ + } + { month "month" bibinfo.check * + year empty$ + { skip$ } + { " " * year "year" bibinfo.check * } + if$ + } + if$ + } + if$ + } + if$ +} + + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + this.to.prev.status + this.status.std + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + name.format.string + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { nameptr num.names.shown.with.forced.et.al #1 + = + numnames max.num.names.before.forced.et.al > + is.forced.et.al and and + { "others" 't := + #1 'namesleft := + } + { skip$ } + if$ + namesleft #1 > + { ", " * t do.name.latex.cmd * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " " * bbl.etal emphasize * + } + { + bbl.and + space.word * t do.name.latex.cmd * + } + if$ + } + if$ + } + { t do.name.latex.cmd } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + cap.status.std + } if$ +} + + + + +%% Higher Level Formats + +%% addresses/locations + +FUNCTION {format.address} +{ address duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% author/editor names + +FUNCTION {format.authors}{ author "author" format.names } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { ", " * + get.bbl.editor + capitalize + * + } + if$ +} + + + +%% date + +FUNCTION {format.date} +{ + month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { this.to.prev.status + this.status.std + cap.status.std + swap$ 'skip$ + { + swap$ + " " * swap$ + } + if$ + * + } + if$ +} + +FUNCTION {format.date.electronic} +{ month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ + { pop$ } + { "there's a month but no year in " cite$ * warning$ + pop$ ")" * "(" swap$ * + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ + } + { swap$ + { swap$ pop$ ")" * "(" swap$ * } + { "(" swap$ * ", " * swap$ * ")" * } + if$ + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ +} + + + +%% edition/title + +% Note: IEEE considers the edition to be closely associated with +% the title of a book. So, in IEEEtran.bst the edition is normally handled +% within the formatting of the title. The format.edition function is +% retained here for possible future use. +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + convert.edition + status.cap + { "t" } + { "l" } + if$ change.case$ + "edition" bibinfo.check + "~" * bbl.edition * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of a conference proceedings. +% Here we use the "intype" field to provide the user a way to +% override the word "in" (e.g., with things like "presented at") +% Use of intype stops the emphasis of the booktitle to indicate that +% we no longer mean the written conference proceedings, but the +% conference itself. +FUNCTION {format.in.booktitle} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + intype missing$ + { emphasize + bbl.in " " * + } + { intype " " * } + if$ + swap$ * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of collection. +% Here the "intype" field is not supported, but "edition" is. +FUNCTION {format.in.booktitle.edition} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + "l" change.case$ + * "~" * bbl.edition * + } + if$ + bbl.in " " * swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ 'skip$ + { quote.close 'this.status.quote := + is.last.char.not.punct + { punct.std 'this.status.punct := } + { punct.no 'this.status.punct := } + if$ + select.language + "``" swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title.electronic} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ + { skip$ } + { select.language } + if$ +} + +FUNCTION {format.book.title.edition} +{ title "title" bibinfo.check + duplicate$ empty$ + { "empty title in " cite$ * warning$ } + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + status.cap + { "t" } + { "l" } + if$ + change.case$ + * "~" * bbl.edition * + } + if$ + cap.status.std + } + if$ +} + +FUNCTION {format.book.title} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% journal + +FUNCTION {format.journal} +{ journal duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% how published + +FUNCTION {format.howpublished} +{ howpublished duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% institutions/organization/publishers/school + +FUNCTION {format.institution} +{ institution duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.organization} +{ organization duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.address.publisher.date} +{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date } + +FUNCTION {format.address.publisher.date.nowarn} +{ publisher "publisher" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.address.organization.date} +{ organization "organization" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.school} +{ school duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% volume/number/series/chapter/pages + +FUNCTION {format.volume} +{ volume empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + bbl.volume + status.cap + { capitalize } + { skip$ } + if$ + swap$ tie.or.space.prefix + "volume" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number} +{ number empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + status.cap + { bbl.number capitalize } + { bbl.number } + if$ + swap$ tie.or.space.prefix + "number" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number.if.use.for.article} +{ is.use.number.for.article + { format.number } + { "" } + if$ +} + +% IEEE does not seem to tie the series so closely with the volume +% and number as is done in other bibliography styles. Instead the +% series is treated somewhat like an extension of the title. +FUNCTION {format.series} +{ series empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.series " " * + series "series" bibinfo.check * + cap.status.std + } + if$ +} + + +FUNCTION {format.chapter} +{ chapter empty$ + { "" } + { this.to.prev.status + this.status.std + type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + cap.status.std + } + if$ +} + + +% The intended use of format.paper is for paper numbers of inproceedings. +% The paper type can be overridden via the type field. +% We allow the type to be displayed even if the paper number is absent +% for things like "postdeadline paper" +FUNCTION {format.paper} +{ is.use.paper + { paper empty$ + { type empty$ + { "" } + { this.to.prev.status + this.status.std + type "type" bibinfo.check + cap.status.std + } + if$ + } + { this.to.prev.status + this.status.std + type empty$ + { bbl.paper } + { type "type" bibinfo.check } + if$ + " " * paper + "paper" bibinfo.check + * + cap.status.std + } + if$ + } + { "" } + if$ +} + + +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + duplicate$ is.multiple.pages + { + bbl.pages swap$ + n.dashify + } + { + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + cap.status.std + } + if$ +} + + + +%% technical report number + +FUNCTION {format.tech.report.number} +{ number "number" bibinfo.check + type duplicate$ empty$ + { pop$ + this.to.prev.status + this.status.std + cap.status.std + bbl.techrep + } + { skip$ } + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ } + { this.to.prev.status + this.status.std + cap.status.std + tie.or.space.prefix * * } + if$ +} + + + +%% note + +FUNCTION {format.note} +{ note empty$ + { "" } + { this.to.prev.status + this.status.std + punct.period 'this.status.punct := + note #1 #1 substring$ + duplicate$ "{" = + { skip$ } + { status.cap + { "u" } + { "l" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + cap.yes 'status.cap := + } + if$ +} + + + +%% patent + +FUNCTION {format.patent.date} +{ this.to.prev.status + this.status.std + year empty$ + { monthfiled duplicate$ empty$ + { "monthfiled" bibinfo.check pop$ "" } + { "monthfiled" bibinfo.check } + if$ + dayfiled duplicate$ empty$ + { "dayfiled" bibinfo.check pop$ "" * } + { "dayfiled" bibinfo.check + monthfiled empty$ + { "dayfiled without a monthfiled in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + yearfiled empty$ + { "no year or yearfiled in " cite$ * warning$ } + { yearfiled "yearfiled" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + } + { month duplicate$ empty$ + { "month" bibinfo.check pop$ "" } + { "month" bibinfo.check } + if$ + day duplicate$ empty$ + { "day" bibinfo.check pop$ "" * } + { "day" bibinfo.check + month empty$ + { "day without a month in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + year "year" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + cap.status.std +} + +FUNCTION {format.patent.nationality.type.number} +{ this.to.prev.status + this.status.std + nationality duplicate$ empty$ + { "nationality" bibinfo.warn pop$ "" } + { "nationality" bibinfo.check + duplicate$ "l" change.case$ "united states" = + { pop$ bbl.patentUS } + { skip$ } + if$ + " " * + } + if$ + type empty$ + { bbl.patent "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.warn pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + + + +%% standard + +FUNCTION {format.organization.institution.standard.type.number} +{ this.to.prev.status + this.status.std + organization duplicate$ empty$ + { pop$ + institution duplicate$ empty$ + { "institution" bibinfo.warn } + { "institution" bibinfo.warn " " * } + if$ + } + { "organization" bibinfo.warn " " * } + if$ + type empty$ + { bbl.standard "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.check pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + +FUNCTION {format.revision} +{ revision empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.revision + revision tie.or.space.prefix + "revision" bibinfo.check + * * + cap.status.std + } + if$ +} + + +%% thesis + +FUNCTION {format.master.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.mthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + +FUNCTION {format.phd.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.phdthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + + + +%% URL + +FUNCTION {format.url} +{ url empty$ + { "" } + { this.to.prev.status + this.status.std + cap.yes 'status.cap := + bbl.urlprefix " " * + "\url{" * url * "}" * + punct.no 'this.status.punct := + punct.period 'prev.status.punct := + space.normal 'this.status.space := + space.normal 'prev.status.space := + quote.no 'this.status.quote := + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%% +%% ENTRY HANDLERS %% +%%%%%%%%%%%%%%%%%%%% + + +% Note: In many journals, IEEE (or the authors) tend not to show the number +% for articles, so the display of the number is controlled here by the +% switch "is.use.number.for.article" +FUNCTION {article} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.journal "journal" bibinfo.check "journal" output.warn + format.volume output + format.number.if.use.for.article output + format.pages output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {book} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + author empty$ + { skip$ } + { format.editors output } + if$ + format.address.publisher.date output + format.volume output + format.number output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {booklet} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {electronic} +{ std.status.using.period + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.date.electronic output + format.article.title.electronic output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {inbook} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + format.address.publisher.date output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {incollection} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle.edition "booktitle" output.warn + format.series output + format.editors output + format.address.publisher.date.nowarn output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {inproceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle "booktitle" output.warn + format.series output + format.editors output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.paper output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {manual} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title.edition "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {mastersthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.master.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {misc} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.pages output + format.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {patent} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.patent.nationality.type.number output + format.patent.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {periodical} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + format.organization "organization" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {phdthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.phd.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {proceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {standard} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization.institution.standard.type.number output + format.revision output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {techreport} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.institution "institution" bibinfo.warn output + format.address "address" bibinfo.check output + format.tech.report.number output.nonnull + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {unpublished} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.date output + format.note "note" output.warn + format.url output + fin.entry + if.url.std.interword.spacing +} + + +% The special entry type which provides the user interface to the +% BST controls +FUNCTION {IEEEtranBSTCTL} +{ is.print.banners.to.terminal + { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." * + top$ + } + { skip$ } + if$ + CTLuse_article_number + empty$ + { skip$ } + { CTLuse_article_number + yes.no.to.int + 'is.use.number.for.article := + } + if$ + CTLuse_paper + empty$ + { skip$ } + { CTLuse_paper + yes.no.to.int + 'is.use.paper := + } + if$ + CTLuse_forced_etal + empty$ + { skip$ } + { CTLuse_forced_etal + yes.no.to.int + 'is.forced.et.al := + } + if$ + CTLmax_names_forced_etal + empty$ + { skip$ } + { CTLmax_names_forced_etal + string.to.integer + 'max.num.names.before.forced.et.al := + } + if$ + CTLnames_show_etal + empty$ + { skip$ } + { CTLnames_show_etal + string.to.integer + 'num.names.shown.with.forced.et.al := + } + if$ + CTLuse_alt_spacing + empty$ + { skip$ } + { CTLuse_alt_spacing + yes.no.to.int + 'is.use.alt.interword.spacing := + } + if$ + CTLalt_stretch_factor + empty$ + { skip$ } + { CTLalt_stretch_factor + 'ALTinterwordstretchfactor := + "\renewcommand\BIBentryALTinterwordstretchfactor{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + } + if$ + CTLdash_repeated_names + empty$ + { skip$ } + { CTLdash_repeated_names + yes.no.to.int + 'is.dash.repeated.names := + } + if$ + CTLname_format_string + empty$ + { skip$ } + { CTLname_format_string + 'name.format.string := + } + if$ + CTLname_latex_cmd + empty$ + { skip$ } + { CTLname_latex_cmd + 'name.latex.cmd := + } + if$ + + + num.names.shown.with.forced.et.al max.num.names.before.forced.et.al > + { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$ + max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al := + } + { skip$ } + if$ +} + + +%%%%%%%%%%%%%%%%%%% +%% ENTRY ALIASES %% +%%%%%%%%%%%%%%%%%%% +FUNCTION {conference}{inproceedings} +FUNCTION {online}{electronic} +FUNCTION {internet}{electronic} +FUNCTION {webpage}{electronic} +FUNCTION {default.type}{misc} + + + +%%%%%%%%%%%%%%%%%% +%% MAIN PROGRAM %% +%%%%%%%%%%%%%%%%%% + +READ + +EXECUTE {initialize.controls} +EXECUTE {initialize.status.constants} +EXECUTE {banner.message} + +EXECUTE {initialize.longest.label} +ITERATE {longest.label.pass} + +EXECUTE {begin.bib} +ITERATE {call.type$} +EXECUTE {end.bib} + +EXECUTE{completed.message} + + +%% That's all folks, mds. diff --git a/docs/paper/IEEEtran.cls b/docs/paper/IEEEtran.cls new file mode 100644 index 0000000..8d2b1c6 --- /dev/null +++ b/docs/paper/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/docs/paper/Makefile b/docs/paper/Makefile new file mode 100644 index 0000000..b8d0e54 --- /dev/null +++ b/docs/paper/Makefile @@ -0,0 +1,23 @@ +# make - build main.pdf (full pdflatex/bibtex/pdflatex/pdflatex pass) +# make clean - remove intermediate build files, keep main.pdf +# make distclean - also remove main.pdf + +MAIN := main + +.PHONY: all clean distclean + +all: $(MAIN).pdf + +$(MAIN).pdf: $(MAIN).tex refs.bib + pdflatex -interaction=nonstopmode -halt-on-error $(MAIN).tex + bibtex $(MAIN) + pdflatex -interaction=nonstopmode -halt-on-error $(MAIN).tex + pdflatex -interaction=nonstopmode -halt-on-error $(MAIN).tex + $(MAKE) clean + +clean: + rm -f $(MAIN).aux $(MAIN).log $(MAIN).out $(MAIN).bbl $(MAIN).blg \ + missfont.log build.log $(MAIN).synctex.gz $(MAIN).fdb_latexmk $(MAIN).fls + +distclean: clean + rm -f $(MAIN).pdf diff --git a/docs/paper/main.pdf b/docs/paper/main.pdf new file mode 100644 index 0000000000000000000000000000000000000000..54405340b3b66bcc14abe1b5af7f7940c774312a GIT binary patch literal 118783 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%0A5wJ0Ye@CFIfuWy(d7=$1BA2NFY}_5}Wk$6xbr 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�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:bJE)NBrPl)BQ2tUTJWQN~BnPN0QQG%T^-t7HDhyu8VrW z6?-r@7aFed)Lanbq$lG7TUU{&xv+I)>E>!|juSRcK!X&aO7R4Q+`<{Zo}LHRPbs6P zYdDG-ssa#W1()Bjb@+2g5GORWa*!3N0ie$U&R|a}3rvi%kURwKt7UjeeJniEp@ceI zp~%cxRJnTZLuB%u2myJ+(HD_E>BYC=Uyg7`*-(iJ@5anL-y4LREzwqiPv%wfXb?(t zflE!@N*~IgTb$Q^q8MP=nyAbI#bW@>b8qdLDLQjjn(EokeNi5}SH4iozrCb-Omx5+ z3CoUM|6GKn=@;zx(Zk$stWDn4n`?JuDTCRJ47Zw{l9pq1GjA2(5JoJ-?`$|H^mQy4 z=<$i`N1gT_@jg;AF9rLNz-bj_H#6H9SY=^9<|QSKzb`Oa0F8-1i&5SX*$R*g@0#rf zQpDGQL{##IYmx}}+fEbN%16eON5u&13e=Ml!?%PhVL?TO@B#JdHoQKPJ z66dVNn6i{P9^SH{jb9Tu<#QDxVtLWuiT(m>sN@?qL)+VfO|yM?dc4f7t^09}vL~r> z_Z(rCerF>zP@o`8)h`2oIj4~|wy+#9{*=@r;X*MvD6jy;Z8CxuzG5JM<1`EFnnTG+KQ7Th$@(M;JN z;r?*z1t)3r0h~DQBmEbt4(-3j{eSag%CZKAkkq1<`UcLpYBadCw2T^%)N&@S2ER8U zsg-cmXmROrX+L+$T3OkD?)+`(WPhJwX!ZH%w=@3zNB~!jgI|b-m4S(#m!6kTkb##~ zfPtQYiBW)opNU_PfsvPwi3|6?Kjia$Bn&K#KJ76bEB*g=hcVVvgBY+3Qoxm+?kN#* z{i54Nm6IOz4?Pb^Be0B4CHO90cq9OSQ~R+8{0Gs`Z!aWDAHskj|TFN1_)*n zTyhecauU*F5*BN+=<91$QKXpDYOy%cv%y?hwTJFpPBlvXu|kt`-LYH{r}ABi`>7gC zAu^0AOtF7@slU9FQ>niKT>9Dqb~|hMYxs`zz){%F>68t&lX^RQc{|oZN4Q!=n}#=| wasbStALSf-zAp7O++z~;`=9?C?Cf=H?VUdZ2uNC57CL$cNFpLZX(7n}4;^FHE&u=k literal 0 HcmV?d00001 diff --git a/docs/paper/main.tex b/docs/paper/main.tex new file mode 100644 index 0000000..5bd0a6c --- /dev/null +++ b/docs/paper/main.tex @@ -0,0 +1,166 @@ +\documentclass[conference]{IEEEtran} + +\usepackage{amsmath,amssymb} +\usepackage{graphicx} +\usepackage{booktabs} +\usepackage{cite} +\usepackage{url} +\usepackage[hidelinks]{hyperref} +\usepackage{xcolor} + +% Flags a claim, number, or section that must be revisited once final benchmark +% results are in. Renders inline, in color, so it is impossible to miss in a draft +% but is meant to be resolved (never shipped) before the report is finalized. +\newcommand{\todo}[1]{\textcolor{red}{\textbf{[TODO: #1]}}} + +\begin{document} + +\title{\Large MixedComplementarityProblems.jl: A Fast, Batched, Open-Source +Interior-Point Solver for Mixed Complementarity Problems} + +\author{ + \IEEEauthorblockN{David Fridovich-Keil} + \IEEEauthorblockA{Department of Aerospace Engineering and Engineering Mechanics\\ + The University of Texas at Austin\\ + Austin, TX, USA\\ + dfk@utexas.edu} +} + +\maketitle + +\begin{figure*}[t] + \centering + \fbox{% + \begin{minipage}[c][0.30\textheight][c]{0.47\textwidth} + \centering + \todo{replace with rendered lane-change trajectory game schematic, showing the + two vehicles' solved trajectories overlaid with a faint fan of trajectories from + other initial conditions in the same batch}\\[1em] + \textbf{(a)} One multi-agent trajectory game is one instance out of a batch of + parametrically related MCPs, solved simultaneously. + \end{minipage}% + }% + \hfill + \fbox{% + \begin{minipage}[c][0.30\textheight][c]{0.47\textwidth} + \centering + \todo{replace with wall-clock-vs-batch-size plot: \textsf{PATH} (serial), + CPU-batched, and GPU-batched, log-scaled $y$-axis}\\[1em] + \textbf{(b)} Clearing that batch: sequential \textsf{PATH} calls versus our + batched CPU and GPU solves. + \end{minipage}% + } + \caption{\todo{finalize caption once the real figure is in} Solving a batch of + parametric trajectory-game instances (a) with + \textsf{MixedComplementarityProblems.jl}'s batched interior-point solver is + substantially faster than solving the same batch with sequential calls to + \textsf{PATH} (b).} + \label{fig:teaser} +\end{figure*} + +\begin{abstract} +Mixed complementarity problems (MCPs) arise as the first-order optimality conditions of +nonlinear programs and noncooperative games, and give a natural formulation for the +multi-agent trajectory optimization problems that appear throughout robotics. The +dominant solver for problems of this form is \textsf{PATH}, a mature but closed-source +package. We present \textsf{MixedComplementarityProblems.jl}, an open-source, pure +Julia implementation of an interior-point method for parametric MCPs that (i) matches +\textsf{PATH}'s reliability on standard benchmarks and (ii) natively supports batched +solving, in which many parameter instances are solved simultaneously and in parallel, +either across CPU threads or on an NVIDIA GPU, behind a single solver implementation. +On a multi-agent lane-change trajectory game representative of robotics planning +problems, our CPU-multithreaded batched solver clears a batch of parametric instances +60--80$\times$ faster than sequential calls to \textsf{PATH}, and our GPU backend +clears the same batches roughly $20\times$ faster than \textsf{PATH}\todo{finalize the +GPU-vs-CPU comparison for the trajectory game once the latest benchmark numbers are +in---earlier runs showed GPU trailing CPU here, but that may no longer hold}. We +describe the solver's interior-point formulation, the abstraction that lets a single +solver implementation run unmodified across dense, batched-sparse, and single-large +linear-algebra backends, and report benchmarks against \textsf{PATH} on both randomly +generated quadratic programs and trajectory games. +\end{abstract} + +\section{Introduction} +\label{sec:intro} + +Multi-agent trajectory planning problems in robotics---lane changes and merges, +intersection negotiation, racing, human-robot interaction---are naturally posed as +noncooperative dynamic games, in which each agent optimizes its own trajectory subject +to the others' choices. The first-order (KKT) conditions of such a game, and of the +constrained trajectory optimization problems that underlie it, take the form of a +mixed complementarity problem (MCP). MCPs are therefore not a peripheral formalism for +this class of problems; they are the computational object that planners in this space +ultimately have to solve, often many times per planning cycle. + +The dominant solver for problems of this form is \textsf{PATH}~\cite{dirkse1995path}, accessed +from Julia through the \texttt{PATHSolver.jl}/\texttt{ParametricMCPs.jl} stack. \textsf{PATH} +is mature and reliable, but it is closed-source, solves one parameter instance at a +time, and was not designed to sit inside a differentiable pipeline or underneath an +outer loop that itself needs to be parallelized. That is a real limitation for the +workloads robotics increasingly relies on: scenario- or sampling-based planning, +receding-horizon replanning across many candidate initial conditions, and learning +formulations that differentiate through a game's equilibrium. Each of these needs many +structurally identical MCPs solved together, not one instance solved in isolation. + +No existing tool combines an open, modifiable solver with native support for solving +many such instances at once, in parallel, on the hardware a robotics practitioner +already has. Interior-point methods are a natural fit for closing this gap: they are +simple enough to reimplement and adapt to a new application, they are straightforward +to differentiate through, and their dominant per-iteration cost---a linear solve +against the KKT system---parallelizes cleanly across a batch of instances that share a +common sparsity structure, whether that parallelism is spread across CPU threads or +onto a GPU. + +We present \textsf{MixedComplementarityProblems.jl}, an open-source, pure Julia +interior-point solver for parametric MCPs. Concretely, we contribute: +\begin{itemize} + \item An interior-point method for parametric MCPs that matches \textsf{PATH}'s + reliability on standard benchmarks, while remaining a compact, modifiable, pure + Julia implementation that differentiates through its own solutions via + \texttt{ChainRulesCore}/\texttt{ForwardDiff}. + \item A native \emph{batched} solve mode, in which many parameter instances sharing + one MCP structure are solved simultaneously, parallelized across CPU threads or an + NVIDIA GPU behind a single solver implementation. + \item An abstraction boundary---a small verb set (residual, Jacobian assembly, + factorize, solve) between the interior-point loop and its linear-algebra + backend---that lets that one implementation run unmodified across dense, + batched-sparse, and single-large-instance regimes, so that supporting a new device or + linear-algebra strategy never requires touching the solver loop itself. +\end{itemize} + +As Fig.~\ref{fig:teaser} previews and Section~\ref{sec:experiments} quantifies, on a +multi-agent lane-change trajectory game representative of robotics planning problems, +clearing a batch of parametric instances with our batched solver takes a small fraction +of the wall-clock time required to clear the same batch with sequential calls to +\textsf{PATH}. The rest of this report is organized as follows. +Section~\ref{sec:background} reviews MCPs and their connection to KKT conditions and +games. Section~\ref{sec:design} describes the interior-point method and its +strategy/device abstraction. Section~\ref{sec:batched} details the batched CPU and GPU +backends. Section~\ref{sec:experiments} reports benchmarks against \textsf{PATH} on +quadratic programs and trajectory games. Section~\ref{sec:discussion} discusses +limitations and future work. + +\section{Background: Mixed Complementarity Problems} +\label{sec:background} +TODO + +\section{Solver Design} +\label{sec:design} +TODO + +\section{Batched and GPU-Parallel Solving} +\label{sec:batched} +TODO + +\section{Experiments} +\label{sec:experiments} +TODO + +\section{Discussion and Future Work} +\label{sec:discussion} +TODO + +\bibliographystyle{IEEEtran} +\bibliography{refs} + +\end{document} diff --git a/docs/paper/refs.bib b/docs/paper/refs.bib new file mode 100644 index 0000000..487e685 --- /dev/null +++ b/docs/paper/refs.bib @@ -0,0 +1,10 @@ +@article{dirkse1995path, + title = {The path solver: a nommonotone stabilization scheme for mixed complementarity problems}, + author = {Dirkse, Steven P and Ferris, Michael C}, + journal = {Optimization methods and software}, + volume = {5}, + number = {2}, + pages = {123--156}, + year = {1995}, + publisher = {Taylor \& Francis}, +} From 75a26974a768d954ec1cddc5b40d490bfb4aae55 Mon Sep 17 00:00:00 2001 From: dfridovi Date: Thu, 23 Jul 2026 17:12:00 +0200 Subject: [PATCH 02/41] DFK edits --- docs/paper/main.pdf | Bin 118783 -> 117837 bytes docs/paper/main.tex | 81 ++++++++++++++++---------------------------- docs/paper/refs.bib | 28 +++++++++++++++ 3 files changed, 58 insertions(+), 51 deletions(-) diff --git a/docs/paper/main.pdf b/docs/paper/main.pdf index 54405340b3b66bcc14abe1b5af7f7940c774312a..588aea51c26f3dabb8cff1a72472bd0fc0fa38b0 100644 GIT binary patch delta 68065 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 z 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 Date: Thu, 23 Jul 2026 17:19:45 +0200 Subject: [PATCH 03/41] minor typo fixes --- docs/paper/.gitignore | 1 + docs/paper/main.pdf | Bin 117837 -> 118664 bytes docs/paper/main.tex | 14 +++++++------- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/paper/.gitignore b/docs/paper/.gitignore index b1c802c..5bb20a4 100644 --- a/docs/paper/.gitignore +++ b/docs/paper/.gitignore @@ -8,3 +8,4 @@ *.fls missfont.log build.log +auto/ diff --git a/docs/paper/main.pdf b/docs/paper/main.pdf index 588aea51c26f3dabb8cff1a72472bd0fc0fa38b0..95550e3a1a7c5a1774aecd3a02b1439f554c1395 100644 GIT binary patch delta 65790 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�=>Fv4pT+0a0RzruYE_~I)u7?%ufMFOc}~v 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 M7;^Go3gR&T1t@%d?f?J) delta 64189 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 diff --git a/docs/paper/main.tex b/docs/paper/main.tex index 4c90abf..98ba9c3 100644 --- a/docs/paper/main.tex +++ b/docs/paper/main.tex @@ -51,17 +51,17 @@ \fbox{% \begin{minipage}[c][0.30\textheight][c]{0.47\textwidth} \centering - \todo{replace with wall-clock-vs-batch-size plot: \textsf{PATH} (serial), + \todo{replace with wall-clock-vs-batch-size plot: \texttt{PATH} (serial), CPU-batched, and GPU-batched, log-scaled $y$-axis}\\[1em] - \textbf{(b)} Clearing that batch: sequential \textsf{PATH} calls versus our + \textbf{(b)} Clearing that batch: sequential \texttt{PATH} calls versus our batched CPU and GPU solves. \end{minipage}% } \caption{\todo{finalize caption once the real figure is in} Solving a batch of parametric trajectory-game instances (a) with - \textsf{MixedComplementarityProblems.jl}'s batched interior-point solver is + \texttt{MixedComplementarityProblems.jl}'s batched interior-point solver is substantially faster than solving the same batch with sequential calls to - \textsf{PATH} (b).} + \texttt{PATH} (b).} \label{fig:teaser} \end{figure*} @@ -95,14 +95,14 @@ \section{Introduction} to the others' choices. The first-order necessary conditions of optimality for each agent in the game take the form of a mixed complementarity problem (MCP). Solving MCPs rapidly, therefore, becomes a core computational burden for real-time decision-making in multi-agent robotics applications. -The dominant solver for this class of problems is \textsf{PATH}~\cite{dirkse1995path}. \textsf{PATH} +The dominant solver for this class of problems is \texttt{PATH}~\cite{dirkse1995path}. \texttt{PATH} is mature, reliable, and widely used; but, it is closed-source, solves one problem instance at a time, and was not designed to support automatic differentiation of solutions with respect to problem parameters. All three pose serious, practical limitations for use in robotics: (i) developers must have access to solver internals in order to customize to the problem at hand, (ii) scenario- and contingency-based planning (e.g., \cite{li2023scenario,peters2024contingency}) requires solving a \emph{batch} of identically-structured but differently \emph{parameterized} problems, and (iii) modern machine learning pipelines often embed optimization problem solvers as ``layers'' \cite{amos2017optnet}, and end-to-end differentiability requires us to be able to differentiate a solver's output with respect to its input parameters. -We present \textsf{MixedComplementarityProblems.jl}, an open-source, pure Julia solver for parametric MCPs that addresses all of these practical challenges. Concretely, we contribute: +We present \texttt{MixedComplementarityProblems.jl}, an open-source, pure Julia solver for parametric MCPs that addresses all of these practical challenges. Concretely, we contribute: \begin{itemize} - \item A simple and easily-customized interior-point method for parametric MCPs that matches \textsf{PATH}'s + \item A simple and easily-customized interior-point method for parametric MCPs that matches \texttt{PATH}'s reliability on standard benchmarks, while supporting automatic differentiation of solutions with respect to problem parameters. \item A native \emph{batched} solve mode, in which many parameter instances sharing one MCP structure are solved simultaneously, parallelized across CPU threads or an From 580784d73f956fe1649238ad3d378695c3159796 Mon Sep 17 00:00:00 2001 From: dfridovi Date: Thu, 23 Jul 2026 17:30:34 +0200 Subject: [PATCH 04/41] Draft Background section (MCP definition, KKT reduction, games, parametric view) Adds Sec. II with four subsections: the general box-form MCP definition, the KKT-to-primal-dual-MCP reduction that sets up notation for the solver design section, the generalization to noncooperative games/GNEPs (with the lane-change trajectory game introduced as the running example tied to the teaser figure), and the parametric view motivating batching/differentiability. Two \todo{add reference} placeholders remain for citations. Co-Authored-By: Claude Sonnet 5 --- docs/paper/main.pdf | Bin 118664 -> 181562 bytes docs/paper/main.tex | 87 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 86 insertions(+), 1 deletion(-) diff --git a/docs/paper/main.pdf b/docs/paper/main.pdf index 95550e3a1a7c5a1774aecd3a02b1439f554c1395..d910f9014a2e2d26efc8b41c48443d7c56e2cfe0 100644 GIT binary patch delta 117055 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�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 diff --git a/docs/paper/main.tex b/docs/paper/main.tex index 98ba9c3..7af2907 100644 --- a/docs/paper/main.tex +++ b/docs/paper/main.tex @@ -1,6 +1,7 @@ \documentclass[conference]{IEEEtran} \usepackage{amsmath,amssymb} +\usepackage{mathtools} \usepackage{graphicx} \usepackage{booktabs} \usepackage{cite} @@ -121,7 +122,91 @@ \section{Introduction} \section{Background: Mixed Complementarity Problems} \label{sec:background} -TODO + +\subsection{Problem definition} +\label{sec:background:def} + +A mixed complementarity problem is specified by a map $F:\mathbb{R}^n\to\mathbb{R}^n$ +and bounds $\ell,u\in(\mathbb{R}\cup\{\pm\infty\})^n$; a solution is a vector +$z\in\mathbb{R}^n$ satisfying, for every $i$, +\begin{equation} + \begin{aligned} + \ell_i < z_i < u_i &\implies F_i(z) = 0, \\ + z_i = \ell_i &\implies F_i(z) \ge 0, \\ + z_i = u_i &\implies F_i(z) \le 0. + \end{aligned} + \label{eq:mcp-box} +\end{equation} +\todo{add reference} surveys this general form and its applications. Two special +cases of \cref{eq:mcp-box} recur throughout this report: an unconstrained block +($\ell_i=-\infty$, $u_i=\infty$), where \cref{eq:mcp-box} reduces to $F_i(z)=0$; and a +nonnegativity block ($\ell_i=0$, $u_i=\infty$), where it reduces to the complementarity +condition $0\le z_i \perp F_i(z)\ge 0$. + +\subsection{MCPs from KKT conditions} +\label{sec:background:kkt} + +Consider a parametric nonlinear program +\begin{equation} + \min_{x} \; f(x;\theta) \quad \text{s.t.} \quad h(x;\theta) \ge 0, + \label{eq:nlp} +\end{equation} +with primal variables $x\in\mathbb{R}^{n_x}$, parameters $\theta$, and Lagrange +multipliers $y\in\mathbb{R}^{n_y}$ associated with $h$. The KKT conditions of +\cref{eq:nlp} are +\begin{equation} + \begin{aligned} + G(x,y;\theta) &\coloneqq \nabla_x f(x;\theta) - \nabla_x h(x;\theta)^\top y = 0, \\ + 0 \le y \perp H(x,y;\theta) &\coloneqq h(x;\theta) \ge 0, + \end{aligned} + \label{eq:primal-dual-mcp} +\end{equation} +which is exactly an instance of \cref{eq:mcp-box} with $z=(x,y)$: an unconstrained +block $G$ paired with $x$, and a nonnegativity block $H$ paired with $y$. We refer to +\cref{eq:primal-dual-mcp} as the \emph{primal-dual} form; it is the only form +\texttt{MixedComplementarityProblems.jl} exposes, since every MCP we construct in this +report arises from an optimization problem or a game rather than from a raw box +constraint. + +\subsection{MCPs from noncooperative games} +\label{sec:background:games} + +The reduction in \cref{sec:background:kkt} extends from one decision-maker to many. +Consider $N$ agents, where agent $i$ solves +\begin{equation} + \min_{x_i} \; f_i(x_i, x_{-i};\theta) \quad \text{s.t.} \quad h_i(x_i,x_{-i};\theta) + \ge 0, \; c(x;\theta) \ge 0, +\end{equation} +subject to its own constraints $h_i$ and to constraints $c$ shared across agents +(e.g., pairwise collision avoidance), where $x_{-i}$ denotes the other agents' +decisions and $x=(x_1,\dots,x_N)$. Writing out each agent's KKT conditions as in +\cref{eq:primal-dual-mcp} and stacking them --- with the shared constraints $c$ +coupling agents through a shared multiplier --- yields a single primal-dual MCP whose +solution is a generalized Nash equilibrium: a strategy profile from which no agent can +unilaterally improve its own objective. \todo{add reference} treats this class of +problems, generalized Nash equilibrium problems (GNEPs), in general;~\cite{li2023scenario,peters2024contingency} +apply this same MCP reduction to multi-agent trajectory games in robotics. + +The lane-change trajectory game of \cref{fig:teaser}(a) is a concrete instance of this +family: two vehicles, each minimizing a cost trading off lane-keeping, speed tracking, +and control effort, coupled by a pairwise collision-avoidance constraint. We use this +game as a running example for the remainder of this report. A \emph{batch}, in the +sense of \cref{sec:batched}, is a set of instances of this same game that share +structure but differ in parameters $\theta$ --- e.g., the vehicles' initial positions, +velocities, or lane preferences. + +\subsection{The parametric view} +\label{sec:background:parametric} + +Sections~\ref{sec:background:kkt} and~\ref{sec:background:games} both produce a +\emph{family} of MCPs indexed by parameters $\theta$ rather than a single problem +instance, which we write $\mathrm{MCP}(\theta)$, with solution map +$z^*(\theta)=(x^*(\theta),y^*(\theta))$. Treating $\theta$ as first-class, rather than +building a solver around one fixed problem instance, is what licenses the two +capabilities central to this report: solving $z^*(\theta)$ for many values of $\theta$ +at once, in parallel (\cref{sec:batched}), and differentiating the solution map itself, +$\nabla_\theta z^*(\theta)$, so that an MCP solve can act as a layer inside a larger +differentiable pipeline~\cite{amos2017optnet}. \section{Solver Design} \label{sec:design} From c5267d1b9783615861d79f19a4f5d366367743df Mon Sep 17 00:00:00 2001 From: dfridovi Date: Fri, 24 Jul 2026 11:19:18 +0200 Subject: [PATCH 05/41] dfk edits --- docs/paper/main.pdf | Bin 181562 -> 189939 bytes docs/paper/main.tex | 84 +++++++++++++++++++------------------------- docs/paper/refs.bib | 7 ++++ 3 files changed, 43 insertions(+), 48 deletions(-) diff --git a/docs/paper/main.pdf b/docs/paper/main.pdf index d910f9014a2e2d26efc8b41c48443d7c56e2cfe0..d4e692363358c93f43a84100f9b25f278d6da445 100644 GIT binary patch delta 134385 zcmZUZQ&`{))a|p4$+m5~rkd;~+jjlKWZSlFyUDg~WAb^wbDnec?W?_S*S=Zn_pFWx z_=gF26beOgNd^{1E;x$W#o<*rj(Ajba1I`>)I9}IYT!yoCvjt>-fyLL*OOIKg0xNl zu+7QjuiK$`%1`YR<%G&WiaK&qlsw1!uD7SN+D=fg&3ybL3gnY6dNVIO0Rdn8n#T3o ztR?r@tjL=cu2{d9>I-tZmDUB~7!5A>%CXih=HJ75Hqc6K9e*|KtFex1CBB+?aw_&U z7k!sgK7r3lw<}6@XW6{zFY_ml?kCYvFVbB56+H{n-@WnID_XsL812t`IT2p(B{&{I zze)N|T=knw7ivCN*L$?RW0sO!d%w<(-!Vxnpnr9(cf@DE)#p8yl>2FQ#;7$ld?8VB zt{eIkdj>RvoU|RlppX;TQ5Ly73QrhVtB37pT4!!47U&3I@g z?yFz0qgbY{+YHSMW07@hoHDjlU|%^?;>TMND$CD(vMtuvhwnuenb%1H^rwC*HxnJi zr_EE6w9K1$YJXZ+f$H`|5d-R0HDs^i7f z(W-qh7SokQ&$U$fEg2%@08dvHjmL28-Nj#BL!?haAUlN&56o16Y zB}Sgt>Q6Z>-cKOkp%+-wmCQe9&64|6M`Fa1L02FhVq&<+gt1G0Fq}@)vNFYz{JS|$;PP2)laVd-F{anzAYATS4F-|VbaQuXnHM(3%%oM`KSzaI8 zmlKrYhpYp6j9+r$HEiorRpimZF! zH7$_;8dB^jty9hucQH{-;f;H_{!Zz(d-YKJSpJnaPXG)FnW0HJrU12WnmBXVw4cs_SIpy?LDip6!!)xJXHD zSTwEAjbl^tF|t&sEVWL3nS&?ySVBV7_V}k~sIgw3=Y#^J#{fn7>%~#gHy?NQFx3tH zj%sPXr@gy=Pvbo|b51|qCrd{-0{vlF2B(H5iX0@4F&5IddEh}d)s_9R-sNJ?Luc1_ zHr<7Y*A#JO(Sf(yT#fZ4ID84|7C9&`Y9zmZ5HR>HLpF(Kfzo2aPh6Dt>;fT%yx$b< zGE)PdQs+4MXza$6*TDkgv=rCV-`P>)YEkh~8eI4b-3AA*8=>i;V59kn;RWAR1}xXq zmp#BAx4QL059r9oD?AxR{-qlHnnawJB=!6hXracg+1GQY`Wm&)GG^?N zTeXhWYD>wUSq@cZ?r-93Rfa<>Tk8z(@nfLu4P#9(2)JjzV3upE81zW`WV_saga$9x z7A@v!SV5I^>BJ3yLyu0oJt3K(u&Z|i(-Ifx5)az7AjwJ_?~k^H8=xtOMPckH&-TC# z5(>QyuoWXGo~|_Fizd)minjms*Cp^I)cAI=(|W=@wO_n7in@USUMz=F6ZLu zvr$^}&PbBXW=XxW=P_8RdTSfWaJ+Nc^h1}ifhkdKlG1sM(M1QZ_O`YmuKnVjIPv_;AHPQt zpk1%1T*y97ZS1dtiLkDwwE`PQ@I{_QgCRTv8|hHewtYX@eyzYH34U?4Mn4%+C4{Y^ zDYRDN{9~O~mp2?);b{Tp-+gK#xy`Tg1t^q zny{u|^$oIl`g3w6=g+o?;C{@b*tjJYt zYki{wJ{od}v9P4s$`g$yfMA8XWC&i}YBla0FE&;VE{GJ(h!clD;jPf9|)zaWuIEi${*3L%Y6ay0KHqq54s%6@zTSF7Ah;6hUpl*qeaox{^h8&3- zzdL@dcETIqE*4=Q44>e`dhmg%_xYbh({b%cFP2>c~T&IHCo&W4L zLa^CJu`EqmM-=;A%P@N1XTZ=GL?sj2F5(oCy6|V&bmAJCwkg9e;6;LLpHtwj ztL@J+%i&ipZ5k8wTQ)Xw*vIRs=LvUeqX~&&O+>>g=`uqjv80F3P_>PU!yak*4fCOW(6_`ALrcVMw}$2T+I?W=M06$SVirUE~HS#V+bi2#u_zCTKp0 zZi@BX<8B8Z4@pz*W{{O3gDp5z;J4(E76sXK_5} zdAkM0-R_NpPI))*Dwd{*q8=dp^jm2wyptV}nVf_ZI*aO|89vN;f^H1@X)NeNmmfSE zTIdl=bT;nxMb+{UM@rQ>IN9H>pkJ}nRqBHEm!hxT#AgX>L7P>ku(irv3HS+9u<)ZW zQ#zq>a@t6fpV~fUT+|*853wm%f;AxbC#cH2&*H>kp{YJQ&)TUzw=YDlhF5uI58Dp_ zVT3A|b|%1mPg@z7^m3b@a!IkM>m%E7Rt~~8$l{;+EFdY*s93+Q2vH41AXT!E%VK^f zH7#6o^+`v7+s7y3D2j?qnFpVmYjnVBw%8W6n(L_KNyTcAFfBSJQ z#p+fgewJa9e)zgctgBqG6u6IiIX3fC9F_Dsf}Uq8*d7+X*7U|l)M-9-@3?&wgCMtpyR0{~aZT+iYuGTwumTyqT!{++Z+>R zt5KIYDcnsQHLje=z1*+;QSXd$nCv-w8mUB|@TW3H*lvf9_{xt*XT9^bFY9@lGdyQn zo?EiIN4thA?6#$~bi1r<2z21vN?CVlw3T;8$0-_5C)Si)OZ!Lc{=bzD%Cz>-9D8q> zuKTO8rR?M%Up~G@2Ux?6GT+WeaYG(qvWXVcgJO)d&2IP1Uh^@+q0^MJ?Mkug+3TIPn55FC$Yt59dI}*j}+)TwAY9 z>?{&LAQHiwh5#4m z;(kiS-ElakEAskU4{!?GdEvr+oct~Px%O6Lx!zU9Gde;lKhknd>B*^E`yt+Pu6zl` z=ZLOO89x3kgn)%;!vz%4wYkMvIaRaU{D_A_P;Zp!)n|M0WxtcM=oEP)vgb)_iL#mD zus>taBZKXJP0>$p>yO^&vDPO?7_?CS1ur3H#s1`n4!-j&Q#wPLJ?!i`E8Y%|h^?u; zLh{q6+3cCU_FH*~0`7|0zX`$(_cWa-dItZlm){5X6WabhIUbM}o*t6@BR=%abPpV* z*OXtl$6)Ert@b|U)L#|d0eb@9`j>*AIsN86CkJ#w$3JP(@<-(ZZ==fj2!E}wQyt*W zM*H6HE|qkRD8#;=q~ZR4QRf-mh%bXv^dfmHwpPDKJK)qe-$>2=wOq^YuObu=SXR|l5f@4i3 zi3CH3;9zFu{D0(Vi+?R;V2m&1t;kC?Z3(-j*yRDND}hZhr6 zz3=LO?&x9B$fhpu&3;G(FuR#m!T!nlU1O&4P&vVdIs<$F$D@&r!3}d=12!#m^QI$^ z?w*a;8nzlZRO-6gMH@Etx}_UBEBWQ~fXPHj)ppLO(<@b$K)5+PNgz2Z|A}pfqwU2J z??#b)55N1Xt0$#snzQ!>lum2mwxPt|^p&*f<=2L>b0*!HhTVD0sg79@YBDa{p#{Pp zDdrsR1%KNB9krrYtFD72Auh`v+x5d`*KVAvAJD_;wg$o2zkI|%=(uXAF3a~#dZse@ z8MqtiTj|D9Hae>D1M&p@uXt@!F7zEb244rGlnizqu+YqYu*`h4GQ+9-LtXt*PjY5B zxFjmE_c6+V1Q$NlV{tFxl{u%EpXVNz)GGiUW}|xnbRFBTxy`h?CfcPkYFuv-gHZj6 zPz^v@LZPQ=&6~oeWA1W(9`d=?42!odh)DJz^e z@pdiSYYn;4r@#ZZ9ww;1UH*`n@j~^TrZ17kDY5F<<>-E*O{*)ulxks9_wDgnwWrHi zRO~|l^TU@XRNq@fWT0=#jnbgcG`?0*4wPbe(!z6h*sS#dVUMAR`<%|PEF+oiSVT&! zNTRD{EVL-g{Ar1s{q>9~673(ZcO7~tVD#r7+19OeS0w%D+9z0zxkQTkBu%{bisb@X8N3w1n$U~z?3f9@ zaABe28#8|nq|EFb?}C=vjn4Xx21Kzm_!MHmVcysk$bOcAu-LwYj#J+Dx>&-`(>@E} z-H<&zXlUIBTR=h*s=k4UQ@S%-O0l@GAEHRsNGzaqA)zfPfEDR{=eV_hjWphg5j$&i zaZ+;)(YYC=ULAZNGe5;2$lol1M5Vx>?h7J-qtf_|R$5B_m+B|Wa3Mb*f@9~2sKy`V zAoL9q)F^j%iOzpGbwMcjY%~B!AgIjX zSO%W$QVAO%3A!G`-aE5nQfYo_wrE2qt6t6~5^ZrGt5 zqs%5^!qS`4Y}fp;CU74)k1<#5IRfDpKLek^z1QL;X@5+lI(P35GKVN$%&hwFRdoYF#A0K&v!L z@e=lHlz@P&*}{w61>H^n89Z(7xSNDqBph*p5?ph|_Lw#OTBJMq!@?Yww5>%h&q~rM z4r8tbEx${IWo_SGNc&KqVy8gAbw5vnI@5a?3yhcgCl5@oY^MvcM5zJ%>k#VW7Dk~9 zeD{QD80#W>lcs!B2IT9SEaePi$S`MVkrtr%?c-cyBFvv}a$su#gi!nq&)2H(uKttK zmOmFaL5T@h#$FW&15u?_l&4h<{v7Z!{4U2yfTd2R77l`77(%&J;mfPsd(Ou>%|aV- z+C1I7ilrf1%nwKWyFCXGh_Ks*lKcqn{C0-R0*kf?tOh~k3%^oaqky;7I81at?=MHr zFD~=|i{bs*<8>BW^p16m_qd!#0NG<h{%p#g=)ZFQ54&KH#ULUE6rFeh z2^zKgh1dp7T0nHW`GvR-4Z4MJhDnBtg@q*WHt+DB^+`n=b8zRWs9DUZhO>Egewb!h9Uzn*;~{i*29Wp`5Km6UBG zm25w-7zCy7%VDcltaiLNbvgiQ29d=O7qjuFnwVFzN*oHz0fikFozH$7o(cESB%V;U z%QK?vp()gIFh-%f+Y8Nd7N5N(M?66+O3}YrIK$sNe770s;p6;ggl7SgGS7*^OpPtA zNm$tj7Vn=VQ=pYRWv3lv!5mx{*xqv?=lt;w#8ROe*oEGana2xHIdW$l>BpE4_SJJZ z_yjBypjsmnh4__ z#H?>hb!>7`uwxtC_vc`}JQ)bD>eL3scL+(#LpkbsCelbPkgHz#*RQZ@Gs8k@SgH@? zifF$h`!ck@B|OGWX1BYw@canfrsHtvI;O$$jf?;)Mu88)p(3=tdNEip&50{ezA&g? ztnWimlIty0jb5>fX!)?DdBswb#3%wv`%fkRT0`rwOprj#u$evTUV+!J<*@jhUaE&sx<$3oYGHpoE0bKP32qYO+YMFs_*k#;Y2_*uU& z{)-lH(`*%A!K18U`wG+xhbwzHsxJp0F5`jkni)dS;fn(~x{rU*>va_??kyOcF(=?j zRgWd?QU8xZDGopuD1r? z+HgZD>9OeaEXWmv1YVfcvJaB+p5&#8H2I%UTap^}w)u7_6>JswBp2w<73PO$H_l9mfH>-E34dw4!c{BGI zW069cR4i`v%_m&+`LGHQ(CaLw;tmQm2Bl9{S67XtTGv1GmzO%#-sN7VCULJ z-P}%PYWhqcEd@`<)od$fD@uDNHz+Jw4b_S1vtg^;ALyi*Fv)*dIHbz%@^GmB^Cjm9 zE?iFgqMY`dt%S{VtsYXL$y=l)bp)s}q6i728CXd#dl^KdDk zVMTN>5asJ-P|?unaDyT%!(z|W5wmGF>oso+<=Qntxlv<97{&ru$&CVwR%ruEy)xY- zqr*h3b`M#ifwS&^Ov&sPv>(Lnkl%g(0OchdL_}Ff_461*dI^eVtGaPqBo4f)1ZuKW zp$$IywvOu&zhG3&DGI^%v$lCNUfw zJu}vY6}cyp5Jgg)#p?yM=aqPu>IJOF6Xy2FTpTC1%ZSL*-Z78ZG>AHZAkB5%lYGon zYRn%Ef7<23ab}EMcyAqAzx$cZ1;rnk=Xr;5prE%`8d|+_#tZmqayrF+loeZgNSlyaOM#fLOP}p=Gc)J;R za$w7JsN}ST@iW!To8%Sb;3wfb^AJ{`!Qg*OZg_6%2VrhUM$1AL2*bmjn}mkC#?J|~ zrD2$tMkJC1vSECSEQ=KTIRY+*Y42|lFvP!(N9O8)9r z-P4U84iR<9fiRP3Z=_}#gQ1PoW(F3zfA!QdQJfh0nD>v@D=$9LITZ- z0uiNee~k&Tl-)w2_7bX{q|vUquIWZYzrS8q9K%hUujwGdT;MEbA+_JgI1@;?oCmk- zkTUbuc|s&j(e@1;;^)4RVH62+GYj%U?w^?cf_Wl+Um%$%uP5fHgxh=eYiM?-bV?ES ziAOg-+1|Z$vs}>PC*F`%8UDxa8kv>hu|+Jp;m@ipOM*1Vur>Y4E=Q5&dhdUK0<3AI z)JLPNet)z+6wz#X%})<)1`~)Vov+JzN$1(kiv=decZG;=6;0@42@*_rG{&vtmPczVNHoH}G@E)vg0TRFCkm(Mt`Iha)kHMuJ;P;f+F?Msix5-?aXM z;N-vW%A`RUc56EZ5(RIzr4|uy_|}Sy6mqDgv{aJ6FczmsXt&Dt-d$C>k{`$iw+x~W zf&qdoa(CgNJoEXES|=eR`1f5{Li~VQs|L|J?@xl6^Ab=>iU674p5dO?r3bG}+^i05 z(9iqj^IJ%<1c?ab_~H6K1~`V?l>RB&vGgs%(U_6%wZguC&H!}nR(s(s9r=@DVM0v6a6@|IKnWFc=2wYkHD;S#3OfR8@2N~M!a4-gN(W7HJi{+4sFU~8G-tV4ifA0hM@(#`djP)WW5;jgnm zta?U9*O2pYPvMl!@)5wauA7aZ0ibjm>w?9zZLL$Y2HY;Wg0D_ClNk$kGh2c<`3ZiT z82Y{-)MWlewqw|UHr75zy49Ri_*I`~(r7KqCGbA(+BTB7!=>9gj?;^>togT7qjX0( zN}c1gj5IJ^TLS7=&Xk-Sue>DE*d070FMt2&WKGqp(L>ix4|S?yh9k+XKM+9|fB10^ z1&IgOe3r=#o>6N372O$ru)*r5ESYNeX>MBUEPB{kp2;Oc=vBG-IX2@HuJe8;MLAal zM}xkA&VK1}z8jg=eQuqQ<%eD-}O#DiT z7YClHs;i~C`^5xFkk@+#UOcd)muWjR>tx)&!jMj%r_F6Mm=zO@-H?lLX=mnL{OfOm z++w$MPDER7TBV?Wg~3qYqBFU%>Wwu4*vwG@DFF@ViHvuj&rE{jfV?DN@8ntHFDK0P z0!>JYLqQcL7s{g3y%?eQO)p(8wGNuSE9}o{35)VmtL6~$LQFHkDY3uPk{(Jn0cTw^ z(-9RMb!z<{o%U2Z{g0~Dc!Dwit@r46D@Zx1e!;BUk;QcFR$n$FOuA`@Y;Awf?fN0& zHx*(}3)EESe(6dEAn^3)!sotJ<)_=$x_j-}n%hVtlwAOC%o&yrAgiax2L2nJhCA9; z?w3TW$4WA8wXU}pnWq(%;#*9#fZS(>73YUTDtJd00rVWEWxf&#M2rfk8v>oT)MIUG zYk!3d(9mt*q0cS2opN+PplZ#16~>;n|6o4ht{G*WiO6&YzFn28x{*ba;7GF(e5$%t zaJ@DQ92|Q02h+o{dUA8L-ip+#{t89vFAGr!91YnYR&8jy>-sm!+JPXZBDRXhh(UhP z%(sp)GpDOe#=c|G;H@%0f7vR4D};Z9x6sq>r7On3?#0kRLxk9Fv@>ow25^tmf@uTv)UmJyeDp=<7c}K<-$?1E9yeMU$h=_ebe$fJd&P%#dK(={ryh z1r#O}%bKJy4rtu~b72L1sWN;LA}77W#OXcf_Hy+-nxL~&QMu7(a2%5#DCMVVbGDlD zbxKr30;mKzZ!~&gg6<_jLAI&Stw_jfEJU-TmJ17AbB_(nwMeC-+*oQgqy<0K6wBEg z$3IkXh)AZye{5(B12O6Ra54`LYpTj}<|UPfz38OY=xF*j`bYBggtsb!=EfBUH>S*F z4NVZYx{r>{<@*P3gG*dM=j#B|Qr<3kN6L|9=E4F((HX_y51x618dI zA-FiW|8JR(25^B?#n4{iq?!Ls%k1wmHM>>r!i6vhA~xB_?BX6OT_zpmLX#&Qh*y`;Gf5g7Wg|ni40s4D001gJYn@A?Sc3Y z4T-k_?cj&HdD7Sr2+$V(N=S;SnRp}y=Kh3WU_k{wU#Nk<=Rt#=Fi#F1?(g>@JKG*e z~YXMc-K%;f&3Q#TncdZe#Tj$;=BENkVgW8>t0ZSKLq3OQGdYf5T==7 zFs}U$_CZ^NNkO?>&@=$eR+H%Km>g|L5UH=U}-RK zLPNDeul8rLqbS;DLl}e31ucZ=rI10R{@plQ=fcV*iqPvGeFl!9jLZ|CI{5 z!=N2UIGwnL@_bjt-TDLsOJ2WZ|l3Up5{*6DkjC=ieb zJ)Ik3bMYKNdq`5OQjA7!=e!XowGhEshiWnJWIkx5p7gDD_B}1VHn{eRHT{)&`@L&` zmDV^zG!pG1pvYyN7tp2!^{=;Fa(1V)60|wkv+V;=M=EI%L@Om6zwlAyZ zM1XYsSDm)w7L?n0j1VN&jCx&{TMO?G4FT~5->JnMwlD?1??*PFkMd{+e0dh5;Rn`z zwp)CN4uCMD!9MqQ;yg^r!0bYItV!#Xy)co0|MS>`S&W9?E$IUBCjbk7aV{bD^8?96 zL_-MR%`>QJ;o{pvXcqfC{0IObzaYPJP63Dh?*Reb?<4w0y4{-3$=ufy8u79yL!u)Y#nJ0UxPWIZ*E3Yd$5W!wzBp!__Fk#|t2NSo) zjkxWddi>U6$_Mn;k_y}&A7=3kggfC5^V}7=p^T&ohx2c|GRNvktFeHo5bMY7hF#TQ zxYxU8>Dj>d{CWKKsW$rdB#hdO!(Pi~r5*34H~(A1#h1|L2clROGv3?=VclVeXBe90 zNn);Nx5}O0((mUpvBSlTX|Lv6v5$!cmK=y6kB7K@*cATEDjD1o9csdkjVzP*?IHA0 zssj_A!4(8#LdQMGOL71P<29Y}jw(mtZCc~>p|f>iyOg6ie~_Q@oq7D6syF`2-)p_L z$Rgh$kY#TANn2v%Qd|h)=lx-+`3kl75JXsV#_0|Ny~d@F50q$dEOn-6BTC4o94z7N^a zST>|3!2UpgsNqN?EOQ4RTEox8yY^R5$~cT)ScOb^d4JH2^+>VLV-Mqgwe^FhR64#s zv~;D>{mKv2@(eA}cFx98wE+<7$Ape0F&O)Zf zXbXdAJ;kXdt!T%SHv$Ft>|nI2R6KLkrMOhNs{ynUvP|D@W6=jr^%@Zb_c%Ejdb1}?XXYYDfLl??EcQtI4yEwafKLAm^fF@r9WSSMR$L&lYBZ=}rX6WOHw z#AAPrbzRJ0{zYXj-(o|N=%3NnwwBGkJ_c*oHPKTdbMjcLn`kTXWPP#sbcI1 z7g?n8P1_T2JCAfDLU8U#4XTc&T6%tmYXKK-8(W||ukyW{JU-;%0~ml>=3kP-Mp1V| zCO0K_NMDMP_N{f~bLSaQkK(VK?w+pCs^YB;2ZjjILbwl@1oeQ>hi84ge*R}JGeWWA zo183bPDyfw((HJ(E(2~?I?$=pJ0!UyX9^DRolyuG#@rt|>^`@XH5pF*ECO3}Z! zSe02@oD~bJ3p0t?QulqO$szI^`$|`TOLaI#$wj4ngUpyKZ4+GKt0r%UlXv5B1Z`+X z_v7^LJ*Q5m4Ld_wsFPOScC3Z|!Jdy(-O}ISrAt1{+b+LM{1QYj;F5T@NqpPBnK^dW z&8qt7$9GWTV};roynopBzpJ$TPymzkZbDO`Br(B0c3RQ>G*P;%c5Su%kQH4nMd(nx zGj-W*L!Mbtl>8-`R2YVBKpINyrYYQ2o4DG6B!(=C6is?%^bMRK|w?PiS zJ0*;Tl}ITN&s^T80Gb?^K!By?57hn`c_^LY$tlV`P$xzFTm4NqzO*x>4ES0|kSlOM zs{hFb7rG}M$h^!lu z744_19!N15tgbkP(L5dsl76DdxVxdJv25~76ns!%PMWh|N*}tbFcUU&*7&X87&Zm7 zr*e%tdua+!ILxvAXs?hXrdXwZ2DkOnsL`-Uk71tkn3P(7L=`NA3%q$1l%W;7Ut~{z z)*EO%cA6&c*>Vpgtmsc$fjK^>V{mO;QZps}A#TWV6HeRJh600sila}Kg zZNOTyQA=(#&yzSS4b*YlB5k5Y#I(A`VQX96gHvDGD>*RDlafm?+Z+9ut!4R z4o9Xgqg~8fZA{fJ!+R}X;$i2W(46*jnsww5UrKsil^bVU@(-bcwF{oPK)pY_F1#P_ z;@eap!Cn%yjLNdO9W_j(D+rhiY7FV6f0elntt0`KsOsYNz|6%1l$#CttZM+>Ar`^+ zmmoTB`_R^uWuk24z4(Q$B=%|F&An;0r3Yfx>NiR?>84`rMx(Yz%{!Yt)9O*rHyr$M z)#K^v$#0}j;@}phGxT3_kg*Wh)aocqraZ2QCGF^?e+o4yZdl>n;I><0UeqtwfY2Be zjSNxWf|mst0L$!0?08s}m)YKvDakvxibxGTU-Z-*slxgGe!c7*|r&*qhQ1r{%m-Ultz{mN>fEm`a$-Vk%Hd3avt8v-t~+gKrz5kRFn9K{^@f;MiE^#)WC;^K$EhTm3OQuP zlx@yfMJ<_eZXnTk+GB>JdVMpl{^ELdyy?7Q651c$9-pv72jAUeV5=ZHJ7~#xM|<9W5OjS7ZUB+_m+2wzHCWE-m$St zEP$t1_gMFFn9-6Tu6(a5Xnp_QY`KzWAZt=0<8$$9?dV-sA&@2dhGfvv&g40>a$v1S zCR#t<+)K&dz!(@?!MNv9r1p0_C>LDX7}3ahYHLka9!I0PL;RgfX^-5FPk2|g&xm{o zlt@r){w`LJsK^Yf#gNS@s#pT8A)il#ba*&oD_+K(iss&6N5?phTRWSNFnfxe#~qna zJhx7h#nyDKDmRC4z1ii{CN?9xJiFf^vA;r$b^P&`+swhYFW9I+0TVwK;8_2@$`F6U zlSW&Bns>Dk!d}t~dChiJ!-eXBVY21~2sy2MX&Q|h_EObNo$ahdHB{i|R&0O2 zMkni`n9~*W@v)^|*@pzGF{j<+C@4g&xVdn~*{TU9HZY@-9QfpL2O})BgE8ZtO-6^3 zb;eHox|~b3;TSsI7~ON{&TP^Lz|OUAD2({^Bbv1^V3>B2fQx7e1PT)Fc*rwe3m&6f z3B|1#ZZ08TR_Yt@J5sNG*<^{ug&P>+faR6g*velM;uT4N!Aw2^jk;HJY* z9oc)k+JPZXrSh08 ze~-JjC%@WgHh6DB2S7DgK|A@(VcsWz2aBS zgpSyT>^MDKTAy=ouf(@NSc`J7Im@_Z>P@V<-)oJIAMirw6yGor&T{ilhThuBY5!Ob zqr|0|p!rLq(%UiZk(D&rd5~zFe-$TP&BLKA2uJ$8`(yJ7a3!!5wd;LpkR+@B)%wDw zkB_>h4!s?p?6@;IYo&6*IUgi%H@5`-bDG0pbR9x!odM0@aZ0mTYxUXs(Xx_82F`E; zRE-BU>Gl=ZbMfhFcJUzSX66ZR=KkHSS6f2Dg;#szt}3=6y&ry0FiE=va$mbr1DzEr zyxde|_-{2B(1SKEed~k+tL`Ywnu}>jIWr$-goL+GaUf8wM$ppsrTvtTzD5O6%+?hJ zwN17I7M|Y`qYR}iCJ|wG(TuE5Us7l09cHU%fY@P*MDsI(3GBS`Kst5FR@(zI1Gy$> zfTU7mm7b`ZVZ79sysmR43+-YL0|HoHjTGVvH$*O6BcNhJt~x~$MxK)LDro|3<8~bha_=N2t=%0E5#ub8 zWovvo3wmC#BYZkG= zV2v?3NKSSe zId$4xwUpE_i?eEblXbAsY=sOEUdfvBXOO-1AE%OvtIxD^b z%Hq5^*=oNSBv8T`nSBIX3e-RLzkEP6uoIjc=czfU`5qwnJo3l;O0L@5gO$Te`C@?7 zs1EdfQ^NvvwY?$CDh(bI%4I&=xZms}SWP~^Eb*3~elNm9r*d6P_sBCZJm98;wlWxs zqW(4_fcq-_;ey;#Wuypy++Kj+Y1~N&&=d)J5+&oJafQ9q+)w|319u@ai;jgAj>R1K zhz4_4N zAx8L?wlk%QKjB#XJWM$*9aK_$Y?v+{YvDQr-+lsd%~xfYdJNN=&>9{Rv&sts{LoDH zSCNKW_x*Rb$AX9_k*eB-#%7L{6Q55aB3rYb&=PaXDStaRjx2W;UQCSLUql=o4R1$f znGb(SYH{^next5!d6FgD-KEC+HY9iOwL-ETdl;BVUjf5C`EVg;w@AJA$*IY#A15ap zhM6f6{|$Z-qHlW`X^|=j3<4C zgO8Hw5v^DM@D2xuPsP%f5>-vhp!7zKsuQ|#!?Ip7&VV2ka85}z;GXkvk{CnXfQ*ywdZ&~JsNP0_lwUsm z;p=JVL7u6rC`IGsm7ai*!#OxDibY$BJoph^(l0(fjHZ^a_u3b%CcROK$lLyyvDiMF z-OuByEG?agrfF0hB8yKc1&=VC|xi5kR3A3djB-ZhmPGI z?Wmk1BF4Y7%88jQb7@-yWLfU$TWsl!KApcLODFiWy$`IS*^|eevRNmDpY!P72)sFs zRIXMMA|LH#Hzfah6x&Y~F+&L2!vALl`(IYz$9AgX4EMXgzUs6YS1Tk$5n8zG)U{t9|H-4*R3N7NZ#l71`j#+?h}dK zf6;?~!AU^0&E8eET?~i7&L3Z?i9i?EjrnEviHKp0l@rp14gUwSBbDfC$$TU%kU_l) zTtAX;YiB0H>R!g~SX3fCR5^g7{}%R#ZnzC3Q2*Ce&Dj-lhRF&q{8zlUVb^vwUp)+b z#=CgNEq*W!7QpEWv@o6H+d0};Sf?@Q|A-+jT61>)+CPxnX&vJN_g_h1gOXs*U zj=`roVpZs9iucdVhc2~?^!So(J24zRf$Z#{|HIZf_2$AwYrE~LZQHhO+qP}DPi@<_ zZQJcCR&CqX_nv&&$#%p6n7h+M589>MKtpr0HG<%_eZNQRdDU`FA zLli~*EIe36I%ZPCcjJKn*R%JOmveeT<{VcuwWGWBVopDEpoUIh6WUSGvQX2QfRxQ` z-~F#=44^0%k?tOnyCDy zgjo6VB!P(6j5HTvp;VT0CY@#>0iaCf!y&q!re(0-sYxR>|18rvM!MG^ znL22`_R07R5*Xo|IEGU&8+>i~xA+$An?H!fb62aEef8WsuuttmtWo)>9KxR6r*nfs z5=s|(PTq731qYllpefKO^Uk;b`Hh7#niSI**$qb{)2m#GEMvs#9hguX4$~ZUD3$!1!&@qGP%`~lxfi6YI`cyYF90%+u?X6KzSERcg|G7&AcL=T z(T!~L5ZEnRBQ}D>zrM=>ApO^{;&2v4^HrLz*u(Quss?Jc?#&r+;kzXmRU*f9;JH;E z{O@~KPdkky>q1J_4uio1e;du%Pkg|=1rTbJ`Sy2vhbowBjmYKJym3Qb!&xx&&$Zg8 zWyz#>GcsZ54rYJqtW5VU?b=GH?@NndtHcsW3*on(umV=ZFKo zV290ygCLNXt$4?uS{ zolj!cogjkpG!Mz^XgPy3PQHB7CtSQ*-s}C*bMnLQSd+_w#H3!YF{wvQ&-$6HI+mEc zfA-waF`TLkTbhZ7YmD_tM=g|6jFP2ZDOeZ7l3S36WYYjl65E&1UwZ14=o*pW$VgOv z*GJ6SC+zi}S4&Q9K7y+T!f+}i6r=GmHZ z9=*>PlR3|fN@S)XYi7_kmjJK1V0~aD9B%@Bo#l&@iNJM8M1OZ~9;{+_2J}yMY?934 zj=uc0P<7iLwWY5e3Z8}zU?VCbS5mztUias&EZ6%q8xUZS2qzfv`!W(BM^&n_HJ@ux zMC9oWw(-(AFh!4``fePT*|zUvY@6C>oOPJ8oz64tQl$9v>wu0fu*l!`7F0vtBMzY z3pc@w$)eHZLop^VR59HJuW8{T>@fGqK~*lT9Oisnr(SRE9Ptcs$JXQoFdeTkhMRp> zUIC>p-S;f4!-J7EVzY;DHUzDW&EkC>d3I_JDT_4o>1+JSR}hCC223}K2d#qKu1QDM zm2Rcm#^L1qA(^vyd!${F*`6i)y?B{V_Hb>`4r=*SvzXor20CYCH0c_cvd~SQ%@&re z^p<1lDQM&wpbe4X6=~+Dbo1&qPtUGkcwwcUsQEk-p_@pT^?cY>zNpyRe0^@z=^K3H z9%akzl(x7mA8PhgQo# zt~5Z&-nF)i+~ZG&&IKrC_WVSm7}23r!}H6xs?QBKI7LiWj;3-pnywao-S)o)l-Bx7 z{*SDf<$q_z=$8M5#T+b*|34mPCS+n{=3+@!qCx{@Vr61aH&Ozj0K~R~sb-&})5l;? z(T_rDZ|OyK`&cys0SAFeIeCCB8-A-vwzS{2I z`oCm{q$$fKi*3OggCqs632AX^u7d$5O-()EUIDqg)2q9?%d2W@(=jfCKM`V8MhzIgk0S5{X03vuKxB+s~Ng!E6wS-Uv7p4aQN8cI{F=q1F-j*f<*S@;);c3^oQ1_;F30}0axVHK1ol(0y^ z+VhwOLMxy_wOmWAk20kePv>WRJThIwtWs`Sz1FkwnA)l242$wofzUE3aW`mqFq3n zfdgI7_~U@s0dffEe*`TE*T5|wZ0{t_1p{I_xPjib_6@$dGP#4U3*~F%4YPOon!e#5 zeP3*j-$bo|0w8>Me|~y@e4q(nAZNB#)6ZN%!1OHsQ+U#0`&%aj1Ae5 zKKnK5;^#r=K7Yg+|7F?zb$tIVe!r#s)hPRQ5Mw5=wf$LG`n9_I{rksmklh}j#jEoA z=gA8$g=l`-@U_3Jt3bd*1IrZr$MCaX+l%rJ;DtAGO`AtGJ2W^uHTPYPdqw)k9W1jl zu&^u*uy~@-`EncD47?e*Oenv%t1;7z!Snfhme)SB{PB+M&1) zh~O##5VGR&2FM?Eo+u808YX{&Ie~4Re+m78vZr<>1%U?4KR6EFWAk27-`Ychzt`8l z3=&`l%t?_$ZH!+Op#Srg*!kzL?6TeS z!~FC}{@nY_nSSo)SIm=IG=G-goaS8t@;jlJKF1HVo@ABJ`nC7>{xp2kfS$TQt^x*6 zr?!5;@=>~efq!k}%Ls7s@*&>GgZL2c1>WLmP(Yo*GK=QqL}WujYOO(Z>Z(VibT!!} zLXhH>>vo-+Vo))OMSM!eWB(nnvap<>$(WsVahbx_Zm5ys)-|VD%<-~YQ(bHUIvBJl zP21=wW%=a=^oHced~_3)#SGmFBC@oeEEkQv`|8fKVm%6n zX%hEUAgz_GE-R=f6^RMa7S?|&f$f;jS2vEhD139jm)OY-`IH4{wa8+nl{&7$+2%@- zZCV`~07%{0H7r94gX@6D4023B6dm2N0`=&3k+KC7!Xbb6nim7y_^>FthV6V!xos%X zd6)R{vh$(qd_WR^VetGS=OAyA$?kU;?501G0`Vvl1%PJDmWU<<QTX5+7y8q)h8 zL6k7qaA}60uqtDc-03Mrz*;%|o+mKcBz7tHw@A>i`Bul4p5E2MQ96_zT<5#K4^KsZqq8Kwk;V;EO3O{ z25WzdFWDHyZLr1wGz_cgQ+bIjh^<&7r$gMtxW**|jzkV{uo$-;o|O=2DI&Bbjx2fE z-4VeV?a@opjw>N+^0Is^; z>X3V1A%_Mq!Ne#J&DfH-H|UA28F7+m2k)U)%-3`}_xj^{#krevF>XIr;7bRq~9a;7hCP{ z?rlF@CdMKi1)VRIjOEs-XoY*rI1csek?^!xB4ZKohOcKS0dcXnDI54aShTWPJ^Yc% zQRLt8h~uWs)%=|x0+-$r$tJXn_~5FzghahbC9V0$j%7tb6u7x9L=vW9C=cms^JAwk z$by!CTlt68apmh@^&blx+Q35U3<4n)lLNb=O&Z*N*m7?9YEiY}wAKJ~+Ksq$rj5*5 zp=x}919|b9^AwGM)P}G+`?`eXbg%O@hJNPvLj&oaKS~_R&(MNc)tM%2iNAf=U$}l4 z(CqVAth%Vy)o9|)eoz;v#D8y6Pppy2fj2i3pK}cQL-9&}>a5%A%)(-P02cwrdN3>$ zDnrsyJ6y~zH=4WL;R8A~5v#e{bf1hYFXzLuAsKFX2Uo8Va71L8ouiDiQ@% zuz4AWqY7C!Ja9PX$7eWAYPEHk6IMpBKdbbe^Le6i6MZ~o{%-C%6)mi$S1Bqv)i28e z`71CkgS8auJJYAe<~6tQ9w+z4babfy@!Y9$qcFCW!(%|_*Ck$lA*bIX=cSkf{+1;G z6*0yKwujLnMja-H@K;65&&pO&UCZ0z*?pY!j^p<3A%WwkqAG7B-CQSar(RzUQ%%do z%0;<5%Ja+Z+R|k<*#hBKKTIBVu-NU)f0j7ZqUl@t6bT&;%JUl582L3LSWB^VVdulR^QN_2WvOnMz1-dnVJVo15k=k%*H>t>Kk7Yv@r>y&I{a;(Tz*P@GwMByu*+x!j^L71#ps0WFi0EGhV>s9;FNM86PTM@? z>*!=&6Z-j%r=1*0PG)^U3*Pj1e(ex)X?k@w zL8YX+trfL_d|-Up!s#xlvEgf+eyDxl7Vo}sPGix(>#3BD$1EOLWQM;oaNG01pygJ!|MHpSfAATyFA9ZO*bc0;+LOmDiox}!#6Z~tt z5_iOu?dTX5)D6G&K9sL+f_)IpvRbQQrb5FXz$H;S{srTUkq@o%K8E8KVv##+8T7to*_SuH5HjS<2Rs zNEWiHft(?wc&E%~@~v8GL;b($vc!Dh4`OB_iJWvVH%pNqrm=>RqxLFprda%TA7yEV z2$Y0FRL`qPUHAaHJ*7Q^=SAYBk=7C5Oaqihgu=Y)FVV|U{gQqg^yFv1T*p8>nW|h} zuT)An+qHCs};l z0x5kNhC33-T%qT8JXR#8Vrelb!Z^_au>Ua$R&_wlF;BS^jrrK9GqT{9+!M5R1k4>o-wfd-Vu1e zdzOHNVsa1vW#P^0uSeg+%d4xJXDCR;?U4Y~09p2nVm&PgdA!ZyQ!tq481sb#Mfog> zJA_$-W1@pY-MU|vXRlti(rk?z=2lPP*^uX6k%c_*t|bJCJhR2W3Fm{%p9!tz9e%Ra zZ%jF6jm0S1iZ&HYMMJM|5|eKN<_+&Fm&WF%5{i zx}g5|dHtY!uCSPB;xb8yK+W^U0%~l;F10m9TVc zicso$^G|cjkTwY8 zsxc`5jZ7O?jAq+%IvaanFKE&uMu}fxp#lFj$MVTgt*c~pb`PhvK(c5FwU4uXyk$>= z_efYIvfN~!9xgIP_FL2Fu=WAzn)!kRG3mG#(y}&*^^(4ZNmO|AJ!G-EryD>XN_fs- z%`DJabiN6x`FS)85`tokfnRgC(ayVu@H&P}a8bh9@sCO0>rnkI#>4cYark*3W!$Q zzI|#$=#i7YZSHQ;+3d?s%qIY*kdh?$4PD~)^moqrKGn!}!KbCJ*-n2_!M6$huN)P} zAJU)<4rF2wRtyIDj~7U*MXdh2G5xI<9d2WNMeqW}fT_^7a7N#8Hy=%znVx!6g7s3B zf8vUU&}pNb?AXx7x`S%_+@l& z#<_H=wjI5w4;>u~)(0=+&^Hr5=qfcy9;}hAQOoAN?HhJ&7aLR#RCJ3Nin!XAh!%U0 z3sIMM!Vdf?ul+odr@F*d1>y{_LXv)4*Ix0;sWIGW79abAwNg66^WJDbhmQfGmowGad$hu9G&8B)q;G&sH*~O|w>8mmjY$FYK2UY7&XoK>9PF7l;qCH+nlwq7zb6g{+XkYd% zqa=3JjL0ufbyJ85O6He6kdqS6UrRzlt!t~gAo{oJW+okW9JvAeiN|a;Tal|;pwnXj zjlWkg9M{J=Jq~$JBSvug+Naq`G3+TR6I#)0bwemx&R?A7Ij&LZMu&Hqc}s?sd}?5# zNtGSB1Nt&;4BEW*^NFr*LFSmL&QXEk@pd&QweO-tMIBG1)PBvSl1X{;8q==mX}1*$ z!;!*|{^UusZX1BSYB=-T@;rC@P7xquK9U@#IFh}kRL+f4PrIL;KKuy@ai8+^5{|RQ z&~)~HqvXc!7qS+^!q|<8?pjVpIrhbasi1)_aQa6E?Pwn6Xl^Ya71M8#tHjO7*QH>a zy5KC$V~{0sP74Rk-BaD7M-1*mQD`4A@es&6%$6PabmM?)-;i5(v3)F)+;-YRar?9+ zl8xCsliP5X+SeOfVns^dPW&y;BMr*40KtV#hx4)y)mKUq(wf(lZ<4c}?&-&tt7+&d zQudop^lXz)5hStWM9=m~dl>`&?d>o*uG-j7E+6cL&2x>Ol&liy_9Fk`#q+cZ*5}Bu z?Kd^zl^Z}7+q3eES5AicTx~fB_V7|?4nGJKavp}uP)BoHMG9l^t>R*$kkE(7pwYqV zVaG%MG*6SjM+46xl2KoY)nD6b8iTq{v4N6%6vt+&WG{6;tMWN?rW3Lou@I4%(4xb* zI~|0i;K#Pa5IK8fmZoe&rPXFAk<5uu(S;=>Qw)Hw@78@#lenw<)ng{IS6VnJeiiC~}%ZMqu6I;|3 z?Gixz3wxricGUeAzl0cGuSd1|OCq0&rYbcKOly#1K`pSR$h%TPWX6cuD03Dl4~)*n0) zaThTe-flx|a>FAV&LkYRE_DokiX%sNXrUPIo26uZx*Yc?r{9-g6jt<8M< z`Cb_l{gy=ENff#BT+%*nlp_OA)TvtOs_U737Ppr^*VGVD7*FF$rhXxVhO~_KYHP$B z=;s+H@sN7#y8Jj%@iCd5*AYxv@_{SUUeI8#hUF*LVZv>NP$8- zib5u}5*b~1&np)l#QmkP+e3hzU3Uy6a*@u7ao2R;LaWRJPh=fAafN38x|=w5BF1&t zU)$I0YlokRpi*T_!)MbDx&K~ej{~5%{M5p(O}*tubumLUTihPy&Ae_(ig+I)p2V0P zH{N{s)UfHxRaNzQLt3+R1){Pu&XnhvDl;gFL?VLfm^Guk*sACge0>PN4|T?%OIyuG z6F#2w64{Saayj&vFLpsk-|?bkZH#7CuVb94oxjSO<_mQ=e+slHO+!eD&JLgwZEg?$ z=c|QZA7p)Ag$DVd_eZ#q~{8ExS@p)YgJ0mtRRun5PA zj}HR#LUi87m`hAb^RKOCSHXs;9^SbGb>u&q2?#uUQGM)=RrQZ6P?qat$&aZEC~xFSf?vk6I`q)73lLa&1 zS6W@;)@H4+AK)~KH!qT*X`_kTfO{5S-lGf!MJ95RXvT{ET}M=`8`QUP{K?5?+lb$5 zvuniP4`KoF3%NA5G#zNAuD^ilQ?S+>{-_VNQu`OURKBP+63zOHE~caga*o$jOJ0P02;*-nxb(%~l|;-cToeEzl10{FWG6sV>x8Hj zg=sTBNfb>q15&E9w~swoQ=-@8V@DKQ_KkH;FM+gjXxS@z5A8^Tqd$8)$BytOs9evT zcNizGWQ+Pi;hiDIo|i6{q{P#@;%=p2xn3cdV>4?=)5z?x1R;?PP24RUIb0@EZDAB? z=Ns1rw(Gr9o(llPWl6fmP%s7W`ANvKGwSR&l@KgwQW4&$ehn1|Z0UP}Cb8#*JgDBf z_DydEapYk^dx{Ij_kd2@$C&X%G2bA-;#XVAfN)o1l$YsUN%}uP2RgaL>CHyD%DKF1eSTN4tW9P>|I; zS8YS4C6CY2=*ihm6x)dZKx!&-qz!58IBH?ox?8O_pwGGSMjo5IDjq_^9X~kVtYa_m zVpWULXcjl~az=_=x0~FCF9kx>r9XyzLvf@40&r+{vaIeWoKlEIb7eU=p}XL21$Phm z))mM)Oe%HblB_;XQfK~9J(trwJQA385HzsfKfR76ENM1%x}C$b^;ThqJQs?GBw9-3(uJmt20$c zhIk@E^JWv^=83GlHz*TDuY2Sln4~JS-)wP*lZ$DF zLuKv=BKrzbMEUQ8VY;jOkNqTnw&x{S8Qu>LwnZa6tDQ|>sHJd3bonKXd^xJ?Y7GUb zDAm%8343|_T~LTXFKYZr*J=9V0ieL&?ag13fmQ7?`kZ{>Am9?V#}B`g)Z?s_ zo42kayULw2YkZi6mLo6a^p7mC-A1-+X%Rej{0GNRfYRfrYNmso>KjVeavzPxeL@7SLr;%q%$?Lad4>Frk zImYfELtwbf;OhP6UncVnX52*uekUYeobqQxdZX*2C+hE1O~btDM^4FlXh?BfH`dhl z$Fw#%Md;1yBOagIkoRtO9t}PrpSoZHe7hD)=fR&TNB8&RL~EAe0Q0Ph9yn< zZk`&rEjY4fB5%|xa$_AJ^m*3lwY!sH5+oK6>?FW=YEtMVvfM8-E0D92oj{&Iv* zJ2RGYup1TjRN2~On|H@G#5p)axCpKYgT0Y|BtX$??O#I<_K8Pyk!c~Otg*m~!e)1} zCnn*d=QN0A4VK|906=*)v?K=LhVVTEY+)0kQ1}2pFNOSD`zUJ9;3)xzej26d{19JCI1MHZ}9S% zQDjBh!X`79$6p<_iqxY`v)hUN9BOc-?aU%(h!5cIHHk$q1C%ppf~PH}Tb3vo6nj`y zZ8uVu)7F@Zlc#K+p97}N-JKV%dGsNcABFAJsF71UbBsx9uJ7h`W4Wd~P-2!Hztkic z_C3>!&_E?y8vpLe0;*cm=$1-{z>}5B>@m|!->yjMcBl->y4wy*TXqdr@wr5`_Q~vexyRvj| zrE1sfiW4LptN7Zd*X#eM;$w~M#zUDiNSta5Wm9QHZ{7AIw047r)w8GfJX_DQ*{5_E zc?-_R#v!);-r4yYzODmTvyy|7fm9kmkfrYmRnsdF2voHI?>=h`7k%N)R!$QNsW9E! z?(jyw3+Vr#CL8m&APzN3TqlHzvM6%B6Zl)C`LZ{-=VIx-x`)Xc@&8&{^|UQ9LK%w*6PsPe9f8n%AM-UHcT(7;x?E*Uy>2g zqA=32Di&@rjBEejpSjU_xah$lzxb7jdm6O-H2{za9l|#Lw+e@gKe#xM`*(bP6nusi z5KaxkA-`b%pYB()XMq!wp)#-Ry^tF&B+?EShs&X2V+#_6 z?wuCs5Yqry545HYc&W>(1`Jel(xs9f21onGm`Si`C~dR?I1+Y(deQ}(1r<9dCj<|t z1^^XC$)ZUgPf_{P3%osU8JVr6KwW_qZ1m!CiScoT$)xheANR=^~`s zv0J9G8S_7v-p_njo@mveHK{8jt#__OpFQQ^kUsNV6#K;4<_Y(4&qpJuXUy@`z6L0m zM%@@{$7o+|F_VTpLaUYSpvr-K(SYWvTYy6Jrmk0KM#=Fl_&=VY1)&59u?K;|@jo3A zoeBPkt8uFx#?1(E9ZGI#x|B^W-A}%Gbj#Z&p6eWFRU|H@Ij26olY(*maKaZ<^|FMY z1vg3`D~6vJ69IvI+pTD_a!m|}!E^NGqI4<~JqX9OC zD{sLH{iRD1)FY0gs5hJ8W(IphFyy{ETta;6y*4`@@gP6_FZIXBM9q(Rf&a2IG@E}bA#(; zcB>{79Pa8B>~$6K{pg^rc|kBjtpMA^E_WHT!GgHiNAFH@Zpf{pxB}!!W=LE9c8no!(BlyEHjbQg1n=f~^ZWx} zB68q~6zyVoks5fr&dr;@Uk7|Sa*I7_;2n1haardVW-CV;gdRzY33Ota2Coys@)#U;xngHN|$zMw5@r zpFfe~#iBb zA=ciECFFsGVEHcZj05brFw2y})+cpsPL zq(Hk%q8L$qXX|^s12CPBZ;0vJ^ zn^0fp5O&0&STSH`sjVDZ2eOr5f5o2<3KE1jXjT^ai5FiXK;XU{Q~%+m57h+cScCRad&Ag$Z)C1bdmJ-?C#Br$gAEl`g?x?#TRqFY~NQHZD?GoSk z9ek%KKBU4iQL^YjJQXDT;bc&Wrn2|*F5&*Q=L6952|AZNUQF)etex=Q1vwU`);z8B zTPVYboSA`c!ZvyEM%}zpoAwy>!z!p_5`rECS?$YLl&RZ)v0X&BHhHa&H;q!gPBf5# zAG0jivj-#y(Af{0%j=%>##6>FwuiF=hTW;<2snjv$LNy!_BRgyZi()G_3RzU0oxJu za00Gv_Nah|G0+t7oj33j>`wLis-R(4k0>mR{uYA`?Pz}nu+&DdSj^FO!HvlN_u`b( zc<9n(65;$642#hGy3D3j$4`U7r}gd#+ZayYXO0oC$|xrl9 zHAm`p)~D!6P2S=lnxLmOORSA9zIILL9Dt<9_^5Y*nq;o1u~70_qPT)@KNHh3A<^K* z2|A`)kMzf#Q()g%qNbvDHuX&&&KEJ;go2^*y-;=;@T^9NBbpQn`a5O7Qj3qpQCXS* zCA^fqK99b8eGH{EkUx~U_|eXzJL_78A%nref2}FBryjbVFx3tAGkzhpUPGo^c!2u2 zoEFz#S#oo7@<6yKyBqB#$^q2QA^)oIn-OhL>5d@5tgQLU$M`)?dI4_L%;ogk0Xbsl zExti_EIl-gwG2Hkf)o0JA~-DUU3zciLni+e5dCmxaI|D3b!hj=61NL(=3ym>hVH#f z!+!R)vL%_G5ko|J;hjw!O?-T=EdUkq5@8KA$+D4TLJ&uFWXJ`nq%&&o)^UlaT_~ZU zsz)jPeIML(3vrg_D$&)kogQKNJptKTB>5g|zI zzErKq1~uB>N}VJLd|3huNtAg8EBG%UI-Dag5a`_xvy{)w0R?n~Z}MqYC&0mQO0wPK zlAdOcP8XyTeR%c7@P)ru=HMM?2X>k|c1SMAp%fJES8)%vcX?c61 zzm-VrTw#jO@!9~DnTISwqCFzfpm5K9SXaf{!nYgG+%Xv~zEex;PdT@#*Ns%8`mQLt z%r*jS|dC$s2VTz)HIUDX|!9hNz{hTv^S>r!MY8gw^zzT-uJE&yXP>_4(p{@d|I zZHydU!ic?(Ms=5FUP|BNy0&u3Qj>rOUkx{|a@;RoE?miP-f%FuN8L&WSP|d8!I^b> zofx~xoAt-y2j$x!<2#8d6n$DjhI8A)`4+lM(=@3v^}*D$w+n2h*ZlGqfrp)8^M8ZW zf2^T7(utHn&=6T!SpSEVX6Ix~R-{7v!@}VTc3|>e&w2X z!8~ty<}@ROq^TeVi90&l2Z;nZW@S|c4Io4$zc5aAa74RXSQE3C8s&!zR$ z4>r*$3>cI|B}Wi1I$%X~EU4-xNeD-nAfcQhA%zA3_7WmY1b`9iiUmFxB4C1641%eO z4HVjU#5hA*IA~XlU`Mu&^rt`A@roI{H4?(=iH&^8<8%qU$jRFmxgM&u>i;050r% z1?=or6|DmfWa7`q65U0{&r0LC0jS}-3~tQ;0DVccKobV6=}XR;B>`vx`+5Hzpz`f8 z^*eTFp!UO%^lKp!brToYzfIf!{W}cj9>nGSixxm!%Y#e?1P3Y&e)kK@7W9Ku3yuon z;_;zS4~-my90a?CE@m!|?@x~i_$9zSDT90r5^gb)wCNT|c@M_|UNig7)>hCj!`w?jCMpZXekK74*Mmzy5FqiVPKOH&>`b+O#8m+$HZl z%3)K_QO&u$QRpuOY-W0M26Xa(*Kc(Z zoy%FklvH(xm5dFVfSV5>iaqhj=Ow~F>TWn!w^&sR`>*k89nZ${U(tLZWyDST|E@`a zlZ&`aQU&rPjws=(!r83aeCq$27LxgpnYO;GqHP;4Rt!+yga&gSSE%Sc*~Vy@>o0cHU??ll6d)FK@YzJc!Mr;jN@}>KKs4t=L_n&|10IqXSMHNU?0&t?Yd&5NeUxGf$jA?uAL?|=#& zeE8gPxS2-q=RYAUdCy{;^clUFce*3Qq{!750UUm)VQRj2Vrh$e(T_gn8JvvTRtjkB z%d81Oe<>P*I6?M-Jr&Qt4wO%-%1XC=R5E{Q$BA{q{sC4qV&Po^cO#H%NdWUtA){_( zi2qhGYAqYUE#=O?Ks$@Ub;U`Om|-MDmnqoz^Y}4+Sct)zIsaLP5e$yyj?qBUyJefY zk1;Tsu(ra+Di_933nVT@j`^A2penj;JGxtRx>PLb1qYs=&ku#ewMrmHW`#Bz4TnXB zQd;mu%V<8)*|e*uo!nkHmjGjRYfkA`^$OJ@abX-lK5X{9m0fgIrKpVA9}xcLrV&GR z8E)Pr?Zz!(n>E!*pe3Wq90D#-N+YsDQD!cn6Y<=pd+%j3Ws8hV8KMPF<;A!=TZP#r zP{X*E-j|2{uiw-s0j7q1pxDny?=rGj+y^AecVQNX(LdPFXOrYA7)zw}T$k}JvQOVA z_}~(7!Ui)iVEtE`DEQ0Q&2EG-OW39)Gd+qnXomk@DuVd%Cmx61O+fmRj-YtxQ<3;z zehkp4xyB^VfA6r$IL{*aROJ zS_{orz00)-$qx>yVPJbp25yeTb9An8tUx6`#@O_%o11Ri?dg06PG+}bC3w*~IukY^ zt8S~XI9l+s*4S67%)y?;5h7+<8&|Z&TZJ=h{LeU*eV+Okd|G=ADg_+T`-oiV+@g;r zd$p&0=}BPj5C?TQ20Mzc2_BlZ!pl_um$O33pV_jDrj%a`MRY!?HJp7PG!{(s683J7 zjRuRp<5ld=(jM=+RL+*_$ExNE_ih+~>uJeOOSaOSDD8t|_t}|9hsEBuV%+M1yr$Q! z=60i9Z?NgJ_nnG4^KD0oQPfS+ZK{Q3>UYK>(tgv7l%XzGf^ihI>6E5Y#+U7W;Z_Jy ziJ6)4RfFVTgIONJLK9xhX-=1t)0sjk&9&B?>vO*|4QF!Ur}Txw;!C5G<1w)I%GbKLe_8blgj5Mg(6e9oc7&TOX)e-?7{S%2MD5gG4 zCv>NXJJ(|7)V~1dN+~7Ewt?kKMaV8R^HTk4UzX|eaC|BQN+3n5T&wc+8~?^mZ2P|n z5_#KLTT8uLB$A=S#IyCnrU5g6O(;96^@U(eU{vMPISa8lI+`@Fs836=V?xhja=R(t6{#?^3&jj@Q zkto6DUZ$qmgPsyDMjl4`#6>dE&49PF1+)#wwVl6K0~I?7Fi09T=$y@`#C6M z@V@pKpRMuI_%7sgRkMEB-h{me#d02L&L%Arj$lG-VLYNYOda*Pw5XOTA5daK5yI4u z_Rt&*_YSnk{pFOMoRT|WkL~<2+G@#_&2HdRDBh>GX0GXa5k{SPq|I~A7b)V|CTQYj zV}~=h^cD*Fb)zmN#|NSfV|hpvw2^3T{!r3olPghh`kZ$+4%( zY2S|36m}+QPSXly;nSJCnzzU^NmqUPRx26~hFs3jD_!{5BX}eKMZ}3cvh4BEyZd$K z!elo7L90Q@3g%oDJ`|LDyhae&r9W&bdg#t_=Z50zpFvF@yzjMp4?gz}nNa_pJ?J5O zEhSX>JQNPHNXlZsIyOKHm_%hPhUFDWJ=&B%-^8HRG$>aIVq?(kkErV#hwn*u?uSVsJh7$(SHm8jW6b_eBJs{DNs-sJV#z=@=wKL!IKENGdMCY9vkz(Q&M zPJ^983C~`j^K+&DAW9MY!#MqeflZ1Jk5?(wgP;v|Jg}-DL{UD6GgoIJ$#xa%KCAqz z#W&A-hTy^gTW7fws0ia=)h-qHO+eO9(5s`^e*LTSDq;3Khq0mU?UK(;ck1j^Wx5n# zIk;QBdG`eF8TNKq z2#>B?%#bDjk>hK!6YI3I+2vPBg=E$1dhMAUw5lrDirb}<+cHlf2KvFh)?apmKsX7Z zK+||YhD*d8(7~fztp%irTdu+eXvaw$<28 z8r!xT?bx=H#%XNZwr$(~`p$P|-kCG!FIY2stsnM0&wXDPF>RC4Ijg9!A{!*AFoq3< zwgvcxujtpi@S{+r|I!?JXkxuhJGs3~N_Q zx=wgM?b7}DY?cX!ynjY$-mjd;Z+F--o_4@LF|pX}0Ktzyr^)dB{R+)9+7GP-ydD#D zu_uI0z@u%jol4ewZtCDC^Orv~c&*l$qQjsriO*6BzIXjrOxL=d?#x(-uQ0zyUElyT zaZM<(7x#!38fXlr{=2?FHU#y+vdR!4tKHpqFC3|dBsX@ixf04$x8N-fVw0fQLC$u8 z1%SFMomk$^S?ts*vnSizu*Ma6ucJJ$%A!=2ZA!`aM?2Y^(^OfX+-%k}SkQ`Xmg=Mi za?%nXQC*ga7F#%RkSM}P9!;#0NIo@*qIY>fSlmojUhGhO0mzNAmfe;n@-2_dhxfhw zYKDAW zrnks~gu%nlm&%0N!h;h^ylc+3W|`a=NN-Qu2?R z!4t9p^+z48$kaGmk?f{!P_7#5gNG^_4mg!wfx~AkA5VB=&{rO1WXyHerWa2sKdV%Y z33xcYz%KL#xAE@bhT0GQDI=L=^Z;b{tl7luQw1e%Jw?NT!V$6Snju>#+Is6SlcMSl z+Z@lm3+gA8ci3}nOy9U2=VgwQQL{PfXGBW*_>MmuMD%D86DIw#ZGK#-KBi>4y%&VX|Wm1^(V1JqgR{Ss~sXcV^d!;R88a?YPBJ ztwx4Cw8{A_ER4)t~mi@%QH-CVFQ^T{;k@pu=DvJZbn-tA+!&myT~s(eY_ z4I1-m3)C#jx%yp!yx+IgPXmc29{~d27>nIK=>8JvP<&91zgXud9sZ1JePFh~FopEJ zBB0-qM2-!fjgh9<8?GfC52$3b+c9sR%r#9(v1kbwKKeO}rt_MI1C^dU60w97_hqyOS@(y3B!v0=O9HyVvJeO6pc0_Uuf>sCXcK*FcZ3COtVw=}q3 zMG|qo*ksbTEnKV5qxUwiU(|Lz{t;hJZT@b7GC`ZvHl=jISO&JQ?3 zupWDbpK`0@$@!Mfa>B%?W-nfeX< zbuFC=GQ?KhX8{n4xsuus)+JsWIdIy}`IBw1a6P+3u#zT&MfSC>1^ja)~7e7nhrikbp)QE%=%Pys>VYZ$spEZ~i*O6G2YiJ={@(m9G} zIPx*6VF7ZSBf+*G(LHX1MUUsoJS`*G%UH>YvC5BWLoNoRDiD?pMrKZXGYprp7L%hVW#Zx1Zdu zuWT+@r*1j=4R)tuie%&P3>iU!=3q_(j-}^awCZ6-b0wBUt(?er_hn%~S=7Jqel#)+ z!rGYN=L73PeICn3hm%t)acP;|d}$W}bsaLeb`yMcQT13hSYn9Lu)jL=*%tzi`+}n` zHwJ1qLd|w=AO)m~UCBWrid*_0pSWRU=}0ZSD)FA~?m{MA*&1KE`NV zjvSqWJ+>6C@?ES8Gq3IaVZbLObyUx$CM#Bi(gHNMN4hC)$vAgioN<$T35_f!{{`mV ze`)WzSQVa@lx9tsVRqf36kpx7gVCz)ux{*gU~zsIYz7|vBWt)GnJMG94#v=VPD);@ z?FQBuAyr|2JoNW`kHZ#MsN{MVZCf4sqo`g1#@wgSP&G8(wt z62M(PL{Yz6DUSh1U+p?SNe__Gzeih-r-IMY1NK#-uqamofvL(EBIPgBh zN6U;$Ip;U7^mLA0)={3~R$Szgd<3Ez$iDWuG9o2neV^JZ6r6oOGmit%Y0K5qe&QOq zRDSE&%AXYeO}5y*dCkAEAnQgI)Xh~=GfW74{Owx zTljBdjH6`?&b~d55trwVvs8bf-h5Bo#*n$H4^vMdr+f~${J4;y)g(?fqZyzD^?5G? zbGtn&u0=jSL8?_*JhMH&j|Hxq3QQG#^p4oR-dD&KW6te6#?&DK>2=XXf7(C|G?Z>J z?@*xK(y=a#5ljUp!pxQB*kkj*W`yG~$HG|{ID{q@JA>szN->YTp}FkA;BSi0TZ#v%(490Z2V zVD0!kI*d3dlis<^*VZP2mtQhlpMpO9El8>oce%HeYEWnD)QYX816EU7Txt@)2*zla z!P=|n2gN*!Z~AA6{S>1_5bS<6`d~>OyREGWct>e7ylGwS|z^)70}Nuqa(m>@7lNb)JXksI*`TsaSZOS1Qv%c(Yrfa+FI<*c<0o3 z9e84~o?!tMFRefeYhr(ed+HSj+dz#;lt~&>o(cg1EXI5$)1)#^IlT7464_MRI#3s4?M^()@17-CVdp3 z<%ykhOgsxI-Wro8mwb}$M^kIj3ik(KXlJf>PhZC`^E&5XuTxV>ai;B2)kJYl zW&HE4$Hq4K_s)nS6QS{)fPtLD6ec@nB8u)vNGUcU1snMG69H1?Tpn*Eh`(}z!|rXF zCT+=|R=^G!P*pe2e((2dKBHFd|4TR~&t=|7(q4KFkF=!o4|T$uW!4((7gzs?+{cDa z#8jxvcgq?Wq95`*33}xJu0qdsE40z>4?c8#U-yUO9!{DFL>)4Y%G|qBSW|Q$3T{HZH1DCDw(z)Ahb|lmSGXzvKJVpYxjW=xE&)n7tH?j@k9qeRz(6W zYJ2S`e(3~HaFR{a_VZ4eZg@WHQ59F(XLOvmYh4^^8s8bAJl!i_Ab|-YAw}n1GBqV{ zx2_RU=N1)4_|zjJBe(bJpA{%P7E`qJ9klCH|Jlz*75171j^<}^lL#(~7rHxmcs~t^ z@{gSc3045}0)lA({|xQi!*mtBh|puoN7PWZGvFeLWT3*?%&S30Kf9V%A^LN%Hm>In znnz_Xw?JbBJF*lAcv6r0u?P2F*^Vyr+IX-m?0ilnuskg@X+EuQ8$iXMbN!e< z!QU0TkUk)=cO*z!&!YGoMo5U+JxO$U1%5%O#s+X}K2{W(Si{=Gxc@?MzARY}Uva*} zPqQ5h^P8#Ou7pWbur?;!DMTC@_U`S_&dUsHN=o5isDiYdb`|@Ru?e>;IJ95JJ;(6_ zgr)t>2h0?K$`^D(!g{lM;k?yk%*C3ZxwyrE%_#n{{5fbjzV9|t9Q*73npx2W!R z`Zr)IMQwxdYQ}myM&6bx;>-CjK`GSW^d+|~^POiy z^F3=2+=H$Ds>lIjbVXE0WQ6ko-eam)I}rKV1dXl}{tCl9{naPz*-wuw#aEk*mqXI% zMj<0z4xSCGN3z<0P7#c}Dfk7BslYTMZWt&;Nnn?dRbka|Wev{qp`WVDIchgb{sB zZPNuS+wO8n3SW0~q40EkjK32aiXl0>eCo$Zfo&MvTSb>fwZ6jm!3w=Ydr|v2eL280 zSy>7PE7#7=V$iY6cUDQ z^lkWh``={KZJ;qZ(NNdVdrUV6w~25^q%uZS#EKSXv9~LARXQd00RsKu@3GIrFaHj@ z8?~2p!w;nzR&ws_!%%W~x!FN39Zh8E>bDmI0vru%(o#t!->#=4 z2(OpRx6I~$CgrLp7L3BA`1VI1=bk#{>julSj8~q4*0e*6c&`stc<&p$x3JBmjcy9O zp}JmLOxaBI>zWrXn`PlA?yv3@eVgW2WBXv-?IDTy-}~)<>ut{e4F>xU7mS^S^S|3} zE+!6^e^@XKaBimmS$F?aM`e!9(kBZ^+BY#ZkNv|5Z;+$t`+`EH^lY#T+51DfxglSo zXa~qt=k^>>QXXyIZM|)3UR7wEWmNvvX)9}WW5-OZ#Y+ect3XwsU4$BiFg85^52dCW zwg*?&SV_~+ScxqynJ4~9d%b0AOe0qvK-#|;dLxQnGm-rL(AWiC{cV7jAh7(y`=S-%?m4cieq6`W8uxtG)fgc7% zaCcP~j_l!xp2C&?M;wCgzB>eA$NlXaPq2K5tp17Yi+cUE0^&Q~4a|LHePqBG-l?$+ zFE1~yA{p;N)i8sn{wVJTA(#4XT0)zM3R27bf(W6(y$T2%1!M}N(8kWNZdZ*8gGixb zf*iN>bgenDx%w^(6QmIkt9EG_zsTKrjiPZ-7&b00>f@J?-d?@-6C>&G9T~Y9y*Sk+ zb2Kt=d`w&YT|R%*{RAlAqrZFm`V z??q~EbpZGmCd8+!pxgF=fteLFleaC{IV3Zr;1{tcmw#ptNJ#+t^4J~#{WXxOZp~mqI`g7@{mda9w z<}VHF`^obbv!bGwnlCguN_YR@2pkAliyz445fHQl)KUcy0ct(33V$P`O6fs{UyE0d zj9%3SCINWg$E%%O@OR3zyo)-^9*|W)v~p;4#Pa?AfpY2B10qK zke5h8e6`7 z`LOp|Jjg*AzWKeJ3+U|G;lK0Ae`$mSM%7e|T(ubO?SuJ#`zB;NJf-$!?EuE-I|XhD z=K3MC0)l0VuXXGMx7}jK=v!I=etQL2`6RRe8ddg(bWT5ne8CSN6bx7 zA8X*o2N2alpEkApzcl>HqhvpYtNHIVcs~-Z>6oxGfN`@=Gj^dbY|=H>?gz#@!B#d` zM|*dH;I94`FNm+&FAvLZeYI-l+urgDW*}G0MgPpD5GD?O?lHAHVsGEdh65<7(e@@Y zuj()8@hI2ySk2R}+5dt3Q)w$tL~;I;$H?Sz-KZ?MelcnD^~bSWC0@&94Uh^>A4g6*#XQ!>*7aC0;17BGaHS0;d!GxuAV{oq>P zI_rt5>MmSaHkz{UAk+Rz9PP28d5KkH ziksGfP1Frjhb>x4yW8G`aimSbzZu)G3m!9jAz_9}3-lvuI0d4*A%Q zzOs7ER^X2p>>Y=7QN#N_)q4QeiBn{>^G8fx>$Gc32T4y=^xR!gOIkZSt=gUx4cm>f zPRnat)lkG~ulXob)6NC!yo0XX*caM|D5i244jlJFZ7;X&o*8gHmV|w*$N{n~-z5SM zXrc0XB=n5J!`__Jzs{6S$o(x(ACq8R2yh7{tzN~%dSj>oSD8J=aOp@SMW2J@uP!y%B8XOUs}s6lH}2~09E&LX|@XT>G+w(NbpIc zWHc>$5K+g|^Mn{OO&KkS+_YahTM*b-`PP|GGHxpu=8C_SPOi{7 z7V1rcvN_)u$ubAc7lkTgpV=pQvwKzTtsAIAj-IC3UJf}%)@yIo-D;nXj?8L~LsN;i ziJ3JB)86oux^>!i!%rJ}%WEiwKt9+n917bnAKT{1wSD4%znVj-cRn}l;WZGuno~Wj zwup6{Pys~HLpa669desbFjoKVuH~|VdUbY>G_=YN&g?Bd;8Wslmi<)Lj1o7C%VaN| zZGF1wG+!;ebi%@Irl#}nf^yJR!p)Fr)daoCZ9o(*OA(yTjc=7}EMtG+8 z)7BKp7ki*q3~|Ac29H?wBQP>uReKUkDzvhQF*Khxnu(#2v7I^&R?_d)11(-