# HG changeset patch # User Kaito Tokumori # Date 1456663300 -32400 # Node ID 8319d82cab079db8c76be0631658db30f907cc1f add files diff -r 000000000000 -r 8319d82cab07 .hgignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,15 @@ +syntax: glob + +.DS_Store +*.swp + +*.aux +*.bbl +*.blg +*.cpt +*.dvi +*.lof +*.log +*.lol +*.lot +*.toc diff -r 000000000000 -r 8319d82cab07 .hgtags --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgtags Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,1 @@ +555a28173a0a22276dde4e829254ea3e56cf68a1 submit diff -r 000000000000 -r 8319d82cab07 IEEEtran.cls --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IEEEtran.cls Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,6254 @@ +%% +%% IEEEtran.cls 2014/09/17 version V1.8a +%% +%% 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/tex-archive/macros/latex/contrib/IEEEtran/ +%% and +%% http://www.ieee.org/ +%% +%% Based on the original 1993 IEEEtran.cls, but with many bug fixes +%% and enhancements (from both JVH and MDS) over the 1996/7 version. +%% +%% +%% Contributors: +%% Gerry Murray (1993), Silvano Balemi (1993), +%% Jon Dixon (1996), Peter N"uchter (1996), +%% Juergen von Hagen (2000), and Michael Shell (2001-2014) +%% +%% +%% Copyright (c) 1993-2000 by Gerry Murray, Silvano Balemi, +%% Jon Dixon, Peter N"uchter, +%% Juergen von Hagen +%% and +%% Copyright (c) 2001-2014 by Michael Shell +%% +%% Current maintainer (V1.3 to V1.8a): Michael Shell +%% See: +%% http://www.michaelshell.org/ +%% for current contact information. +%% +%% Special thanks to Peter Wilson (CUA) and Donald Arseneau +%% for allowing the inclusion of the \@ifmtarg command +%% from their ifmtarg LaTeX package. +%% +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%% +%% This work is distributed under the LaTeX Project Public License (LPPL) +%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, +%% distributed and modified. A copy of the LPPL, version 1.3, is included +%% in the base LaTeX documentation of all distributions of LaTeX released +%% 2003/12/01 or later. +%% Retain all contribution notices and credits. +%% ** Modified files should be clearly indicated as such, including ** +%% ** renaming them and changing author support contact information. ** +%% +%% File list of work: IEEEtran.cls, IEEEtran_HOWTO.pdf, bare_adv.tex, +%% bare_conf.tex, bare_jrnl.tex, bare_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. +% +% compsoc, transmag +% Use the format of the IEEE Computer Society or IEEE Transactions on Magnetics +% +% 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}[2014/09/17 V1.8a 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\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{compsoc}{\CLASSOPTIONcompsoctrue\CLASSOPTIONtransmagfalse} + +\DeclareOption{transmag}{\CLASSOPTIONtransmagtrue\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 -- +% +% 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} + + +% IEEE uses Times Roman font, so we'll default to Times. +% These three commands make up the entire times.sty package. +\renewcommand{\sfdefault}{phv} +\renewcommand{\rmdefault}{ptm} +\renewcommand{\ttdefault}{pcr} + +\@IEEEcompsoconly{\typeout{-- Using IEEE Computer Society mode.}} + +% V1.7 compsoc nonconference papers, use Palatino/Palladio as the main text font, +% not Times Roman. +\@IEEEcompsocnotconfonly{\renewcommand{\rmdefault}{ppl}} + +% enable Times/Palatino main text font +\normalfont\selectfont + + + + + +% V1.7 conference notice message hook +\def\@IEEEconsolenoticeconference{\typeout{}% +\typeout{** Conference Paper **}% +\typeout{Before submitting the final camera ready copy, remember to:}% +\typeout{}% +\typeout{ 1. Manually equalize the lengths of two columns on the last page}% +\typeout{ of your paper;}% +\typeout{}% +\typeout{ 2. Ensure that any PostScript and/or PDF output post-processing}% +\typeout{ uses only Type 1 fonts and that every step in the generation}% +\typeout{ process uses the appropriate paper size.}% +\typeout{}} + + +% we can send console reminder messages to the user here +\AtEndDocument{\ifCLASSOPTIONconference\@IEEEconsolenoticeconference\fi} + + +% warn about the use of single column other than for draft mode +\ifCLASSOPTIONtwocolumn\else% + \ifCLASSOPTIONdraftcls\else% + \typeout{** ATTENTION: Single column mode is not typically used with IEEE publications.}% + \fi% +\fi + + +% V1.7 improved paper size setting code. +% Set pdfpage and dvips paper sizes. Conditional tests are similar to that +% of ifpdf.sty. Retain within {} to ensure tested macros are never altered, +% even if only effect is to set them to \relax. +% if \pdfoutput is undefined or equal to relax, output a dvips special +{\@ifundefined{pdfoutput}{\AtBeginDvi{\special{papersize=\CLASSINFOpaperwidth,\CLASSINFOpaperheight}}}{% +% pdfoutput is defined and not equal to \relax +% check for pdfpageheight existence just in case someone sets pdfoutput +% under non-pdflatex. If exists, set them regardless of value of \pdfoutput. +\@ifundefined{pdfpageheight}{\relax}{\global\pdfpagewidth\paperwidth +\global\pdfpageheight\paperheight}% +% if using \pdfoutput=0 under pdflatex, send dvips papersize special +\ifcase\pdfoutput +\AtBeginDvi{\special{papersize=\CLASSINFOpaperwidth,\CLASSINFOpaperheight}}% +\else +% we are using pdf output, set CLASSINFOpdf flag +\global\CLASSINFOpdftrue +\fi}} + +% let the user know the selected papersize +\typeout{-- Using \CLASSINFOpaperwidth\space x \CLASSINFOpaperheight\space +(\CLASSOPTIONpaper)\space paper.} + +\ifCLASSINFOpdf +\typeout{-- Using PDF output.} +\else +\typeout{-- Using DVI output.} +\fi + + +% The idea hinted here is for LaTeX to generate markleft{} and markright{} +% automatically for you after you enter \author{}, \journal{}, +% \journaldate{}, journalvol{}, \journalnum{}, etc. +% However, there may be some backward compatibility issues here as +% well as some special applications for IEEEtran.cls and special issues +% that may require the flexible \markleft{}, \markright{} and/or \markboth{}. +% We'll leave this as an open future suggestion. +%\newcommand{\journal}[1]{\def\@journal{#1}} +%\def\@journal{} + + + +% pointsize values +% used with ifx to determine the document's normal size +\def\@IEEEptsizenine{9} +\def\@IEEEptsizeten{10} +\def\@IEEEptsizeeleven{11} +\def\@IEEEptsizetwelve{12} + + + +% FONT DEFINITIONS (No sizexx.clo file needed) +% V1.6 revised font sizes, displayskip values and +% revised normalsize baselineskip to reduce underfull vbox problems +% on the 58pc = 696pt = 9.5in text height we want +% normalsize #lines/column baselineskip (aka leading) +% 9pt 63 11.0476pt (truncated down) +% 10pt 58 12pt (exact) +% 11pt 52 13.3846pt (truncated down) +% 12pt 50 13.92pt (exact) +% + +% we need to store the nominal baselineskip for the given font size +% in case baselinestretch ever changes. +% this is a dimen, so it will not hold stretch or shrink +\newdimen\@IEEEnormalsizeunitybaselineskip +\@IEEEnormalsizeunitybaselineskip\baselineskip + + + +%% ******* 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, IEEE allows for a more generous range which reduces the need +% for hyphenation, especially for two column text. Furthermore, IEEE +% tends to use a little bit more nominal space between the words. +% IEEE's interword spacing percentages appear to be: +% 35% nominal +% 23% minimum +% 50% maximum +% (They may even be using a tad more for the largest fonts such as 24pt.) +% +% for bold text, IEEE increases the spacing a little more: +% 37.5% nominal +% 23% minimum +% 55% maximum + +% here are the interword spacing ratios we'll use +% for medium (normal weight) +\def\@IEEEinterspaceratioM{0.35} +\def\@IEEEinterspaceMINratioM{0.23} +\def\@IEEEinterspaceMAXratioM{0.50} + +% for bold +\def\@IEEEinterspaceratioB{0.375} +\def\@IEEEinterspaceMINratioB{0.23} +\def\@IEEEinterspaceMAXratioB{0.55} + + +% 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 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 +% 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. IEEE does not increase +% spacing before or after paragraphs so it is set to zero. +% \z@ is the same as zero, but faster. +\partopsep \z@ + +% Controls the spacing between paragraphs in lists. +% IEEE does not increase spacing before or after paragraphs +% so this is also zero. +% With IEEEtran.cls, global changes to +% this value DO affect lists (but not IED lists). +\parsep \z@ + +% Controls the extra spacing between list items. +% IEEE does not put extra spacing between items. +% With IEEEtran.cls, global changes to this value DO affect +% lists (but not IED lists). +\itemsep \z@ + +% \itemindent is the amount to indent the FIRST line of a list +% item. It is auto set to zero within the \list environment. To alter +% it, you have to do so when you call the \list. +% However, IEEE uses this for the theorem environment +% There is an alternative value for this near \leftmargini below +\itemindent -1em + +% \leftmargin, the spacing from the left margin of the main text to +% the left of the main body of a list item is set by \list. +% Hence this statement does nothing for lists. +% But, quote and verse do use it for indention. +\leftmargin 2em + +% we retain this stuff from the older IEEEtran.cls so that \list +% will work the same way as before. However, itemize, enumerate and +% description (IED) could care less about what these are as they +% all are overridden. +\leftmargini 2em +%\itemindent 2em % Alternative values: sometimes used. +%\leftmargini 0em +\leftmarginii 1em +\leftmarginiii 1.5em +\leftmarginiv 1.5em +\leftmarginv 1.0em +\leftmarginvi 1.0em +\labelsep 0.5em +\labelwidth \z@ + + +% The old IEEEtran.cls behavior of \list is retained. +% However, the new V1.3 IED list environments override all the +% @list stuff (\@listX is called within \list for the +% appropriate level just before the user's list_decl is called). +% \topsep is now 2pt as IEEE puts a little extra space around +% lists - used by those non-IED macros that depend on \list. +% Note that \parsep and \itemsep are not redefined as in +% the sizexx.clo \@listX (which article.cls uses) so global changes +% of these values DO affect \list +% +\def\@listi{\leftmargin\leftmargini \topsep 2pt plus 1pt minus 1pt} +\let\@listI\@listi +\def\@listii{\leftmargin\leftmarginii\labelwidth\leftmarginii% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listiii{\leftmargin\leftmarginiii\labelwidth\leftmarginiii% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listiv{\leftmargin\leftmarginiv\labelwidth\leftmarginiv% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listv{\leftmargin\leftmarginv\labelwidth\leftmarginv% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listvi{\leftmargin\leftmarginvi\labelwidth\leftmarginvi% + \advance\labelwidth-\labelsep \topsep 2pt} + + +% IEEE uses 5) not 5. +\def\labelenumi{\theenumi)} \def\theenumi{\arabic{enumi}} + +% IEEE uses a) not (a) +\def\labelenumii{\theenumii)} \def\theenumii{\alph{enumii}} + +% IEEE uses iii) not iii. +\def\labelenumiii{\theenumiii)} \def\theenumiii{\roman{enumiii}} + +% IEEE uses A) not A. +\def\labelenumiv{\theenumiv)} \def\theenumiv{\Alph{enumiv}} + +% exactly the same as in article.cls +\def\p@enumii{\theenumi} +\def\p@enumiii{\theenumi(\theenumii)} +\def\p@enumiv{\p@enumiii\theenumiii} + +% itemized list label styles +\def\labelitemi{$\scriptstyle\bullet$} +\def\labelitemii{\textbf{--}} +\def\labelitemiii{$\ast$} +\def\labelitemiv{$\cdot$} + + + +% **** V1.3 ENHANCEMENTS **** +% Itemize, Enumerate and Description (IED) List Controls +% *************************** +% +% +% IEEE seems to use at least two different values by +% which ITEMIZED list labels are indented to the right +% For The Journal of Lightwave Technology (JLT) and The Journal +% on Selected Areas in Communications (JSAC), they tend to use +% an indention equal to \parindent. For Transactions on Communications +% they tend to indent ITEMIZED lists a little more--- 1.3\parindent. +% We'll provide both values here for you so that you can choose +% which one you like in your document using a command such as: +% setlength{\IEEEilabelindent}{\IEEEilabelindentB} +\newdimen\IEEEilabelindentA +\IEEEilabelindentA \parindent + +\newdimen\IEEEilabelindentB +\IEEEilabelindentB 1.3\parindent +% However, we'll default to using \parindent +% which makes more sense to me +\newdimen\IEEEilabelindent +\IEEEilabelindent \IEEEilabelindentA + + +% This controls the default amount the enumerated list labels +% are indented to the right. +% Normally, this is the same as the paragraph indention +\newdimen\IEEEelabelindent +\IEEEelabelindent \parindent + +% This controls the default amount the description list labels +% are indented to the right. +% Normally, this is the same as the paragraph indention +\newdimen\IEEEdlabelindent +\IEEEdlabelindent \parindent + +% This is the value actually used within the IED lists. +% The IED environments automatically set its value to +% one of the three values above, so global changes do +% not have any effect +\newdimen\IEEElabelindent +\IEEElabelindent \parindent + +% The actual amount labels will be indented is +% \IEEElabelindent multiplied by the factor below +% corresponding to the level of nesting depth +% This provides a means by which the user can +% alter the effective \IEEElabelindent for deeper +% levels +% There may not be such a thing as correct "standard IEEE" +% values. What IEEE actually does may depend on the specific +% circumstances. +% The first list level almost always has full indention. +% The second levels I've seen have only 75% of the normal indentation +% Three level or greater nestings are very rare. I am guessing +% that they don't use any indentation. +\def\IEEElabelindentfactori{1.0} % almost always one +\def\IEEElabelindentfactorii{0.75} % 0.0 or 1.0 may be used in some cases +\def\IEEElabelindentfactoriii{0.0} % 0.75? 0.5? 0.0? +\def\IEEElabelindentfactoriv{0.0} +\def\IEEElabelindentfactorv{0.0} +\def\IEEElabelindentfactorvi{0.0} + +% value actually used within IED lists, it is auto +% set to one of the 6 values above +% global changes here have no effect +\def\IEEElabelindentfactor{1.0} + +% This controls the default spacing between the end of the IED +% list labels and the list text, when normal text is used for +% the labels. +% 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). IEEE usually increases the +% spacing in these cases +\newdimen\IEEEiedmathlabelsep +\IEEEiedmathlabelsep 1.2em + +% This controls the extra vertical separation put above and +% below each IED list. IEEE usually puts a little extra spacing +% around each list. However, this spacing is barely noticeable. +% 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 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. IEEE often uses a tad +% more, so use 0.8\baselineskip. This slightly larger value also helps +% the text to clear the footnote marks. Note that \thanks in IEEEtran +% uses its own value of \footnotesep which is set in \maketitle. +{\footnotesize +\global\footnotesep 0.8\baselineskip} + + +\skip\@mpfootins = \skip\footins +\fboxsep = 3pt +\fboxrule = .4pt +% V1.6 use 1em, then use LaTeX2e's \@makefnmark +% Note that IEEE normally *left* aligns the footnote marks, so we don't need +% box resizing tricks here. +\long\def\@makefntext#1{\parindent 1em\indent\hbox{\@makefnmark}#1}% V1.6 use 1em +% V1.7 compsoc does not use superscipts for footnote marks +\ifCLASSOPTIONcompsoc +\def\@IEEEcompsocmakefnmark{\hbox{\normalfont\@thefnmark.\ }} +\long\def\@makefntext#1{\parindent 1em\indent\hbox{\@IEEEcompsocmakefnmark}#1} +\fi + +% IEEE does not use footnote rules +\def\footnoterule{} + +% V1.7 for compsoc, IEEE uses a footnote rule only for \thanks. We devise a "one-shot" +% system to implement this. +\newif\if@IEEEenableoneshotfootnoterule +\@IEEEenableoneshotfootnoterulefalse +\ifCLASSOPTIONcompsoc +\def\footnoterule{\relax\if@IEEEenableoneshotfootnoterule +\kern-5pt +\hbox to \columnwidth{\hfill\vrule width 0.5\columnwidth height 0.4pt\hfill} +\kern4.6pt +\global\@IEEEenableoneshotfootnoterulefalse +\else +\relax +\fi} +\fi + +% V1.6 do not allow LaTeX to break a footnote across multiple pages +\interfootnotelinepenalty=10000 + +% V1.6 discourage breaks within equations +% Note that amsmath normally sets this to 10000, +% but LaTeX2e normally uses 100. +\interdisplaylinepenalty=2500 + +% default allows section depth up to /paragraph +\setcounter{secnumdepth}{4} + +% technotes do not allow /paragraph +\ifCLASSOPTIONtechnote + \setcounter{secnumdepth}{3} +\fi +% neither do compsoc conferences +\@IEEEcompsocconfonly{\setcounter{secnumdepth}{3}} + + +\newcounter{section} +\newcounter{subsection}[section] +\newcounter{subsubsection}[subsection] +\newcounter{paragraph}[subsubsection] + +% used only by IEEEtran's IEEEeqnarray as other packages may +% have their own, different, implementations +\newcounter{IEEEsubequation}[equation] + +% as shown when called by user from \ref, \label and in table of contents +\def\theequation{\arabic{equation}} % 1 +\def\theIEEEsubequation{\theequation\alph{IEEEsubequation}} % 1a (used only by IEEEtran's IEEEeqnarray) +\ifCLASSOPTIONcompsoc +% compsoc is all arabic +\def\thesection{\arabic{section}} +\def\thesubsection{\thesection.\arabic{subsection}} +\def\thesubsubsection{\thesubsection.\arabic{subsubsection}} +\def\theparagraph{\thesubsubsection.\arabic{paragraph}} +\else +\def\thesection{\Roman{section}} % I +% V1.7, \mbox prevents breaks around - +\def\thesubsection{\mbox{\thesection-\Alph{subsection}}} % I-A +% V1.7 use I-A1 format used by IEEE rather than I-A.1 +\def\thesubsubsection{\thesubsection\arabic{subsubsection}} % I-A1 +\def\theparagraph{\thesubsubsection\alph{paragraph}} % I-A1a +\fi + +% From Heiko Oberdiek. Because of the \mbox in \thesubsection, we need to +% tell hyperref to disable the \mbox command when making PDF bookmarks. +% This done already with hyperref.sty version 6.74o and later, but +% it will not hurt to do it here again for users of older versions. +\@ifundefined{pdfstringdefPreHook}{\let\pdfstringdefPreHook\@empty}{}% +\g@addto@macro\pdfstringdefPreHook{\let\mbox\relax} + + +% Main text forms (how shown in main text headings) +% V1.6, using \thesection in \thesectiondis allows changes +% in the former to automatically appear in the latter +\ifCLASSOPTIONcompsoc + \ifCLASSOPTIONconference% compsoc conference + \def\thesectiondis{\thesection.} + \def\thesubsectiondis{\thesectiondis\arabic{subsection}.} + \def\thesubsubsectiondis{\thesubsectiondis\arabic{subsubsection}.} + \def\theparagraphdis{\thesubsubsectiondis\arabic{paragraph}.} + \else% compsoc not conferencs + \def\thesectiondis{\thesection} + \def\thesubsectiondis{\thesectiondis.\arabic{subsection}} + \def\thesubsubsectiondis{\thesubsectiondis.\arabic{subsubsection}} + \def\theparagraphdis{\thesubsubsectiondis.\arabic{paragraph}} + \fi +\else% not compsoc + \def\thesectiondis{\thesection.} % I. + \def\thesubsectiondis{\Alph{subsection}.} % B. + \def\thesubsubsectiondis{\arabic{subsubsection})} % 3) + \def\theparagraphdis{\alph{paragraph})} % d) +\fi + +% just like LaTeX2e's \@eqnnum +\def\theequationdis{{\normalfont \normalcolor (\theequation)}}% (1) +% IEEEsubequation used only by IEEEtran's IEEEeqnarray +\def\theIEEEsubequationdis{{\normalfont \normalcolor (\theIEEEsubequation)}}% (1a) +% redirect LaTeX2e's equation number display and all that depend on +% it, through IEEEtran's \theequationdis +\def\@eqnnum{\theequationdis} + + + +% V1.7 provide string macros as article.cls does +\def\contentsname{Contents} +\def\listfigurename{List of Figures} +\def\listtablename{List of Tables} +\def\refname{References} +\def\indexname{Index} +\def\figurename{Fig.} +\def\tablename{TABLE} +\@IEEEcompsocconfonly{\def\figurename{Figure}} +\def\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 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]}} +\def\@@IEEEeqnarray[#1]#2{% + % 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]}} +\def\@@IEEEeqnarraybox[#1]{\relax\@ifnextchar[{\@@@IEEEeqnarraybox[#1]}{\@@@IEEEeqnarraybox[#1][b]}} +\def\@@@IEEEeqnarraybox[#1][#2]{\relax\@ifnextchar[{\@@@@IEEEeqnarraybox[#1][#2]}{\@@@@IEEEeqnarraybox[#1][#2][\relax]}} + +% #1 = decl; #2 = t,b,c; #3 = width, #4 = col specs +\def\@@@@IEEEeqnarraybox[#1][#2][#3]#4{\@IEEEeqnarrayISinnerfalse % not yet within the lines of the halign + \@IEEEeqnarraymasterstrutsave% save current master strut values + \@IEEEeqnarraystrutsize{0pt}{0pt}[\relax]% turn off struts by default + \@IEEEeqnarrayusemasterstruttrue% use master strut till user asks otherwise + \IEEEvisiblestrutsfalse% diagnostic mode defaults to off + % no extra space unless the user specifically requests it + \lineskip=0pt\relax% + \lineskiplimit=0pt\relax% + \baselineskip=\normalbaselineskip\relax% + \jot=\IEEEnormaljot\relax% + \mathsurround\z@\relax% no extra spacing around math + % the default end glues are zero for an \IEEEeqnarraybox + \edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPzero}% default start glue + \edef\@IEEEeqnarraycolSEPdefaultend{\@IEEEeqnarraycolSEPzero}% default end glue + \edef\@IEEEeqnarraycolSEPdefaultmid{\@IEEEeqnarraycolSEPzero}% default inter-column glue + \@advanceIEEEeqncolcntfalse% do not advance the col counter for each col the user uses, + % used in \IEEEeqnarraymulticol and in the preamble build + \IEEEeqnarrayboxdecl\relax% allow a way for the user to make global overrides + #1\relax% allow user to override defaults + \let\\\@IEEEeqnarrayboxcr% replace newline with one that allows optional spacing + \@IEEEbuildpreamble{#4}\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 headings, this complex because of all the different +% modes IEEEtran supports +\if@twoside + \ifCLASSOPTIONtechnote + \def\ps@headings{% + \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage} + \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}} + \ifCLASSOPTIONdraftcls + \ifCLASSOPTIONdraftclsnofoot + \def\@oddfoot{}\def\@evenfoot{}% + \else + \def\@oddfoot{\scriptsize\@date\hfil DRAFT} + \def\@evenfoot{\scriptsize DRAFT\hfil\@date} + \fi + \else + \def\@oddfoot{}\def\@evenfoot{} + \fi} + \else % not a technote + \def\ps@headings{% + \ifCLASSOPTIONconference + \def\@oddhead{} + \def\@evenhead{} + \else + \def\@oddhead{\hbox{}\scriptsize\rightmark \hfil \thepage} + \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}} + \fi + \ifCLASSOPTIONdraftcls + \def\@oddhead{\hbox{}\scriptsize\rightmark \hfil \thepage} + \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}} + \ifCLASSOPTIONdraftclsnofoot + \def\@oddfoot{}\def\@evenfoot{}% + \else + \def\@oddfoot{\scriptsize\@date\hfil DRAFT} + \def\@evenfoot{\scriptsize DRAFT\hfil\@date} + \fi + \else + \def\@oddfoot{}\def\@evenfoot{}% + \fi} + \fi +\else % single side +\def\ps@headings{% + \ifCLASSOPTIONconference + \def\@oddhead{} + \def\@evenhead{} + \else + \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage} + \def\@evenhead{} + \fi + \ifCLASSOPTIONdraftcls + \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage} + \def\@evenhead{} + \ifCLASSOPTIONdraftclsnofoot + \def\@oddfoot{} + \else + \def\@oddfoot{\scriptsize \@date \hfil DRAFT} + \fi + \else + \def\@oddfoot{} + \fi + \def\@evenfoot{}} +\fi + + +% title page style +\def\ps@IEEEtitlepagestyle{\def\@oddfoot{}\def\@evenfoot{}% +\ifCLASSOPTIONconference + \def\@oddhead{}% + \def\@evenhead{}% +\else + \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage}% + \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}}% +\fi +\ifCLASSOPTIONdraftcls + \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage}% + \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}}% + \ifCLASSOPTIONdraftclsnofoot\else + \def\@oddfoot{\scriptsize \@date\hfil DRAFT}% + \def\@evenfoot{\scriptsize DRAFT\hfil \@date}% + \fi +\else + % all non-draft mode footers + \if@IEEEusingpubid + % for title pages that are using a pubid + % do not repeat pubid if using peer review option + \ifCLASSOPTIONpeerreview + \else + \ifCLASSOPTIONcompsoc + \def\@oddfoot{\hss\normalfont\scriptsize\raisebox{0ex}[0ex][0ex]{\@IEEEpubid}\hss}% + \def\@evenfoot{\hss\normalfont\scriptsize\raisebox{0ex}[0ex][0ex]{\@IEEEpubid}\hss}% + \else + \footskip 0pt% + \def\@oddfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@IEEEpubid}\hss}% + \def\@evenfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@IEEEpubid}\hss}% + \fi + \fi + \fi +\fi} + + +% peer review cover page style +\def\ps@IEEEpeerreviewcoverpagestyle{% +\def\@oddhead{}\def\@evenhead{}% +\def\@oddfoot{}\def\@evenfoot{}% +\ifCLASSOPTIONdraftcls + \ifCLASSOPTIONdraftclsnofoot\else + \def\@oddfoot{\scriptsize \@date\hfil DRAFT}% + \def\@evenfoot{\scriptsize DRAFT\hfil \@date}% + \fi +\else + % non-draft mode footers + \if@IEEEusingpubid + \ifCLASSOPTIONcompsoc + \def\@oddfoot{\hss\normalfont\scriptsize\raisebox{0ex}[0ex][0ex]{\@IEEEpubid}\hss}% + \def\@evenfoot{\hss\normalfont\scriptsize\raisebox{0ex}[0ex][0ex]{\@IEEEpubid}\hss}% + \else + \footskip 0pt% + \def\@oddfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@IEEEpubid}\hss}% + \def\@evenfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@IEEEpubid}\hss}% + \fi + \fi +\fi} + + +% start with empty headings +\def\rightmark{}\def\leftmark{} + + +%% Defines the command for putting the header. \footernote{TEXT} is the same +%% as \markboth{TEXT}{TEXT}. +%% Note that all the text is forced into uppercase, if you have some text +%% that needs to be in lower case, for instance et. al., then either manually +%% set \leftmark and \rightmark or use \MakeLowercase{et. al.} within the +%% arguments to \markboth. +%% V1.7b add \protect to work with Babel +\def\markboth#1#2{\def\leftmark{\@IEEEcompsoconly{\sffamily}\MakeUppercase{\protect#1}}% +\def\rightmark{\@IEEEcompsoconly{\sffamily}\MakeUppercase{\protect#2}}} +\def\footernote#1{\markboth{#1}{#1}} + +\def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} + + + + +%% CITATION AND BIBLIOGRAPHY COMMANDS +%% +%% V1.6 no longer supports the older, nonstandard \shortcite and \citename setup stuff +% +% +% Modify Latex2e \@citex to separate citations with "], [" +\def\@citex[#1]#2{% + \let\@citea\@empty + \@cite{\@for\@citeb:=#2\do + {\@citea\def\@citea{], [}% + \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% + \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi + \@ifundefined{b@\@citeb}{\mbox{\reset@font\bfseries ?}% + \G@refundefinedtrue + \@latex@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + {\hbox{\csname b@\@citeb\endcsname}}}}{#1}} + +% V1.6 we create hooks for the optional use of Donald Arseneau's +% cite.sty package. cite.sty is "smart" and will notice that the +% following format controls are already defined and will not +% redefine them. The result will be the proper sorting of the +% citation numbers and auto detection of 3 or more entry "ranges" - +% all in IEEE style: [1], [2], [5]--[7], [12] +% This also allows for an optional note, i.e., \cite[mynote]{..}. +% If the \cite with note has more than one reference, the note will +% be applied to the last of the listed references. It is generally +% desired that if a note is given, only one reference is listed in +% that \cite. +% Thanks to Mr. Arseneau for providing the required format arguments +% to produce the IEEE style. +\def\citepunct{], [} +\def\citedash{]--[} + +% V1.7 default to using same font for urls made by url.sty +\AtBeginDocument{\csname url@samestyle\endcsname} + +% V1.6 class files should always provide these +\def\newblock{\hskip .11em\@plus.33em\@minus.07em} +\let\@openbib@code\@empty + + +% Provide support for the control entries of IEEEtran.bst V1.00 and later. +% V1.7 optional argument allows for a different aux file to be specified in +% order to handle multiple bibliographies. For example, with multibib.sty: +% \newcites{sec}{Secondary Literature} +% \bstctlcite[@auxoutsec]{BSTcontrolhak} +\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}} +\def\@bstctlcite[#1]#2{\@bsphack + \@for\@citeb:=#2\do{% + \edef\@citeb{\expandafter\@firstofone\@citeb}% + \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}% + \@esphack} + +% V1.6 provide a way for a user to execute a command just before +% a given reference number - used to insert a \newpage to balance +% the columns on the last page +\edef\@IEEEtriggerrefnum{0} % the default of zero means that + % the command is not executed +\def\@IEEEtriggercmd{\newpage} + +% allow the user to alter the triggered command +\long\def\IEEEtriggercmd#1{\long\def\@IEEEtriggercmd{#1}} + +% allow user a way to specify the reference number just before the +% command is executed +\def\IEEEtriggeratref#1{\@IEEEtrantmpcountA=#1% +\edef\@IEEEtriggerrefnum{\the\@IEEEtrantmpcountA}}% + +% trigger command at the given reference +\def\@IEEEbibitemprefix{\@IEEEtrantmpcountA=\@IEEEtriggerrefnum\relax% +\advance\@IEEEtrantmpcountA by -1\relax% +\ifnum\c@enumiv=\@IEEEtrantmpcountA\relax\@IEEEtriggercmd\relax\fi} + + +\def\@biblabel#1{[#1]} + +% compsoc journals 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. +% IEEE almost never breaks a reference (but they do it more often with +% technotes). You may get an underfull vbox warning around the bibliography, +% but the final result will be much more like what IEEE will publish. +% MDS 11/2000 +\ifCLASSOPTIONtechnote\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty100% +\else\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty500\fi% + \sfcode`\.=1000\relax} +\let\endthebibliography=\endlist + + + + +% TITLE PAGE COMMANDS +% +% +% \IEEEmembership is used to produce the sublargesize italic font used to indicate author +% IEEE membership. compsoc uses a large size sans slant font +\def\IEEEmembership#1{{\@IEEEnotcompsoconly{\sublargesize}\normalfont\@IEEEcompsoconly{\sffamily}\textit{#1}}} + + +% \IEEEauthorrefmark{} produces a footnote type symbol to indicate author affiliation. +% When given an argument of 1 to 9, \IEEEauthorrefmark{} follows the standard LaTeX footnote +% symbol sequence convention. However, for arguments 10 and above, \IEEEauthorrefmark{} +% reverts to using lower case roman numerals, so it cannot overflow. Do note that you +% cannot use \footnotemark[] in place of \IEEEauthorrefmark{} within \author as the footnote +% symbols will have been turned off to prevent \thanks from creating footnote marks. +% \IEEEauthorrefmark{} produces a symbol that appears to LaTeX as having zero vertical +% height - this allows for a more compact line packing, but the user must ensure that +% the interline spacing is large enough to prevent \IEEEauthorrefmark{} from colliding +% with the text above. +% V1.7 make this a robust command +% 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. +% 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} + + + + +% 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\addvspace{0.5\baselineskip}\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 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 + % IEEE does not block indent the section title text, it flows like normal + {\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\@@par}}% + \endgroup + \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\relax\else + \protect\numberline{\csname the#1\endcsname}\fi#7}% + \else % printout low level headings + % svsechd seems to swallow the trailing space, protect it with \mbox{} + % got rid of sectionmark stuff + \def\@svsechd{#6{\hskip #3\relax\@svsec #8\@IEEEsectpunct\mbox{}}% + \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\relax\else + \protect\numberline{\csname the#1\endcsname}\fi#7}}% + \fi%skip down + \@xsect{#5}} + + +% section* handler +%v1.7 put {} after #4 to allow for some types of user font control +%and use \@@par rather than \par +\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + %\begingroup #4\@hangfrom{\hskip #1}{\interlinepenalty \@M #5\par}\endgroup + % IEEE does not block indent the section title text, it flows like normal + \begingroup \noindent #4{\relax{\hskip #1}{\interlinepenalty \@M #5\@@par}}\endgroup + % svsechd swallows the trailing space, protect it with \mbox{} + \else \def\@svsechd{#4{\hskip #1\relax #5\@IEEEsectpunct\mbox{}}}\fi + \@xsect{#3}} + + +%% SECTION heading spacing and font +%% +% arguments are: #1 - sectiontype name +% (for \@sect) #2 - section level +% #3 - section heading indent +% #4 - top separation (absolute value used, neg indicates not to indent main text) +% If negative, make stretch parts negative too! +% #5 - (absolute value used) positive: bottom separation after heading, +% negative: amount to indent main text after heading +% Both #4 and #5 negative means to indent main text and use negative top separation +% #6 - font control +% You've got to have \normalfont\normalsize in the font specs below to prevent +% trouble when you do something like: +% \section{Note}{\ttfamily TT-TEXT} is known to ... +% IEEE sometimes REALLY stretches the area before a section +% heading by up to about 0.5in. However, it may not be a good +% idea to let LaTeX have quite this much rubber. +\ifCLASSOPTIONconference% +% IEEE wants section heading spacing to decrease for conference mode +\def\section{\@startsection{section}{1}{\z@}{1.5ex plus 1.5ex minus 0.5ex}% +{0.7ex plus 1ex minus 0ex}{\normalfont\normalsize\centering\scshape}}% +\def\subsection{\@startsection{subsection}{2}{\z@}{1.5ex plus 1.5ex minus 0.5ex}% +{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}% +\else % for journals +\def\section{\@startsection{section}{1}{\z@}{3.0ex plus 1.5ex minus 1.5ex}% V1.6 3.0ex from 3.5ex +{0.7ex plus 1ex minus 0ex}{\normalfont\normalsize\centering\scshape}}% +\def\subsection{\@startsection{subsection}{2}{\z@}{3.5ex plus 1.5ex minus 1.5ex}% +{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}% +\fi + +% for both journals and conferences +% decided to put in a little rubber above the section, might help somebody +\def\subsubsection{\@startsection{subsubsection}{3}{\parindent}{0ex plus 0.1ex minus 0.1ex}% +{0ex}{\normalfont\normalsize\itshape}}% +\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{0ex plus 0.1ex minus 0.1ex}% +{0ex}{\normalfont\normalsize\itshape}}% + + +% compsoc +\ifCLASSOPTIONcompsoc +\ifCLASSOPTIONconference +% compsoc conference +\def\section{\@startsection{section}{1}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}% +{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}{\normalfont\large\bfseries}}% +\def\subsection{\@startsection{subsection}{2}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}% +{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}{\normalfont\sublargesize\bfseries}}% +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}% +{0ex}{\normalfont\normalsize\bfseries}}% +\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{0ex plus 0.1ex minus 0.1ex}% +{0ex}{\normalfont\normalsize}}% +\else% compsoc journals +% use negative top separation as compsoc journals do not indent paragraphs after section titles +\def\section{\@startsection{section}{1}{\z@}{-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 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 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 +\ps@headings +\pagenumbering{arabic} + +% normally the page counter starts at 1 +\setcounter{page}{1} +% however, for peerreview the cover sheet is page 0 or page -1 +% (for duplex printing) +\ifCLASSOPTIONpeerreview + \if@twoside + \setcounter{page}{-1} + \else + \setcounter{page}{0} + \fi +\fi + +% standard book class behavior - let bottom line float up and down as +% needed when single sided +\ifCLASSOPTIONtwoside\else\raggedbottom\fi +% if two column - turn on twocolumn, allow word spacings to stretch more and +% enforce a rigid position for the last lines +\ifCLASSOPTIONtwocolumn +% the peer review option delays invoking twocolumn + \ifCLASSOPTIONpeerreview\else + \twocolumn + \fi +\sloppy +\flushbottom +\fi + + + + +% \APPENDIX and \APPENDICES definitions + +% This is the \@ifmtarg command from the LaTeX ifmtarg package +% by Peter Wilson (CUA) and Donald Arseneau +% \@ifmtarg is used to determine if an argument to a command +% is present or not. +% For instance: +% \@ifmtarg{#1}{\typeout{empty}}{\typeout{has something}} +% \@ifmtarg is used with our redefined \section command if +% \appendices is invoked. +% The command \section will behave slightly differently depending +% on whether the user specifies a title: +% \section{My appendix title} +% or not: +% \section{} +% This way, we can eliminate the blank lines where the title +% would be, and the unneeded : after Appendix in the table of +% contents +\begingroup +\catcode`\Q=3 +\long\gdef\@ifmtarg#1{\@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil} +\long\gdef\@xifmtarg#1#2Q#3#4#5\@nil{#4} +\endgroup +% end of \@ifmtarg defs + + +% V1.7 +% command that allows the one time saving of the original definition +% of section to \@IEEEappendixsavesection for \appendix or \appendices +% we don't save \section here as it may be redefined later by other +% packages (hyperref.sty, etc.) +\def\@IEEEsaveoriginalsectiononce{\let\@IEEEappendixsavesection\section +\let\@IEEEsaveoriginalsectiononce\relax} + +% neat trick to grab and process the argument from \section{argument} +% we process differently if the user invoked \section{} with no +% argument (title) +% note we reroute the call to the old \section* +\def\@IEEEprocessthesectionargument#1{% +\@ifmtarg{#1}{% +\@IEEEappendixsavesection*{\appendixname\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 +} + + + +% \IEEEPARstart +% Definition for the big two line drop cap letter at the beginning of the +% first paragraph of journal papers. The first argument is the first letter +% of the first word, the second argument is the remaining letters of the +% first word which will be rendered in upper case. +% In V1.6 this has been completely rewritten to: +% +% 1. no longer have problems when the user begins an environment +% within the paragraph that uses \IEEEPARstart. +% 2. auto-detect and use the current font family +% 3. revise handling of the space at the end of the first word so that +% interword glue will now work as normal. +% 4. produce correctly aligned edges for the (two) indented lines. +% +% We generalize things via control macros - playing with these is fun too. +% +% V1.7 added more control macros to make it easy for IEEEtrantools.sty users +% to change the font style. +% +% the number of lines that are indented to clear it +% may need to increase if using decenders +\def\@IEEEPARstartDROPLINES{2} +% minimum number of lines left on a page to allow a \@IEEEPARstart +% Does not take into consideration rubber shrink, so it tends to +% be overly cautious +\def\@IEEEPARstartMINPAGELINES{2} +% V1.7 the height of the drop cap is adjusted to match the height of this text +% in the current font (when \IEEEPARstart is called). +\def\@IEEEPARstartHEIGHTTEXT{T} +% the depth the letter is lowered below the baseline +% the height (and size) of the letter is determined by the sum +% of this value and the height of the \@IEEEPARstartHEIGHTTEXT in the current +% font. It is a good idea to set this value in terms of the baselineskip +% so that it can respond to changes therein. +\def\@IEEEPARstartDROPDEPTH{1.1\baselineskip} +% V1.7 the font the drop cap will be rendered in, +% can take zero or one argument. +\def\@IEEEPARstartFONTSTYLE{\bfseries} +% V1.7 any additional, non-font related commands needed to modify +% the drop cap letter, can take zero or one argument. +\def\@IEEEPARstartCAPSTYLE{\MakeUppercase} +% V1.7 the font that will be used to render the rest of the word, +% can take zero or one argument. +\def\@IEEEPARstartWORDFONTSTYLE{\relax} +% V1.7 any additional, non-font related commands needed to modify +% the rest of the word, can take zero or one argument. +\def\@IEEEPARstartWORDCAPSTYLE{\MakeUppercase} +% This is the horizontal separation distance from the drop letter to the main text. +% Lengths that depend on the font (e.g., ex, em, etc.) will be referenced +% to the font that is active when \IEEEPARstart is called. +\def\@IEEEPARstartSEP{0.15em} +% V1.7 horizontal offset applied to the left of the drop cap. +\def\@IEEEPARstartHOFFSET{0em} +% V1.7 Italic correction command applied at the end of the drop cap. +\def\@IEEEPARstartITLCORRECT{\/} + +% V1.7 compoc uses nonbold drop cap and small caps word style +\ifCLASSOPTIONcompsoc +\def\@IEEEPARstartFONTSTYLE{\mdseries} +\def\@IEEEPARstartWORDFONTSTYLE{\scshape} +\def\@IEEEPARstartWORDCAPSTYLE{\relax} +\fi + +% definition of \IEEEPARstart +% THIS IS A CONTROLLED SPACING AREA, DO NOT ALLOW SPACES WITHIN THESE LINES +% +% The token \@IEEEPARstartfont will be globally defined after the first use +% of \IEEEPARstart and will be a font command which creates the big letter +% The first argument is the first letter of the first word and the second +% argument is the rest of the first word(s). +\def\IEEEPARstart#1#2{\par{% +% if this page does not have enough space, break it and lets start +% on a new one +\@IEEEtranneedspace{\@IEEEPARstartMINPAGELINES\baselineskip}{\relax}% +% V1.7 move this up here in case user uses \textbf for \@IEEEPARstartFONTSTYLE +% which uses command \leavevmode which causes an unwanted \indent to be issued +\noindent +% calculate the desired height of the big letter +% it extends from the top of \@IEEEPARstartHEIGHTTEXT in the current font +% down to \@IEEEPARstartDROPDEPTH below the current baseline +\settoheight{\@IEEEtrantmpdimenA}{\@IEEEPARstartHEIGHTTEXT}% +\addtolength{\@IEEEtrantmpdimenA}{\@IEEEPARstartDROPDEPTH}% +% extract the name of the current font in bold +% and place it in \@IEEEPARstartFONTNAME +\def\@IEEEPARstartGETFIRSTWORD##1 ##2\relax{##1}% +{\@IEEEPARstartFONTSTYLE{\selectfont\edef\@IEEEPARstartFONTNAMESPACE{\fontname\font\space}% +\xdef\@IEEEPARstartFONTNAME{\expandafter\@IEEEPARstartGETFIRSTWORD\@IEEEPARstartFONTNAMESPACE\relax}}}% +% define a font based on this name with a point size equal to the desired +% height of the drop letter +\font\@IEEEPARstartsubfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenA\relax% +% save this value as a counter (integer) value (sp points) +\@IEEEtrantmpcountA=\@IEEEtrantmpdimenA% +% now get the height of the actual letter produced by this font size +\settoheight{\@IEEEtrantmpdimenB}{\@IEEEPARstartsubfont\@IEEEPARstartCAPSTYLE{#1}}% +% If something bogus happens like the first argument is empty or the +% current font is strange, do not allow a zero height. +\ifdim\@IEEEtrantmpdimenB=0pt\relax% +\typeout{** WARNING: IEEEPARstart drop letter has zero height! (line \the\inputlineno)}% +\typeout{ Forcing the drop letter font size to 10pt.}% +\@IEEEtrantmpdimenB=10pt% +\fi% +% and store it as a counter +\@IEEEtrantmpcountB=\@IEEEtrantmpdimenB% +% Since a font size doesn't exactly correspond to the height of the capital +% letters in that font, the actual height of the letter, \@IEEEtrantmpcountB, +% will be less than that desired, \@IEEEtrantmpcountA +% we need to raise the font size, \@IEEEtrantmpdimenA +% by \@IEEEtrantmpcountA / \@IEEEtrantmpcountB +% But, TeX doesn't have floating point division, so we have to use integer +% division. Hence the use of the counters. +% We need to reduce the denominator so that the loss of the remainder will +% have minimal affect on the accuracy of the result +\divide\@IEEEtrantmpcountB by 200% +\divide\@IEEEtrantmpcountA by \@IEEEtrantmpcountB% +% Then reequalize things when we use TeX's ability to multiply by +% floating point values +\@IEEEtrantmpdimenB=0.005\@IEEEtrantmpdimenA% +\multiply\@IEEEtrantmpdimenB by \@IEEEtrantmpcountA% +% \@IEEEPARstartfont is globaly set to the calculated font of the big letter +% We need to carry this out of the local calculation area to to create the +% big letter. +\global\font\@IEEEPARstartfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenB% +% Now set \@IEEEtrantmpdimenA to the width of the big letter +% We need to carry this out of the local calculation area to set the +% hanging indent +\settowidth{\global\@IEEEtrantmpdimenA}{\@IEEEPARstartfont +\@IEEEPARstartCAPSTYLE{#1\@IEEEPARstartITLCORRECT}}}% +% end of the isolated calculation environment +% add in the extra clearance we want +\advance\@IEEEtrantmpdimenA by \@IEEEPARstartSEP\relax% +% add in the optional offset +\advance\@IEEEtrantmpdimenA by \@IEEEPARstartHOFFSET\relax% +% V1.7 don't allow negative offsets to produce negative hanging indents +\@IEEEtrantmpdimenB\@IEEEtrantmpdimenA +\ifnum\@IEEEtrantmpdimenB < 0 \@IEEEtrantmpdimenB 0pt\fi +% \@IEEEtrantmpdimenA has the width of the big letter plus the +% separation space and \@IEEEPARstartfont is the font we need to use +% Now, we make the letter and issue the hanging indent command +% The letter is placed in a box of zero width and height so that other +% text won't be displaced by it. +\hangindent\@IEEEtrantmpdimenB\hangafter=-\@IEEEPARstartDROPLINES% +\makebox[0pt][l]{\hspace{-\@IEEEtrantmpdimenA}% +\raisebox{-\@IEEEPARstartDROPDEPTH}[0pt][0pt]{\hspace{\@IEEEPARstartHOFFSET}% +\@IEEEPARstartfont\@IEEEPARstartCAPSTYLE{#1\@IEEEPARstartITLCORRECT}% +\hspace{\@IEEEPARstartSEP}}}% +{\@IEEEPARstartWORDFONTSTYLE{\@IEEEPARstartWORDCAPSTYLE{\selectfont#2}}}} + + + + + + +% determines if the space remaining on a given page is equal to or greater +% than the specified space of argument one +% if not, execute argument two (only if the remaining space is greater than zero) +% and issue a \newpage +% +% example: \@IEEEtranneedspace{2in}{\vfill} +% +% Does not take into consideration rubber shrinkage, so it tends to +% be overly cautious +% Based on an example posted by Donald Arseneau +% Note this macro uses \@IEEEtrantmpdimenB internally for calculations, +% so DO NOT PASS \@IEEEtrantmpdimenB to this routine +% if you need a dimen register, import with \@IEEEtrantmpdimenA instead +\def\@IEEEtranneedspace#1#2{\penalty-100\begingroup%shield temp variable +\@IEEEtrantmpdimenB\pagegoal\advance\@IEEEtrantmpdimenB-\pagetotal% space left +\ifdim #1>\@IEEEtrantmpdimenB\relax% not enough space left +\ifdim\@IEEEtrantmpdimenB>\z@\relax #2\fi% +\newpage% +\fi\endgroup} + + + +% IEEEbiography ENVIRONMENT +% Allows user to enter biography leaving place for picture (adapts to font size) +% As of V1.5, a new optional argument allows you to have a real graphic! +% V1.5 and later also fixes the "colliding biographies" which could happen when a +% biography's text was shorter than the space for the photo. +% MDS 7/2001 +% V1.6 prevent multiple biographies from making multiple TOC entries +\newif\if@IEEEbiographyTOCentrynotmade +\global\@IEEEbiographyTOCentrynotmadetrue + +% biography counter so hyperref can jump directly to the biographies +% and not just the previous section +\newcounter{IEEEbiography} +\setcounter{IEEEbiography}{0} + +% photo area size +\def\@IEEEBIOphotowidth{1.0in} % width of the biography photo area +\def\@IEEEBIOphotodepth{1.25in} % depth (height) of the biography photo area +% area cleared for photo +\def\@IEEEBIOhangwidth{1.14in} % width cleared for the biography photo area +\def\@IEEEBIOhangdepth{1.25in} % depth cleared for the biography photo area + % actual depth will be a multiple of + % \baselineskip, rounded up +\def\@IEEEBIOskipN{4\baselineskip}% nominal value of the vskip above the biography + +\newenvironment{IEEEbiography}[2][]{\normalfont\@IEEEcompsoconly{\sffamily}\footnotesize% +\unitlength 1in\parskip=0pt\par\parindent 1em\interlinepenalty500% +% we need enough space to support the hanging indent +% the nominal value of the spacer +% and one extra line for good measure +\@IEEEtrantmpdimenA=\@IEEEBIOhangdepth% +\advance\@IEEEtrantmpdimenA by \@IEEEBIOskipN% +\advance\@IEEEtrantmpdimenA by 1\baselineskip% +% if this page does not have enough space, break it and lets start +% with a new one +\@IEEEtranneedspace{\@IEEEtrantmpdimenA}{\relax}% +% nominal spacer can strech, not shrink use 1fil so user can out stretch with \vfill +\vskip \@IEEEBIOskipN plus 1fil minus 0\baselineskip% +% the default box for where the photo goes +\def\@IEEEtempbiographybox{{\setlength{\fboxsep}{0pt}\framebox{% +\begin{minipage}[b][\@IEEEBIOphotodepth][c]{\@IEEEBIOphotowidth}\centering PLACE\\ PHOTO\\ HERE \end{minipage}}}}% +% +% detect if the optional argument was supplied, this requires the +% \@ifmtarg command as defined in the appendix section above +% and if so, override the default box with what they want +\@ifmtarg{#1}{\relax}{\def\@IEEEtempbiographybox{\mbox{\begin{minipage}[b][\@IEEEBIOphotodepth][c]{\@IEEEBIOphotowidth}% +\centering% +#1% +\end{minipage}}}}% end if optional argument supplied +% Make an entry into the table of contents only if we have not done so before +\if@IEEEbiographyTOCentrynotmade% +% link labels to the biography counter so hyperref will jump +% to the biography, not the previous section +\setcounter{IEEEbiography}{-1}% +\refstepcounter{IEEEbiography}% +\addcontentsline{toc}{section}{Biographies}% +\global\@IEEEbiographyTOCentrynotmadefalse% +\fi% +% one more biography +\refstepcounter{IEEEbiography}% +% Make an entry for this name into the table of contents +\addcontentsline{toc}{subsection}{#2}% +% V1.6 properly handle if a new paragraph should occur while the +% hanging indent is still active. Do this by redefining \par so +% that it will not start a new paragraph. (But it will appear to the +% user as if it did.) Also, strip any leading pars, newlines, or spaces. +\let\@IEEEBIOORGparCMD=\par% save the original \par command +\edef\par{\hfil\break\indent}% the new \par will not be a "real" \par +\settoheight{\@IEEEtrantmpdimenA}{\@IEEEtempbiographybox}% get height of biography box +\@IEEEtrantmpdimenB=\@IEEEBIOhangdepth% +\@IEEEtrantmpcountA=\@IEEEtrantmpdimenB% countA has the hang depth +\divide\@IEEEtrantmpcountA by \baselineskip% calculates lines needed to produce the hang depth +\advance\@IEEEtrantmpcountA by 1% ensure we overestimate +% set the hanging indent +\hangindent\@IEEEBIOhangwidth% +\hangafter-\@IEEEtrantmpcountA% +% reference the top of the photo area to the top of a capital T +\settoheight{\@IEEEtrantmpdimenB}{\mbox{T}}% +% set the photo box, give it zero width and height so as not to disturb anything +\noindent\makebox[0pt][l]{\hspace{-\@IEEEBIOhangwidth}\raisebox{\@IEEEtrantmpdimenB}[0pt][0pt]{% +\raisebox{-\@IEEEBIOphotodepth}[0pt][0pt]{\@IEEEtempbiographybox}}}% +% now place the author name and begin the bio text +\noindent\textbf{#2\ }\@IEEEgobbleleadPARNLSP}{\relax\let\par=\@IEEEBIOORGparCMD\par% +% 7/2001 V1.5 detect when the biography text is shorter than the photo area +% and pad the unused area - preventing a collision from the next biography entry +% MDS +\ifnum \prevgraf <\@IEEEtrantmpcountA\relax% detect when the biography text is shorter than the photo + \advance\@IEEEtrantmpcountA by -\prevgraf% calculate how many lines we need to pad + \advance\@IEEEtrantmpcountA by -1\relax% we compensate for the fact that we indented an extra line + \@IEEEtrantmpdimenA=\baselineskip% calculate the length of the padding + \multiply\@IEEEtrantmpdimenA by \@IEEEtrantmpcountA% + \noindent\rule{0pt}{\@IEEEtrantmpdimenA}% insert an invisible support strut +\fi% +\par\normalfont} + + + +% V1.6 +% added biography without a photo environment +\newenvironment{IEEEbiographynophoto}[1]{% +% Make an entry into the table of contents only if we have not done so before +\if@IEEEbiographyTOCentrynotmade% +% link labels to the biography counter so hyperref will jump +% to the biography, not the previous section +\setcounter{IEEEbiography}{-1}% +\refstepcounter{IEEEbiography}% +\addcontentsline{toc}{section}{Biographies}% +\global\@IEEEbiographyTOCentrynotmadefalse% +\fi% +% one more biography +\refstepcounter{IEEEbiography}% +% Make an entry for this name into the table of contents +\addcontentsline{toc}{subsection}{#1}% +\normalfont\@IEEEcompsoconly{\sffamily}\footnotesize\interlinepenalty500% +\vskip 4\baselineskip plus 1fil minus 0\baselineskip% +\parskip=0pt\par% +\noindent\textbf{#1\ }\@IEEEgobbleleadPARNLSP}{\relax\par\normalfont} + + +% provide the user with some old font commands +% got this from article.cls +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} + + +% SPECIAL PAPER NOTICE COMMANDS +% +% holds the special notice text +\def\@IEEEspecialpapernotice{\relax} + +% for special papers, like invited papers, the user can do: +% \IEEEspecialpapernotice{(Invited Paper)} before \maketitle +\def\IEEEspecialpapernotice#1{\ifCLASSOPTIONconference% +\def\@IEEEspecialpapernotice{{\sublargesize\textit{#1}\vspace*{1em}}}% +\else% +\def\@IEEEspecialpapernotice{{\\*[1.5ex]\sublargesize\textit{#1}}\vspace*{-2ex}}% +\fi} + + + + +% PUBLISHER ID COMMANDS +% to insert a publisher's ID footer +% V1.6 \IEEEpubid has been changed so that the change in page size and style +% occurs in \maketitle. \IEEEpubid must now be issued prior to \maketitle +% use \IEEEpubidadjcol as before - in the second column of the title page +% These changes allow \maketitle to take the reduced page height into +% consideration when dynamically setting the space between the author +% names and the maintext. +% +% the amount the main text is pulled up to make room for the +% publisher's ID footer +% IEEE uses about 1.3\baselineskip for journals, +% dynamic title spacing will clean up the fraction +\def\@IEEEpubidpullup{1.3\baselineskip} +\ifCLASSOPTIONtechnote +% for technotes it must be an integer of baselineskip as there can be no +% dynamic title spacing for two column mode technotes (the title is in the +% in first column) and we should maintain an integer number of lines in the +% second column +% There are some examples (such as older issues of "Transactions on +% Information Theory") in which IEEE really pulls the text off the ID for +% technotes - about 0.55in (or 4\baselineskip). We'll use 2\baselineskip +% and call it even. +\def\@IEEEpubidpullup{2\baselineskip} +\fi + +% V1.7 compsoc does not use a pullup +\ifCLASSOPTIONcompsoc +\def\@IEEEpubidpullup{0pt} +\fi + +% holds the ID text +\def\@IEEEpubid{\relax} + +% flag so \maketitle can tell if \IEEEpubid was called +\newif\if@IEEEusingpubid +\global\@IEEEusingpubidfalse +% issue this command in the page to have the ID at the bottom +% V1.6 use before \maketitle +\def\IEEEpubid#1{\def\@IEEEpubid{#1}\global\@IEEEusingpubidtrue} + + +% command which will pull up (shorten) the column it is executed in +% to make room for the publisher ID. Place in the second column of +% the title page when using \IEEEpubid +% Is smart enough not to do anything when in single column text or +% if the user hasn't called \IEEEpubid +% currently needed in for the second column of a page with the +% publisher ID. If not needed in future releases, please provide this +% command and define it as \relax for backward compatibility +% v1.6b do not allow command to operate if the peer review option has been +% selected because \IEEEpubidadjcol will not be on the cover page. +% V1.7 do nothing if compsoc +\def\IEEEpubidadjcol{\ifCLASSOPTIONcompsoc\else\ifCLASSOPTIONpeerreview\else +\if@twocolumn\if@IEEEusingpubid\enlargethispage{-\@IEEEpubidpullup}\fi\fi\fi\fi} + +% Special thanks to Peter Wilson, Daniel Luecking, and the other +% gurus at comp.text.tex, for helping me to understand how best to +% implement the IEEEpubid command in LaTeX. + + + +%% Lockout some commands under various conditions + +% general purpose bit bucket +\newsavebox{\@IEEEtranrubishbin} + +% flags to prevent multiple warning messages +\newif\if@IEEEWARNthanks +\newif\if@IEEEWARNIEEEPARstart +\newif\if@IEEEWARNIEEEbiography +\newif\if@IEEEWARNIEEEbiographynophoto +\newif\if@IEEEWARNIEEEpubid +\newif\if@IEEEWARNIEEEpubidadjcol +\newif\if@IEEEWARNIEEEmembership +\newif\if@IEEEWARNIEEEaftertitletext +\@IEEEWARNthankstrue +\@IEEEWARNIEEEPARstarttrue +\@IEEEWARNIEEEbiographytrue +\@IEEEWARNIEEEbiographynophototrue +\@IEEEWARNIEEEpubidtrue +\@IEEEWARNIEEEpubidadjcoltrue +\@IEEEWARNIEEEmembershiptrue +\@IEEEWARNIEEEaftertitletexttrue + + +%% Lockout some commands when in various modes, but allow them to be restored if needed +%% +% save commands which might be locked out +% so that the user can later restore them if needed +\let\@IEEESAVECMDthanks\thanks +\let\@IEEESAVECMDIEEEPARstart\IEEEPARstart +\let\@IEEESAVECMDIEEEbiography\IEEEbiography +\let\@IEEESAVECMDendIEEEbiography\endIEEEbiography +\let\@IEEESAVECMDIEEEbiographynophoto\IEEEbiographynophoto +\let\@IEEESAVECMDendIEEEbiographynophoto\endIEEEbiographynophoto +\let\@IEEESAVECMDIEEEpubid\IEEEpubid +\let\@IEEESAVECMDIEEEpubidadjcol\IEEEpubidadjcol +\let\@IEEESAVECMDIEEEmembership\IEEEmembership +\let\@IEEESAVECMDIEEEaftertitletext\IEEEaftertitletext + + +% disable \IEEEPARstart when in draft mode +% This may have originally been done because the pre-V1.6 drop letter +% algorithm had problems with a non-unity baselinestretch +% At any rate, it seems too formal to have a drop letter in a draft +% paper. +\ifCLASSOPTIONdraftcls +\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** ATTENTION: \noexpand\IEEEPARstart + is disabled in draft mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse} +\fi +% and for technotes +\ifCLASSOPTIONtechnote +\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** WARNING: \noexpand\IEEEPARstart + is locked out for technotes (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse} +\fi + + +% lockout unneeded commands when in conference mode +\ifCLASSOPTIONconference +% when locked out, \thanks, \IEEEbiography, \IEEEbiographynophoto, \IEEEpubid, +% \IEEEmembership and \IEEEaftertitletext will all swallow their given text. +% \IEEEPARstart will output a normal character instead +% warn the user about these commands only once to prevent the console screen +% from filling up with redundant messages +\def\thanks#1{\if@IEEEWARNthanks\typeout{** WARNING: \noexpand\thanks + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNthanksfalse} +\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** WARNING: \noexpand\IEEEPARstart + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse} + + +% LaTeX treats environments and commands with optional arguments differently. +% the actual ("internal") command is stored as \\commandname +% (accessed via \csname\string\commandname\endcsname ) +% the "external" command \commandname is a macro with code to determine +% whether or not the optional argument is presented and to provide the +% default if it is absent. So, in order to save and restore such a command +% we would have to save and restore \\commandname as well. But, if LaTeX +% ever changes the way it names the internal names, the trick would break. +% Instead let us just define a new environment so that the internal +% name can be left undisturbed. +\newenvironment{@IEEEbogusbiography}[2][]{\if@IEEEWARNIEEEbiography\typeout{** WARNING: \noexpand\IEEEbiography + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEbiographyfalse% +\setbox\@IEEEtranrubishbin\vbox\bgroup}{\egroup\relax} +% and make biography point to our bogus biography +\let\IEEEbiography=\@IEEEbogusbiography +\let\endIEEEbiography=\end@IEEEbogusbiography + +\renewenvironment{IEEEbiographynophoto}[1]{\if@IEEEWARNIEEEbiographynophoto\typeout{** WARNING: \noexpand\IEEEbiographynophoto + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEbiographynophotofalse% +\setbox\@IEEEtranrubishbin\vbox\bgroup}{\egroup\relax} + +\def\IEEEpubid#1{\if@IEEEWARNIEEEpubid\typeout{** WARNING: \noexpand\IEEEpubid + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEpubidfalse} +\def\IEEEpubidadjcol{\if@IEEEWARNIEEEpubidadjcol\typeout{** WARNING: \noexpand\IEEEpubidadjcol + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEpubidadjcolfalse} +\def\IEEEmembership#1{\if@IEEEWARNIEEEmembership\typeout{** WARNING: \noexpand\IEEEmembership + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEmembershipfalse} +\def\IEEEaftertitletext#1{\if@IEEEWARNIEEEaftertitletext\typeout{** WARNING: \noexpand\IEEEaftertitletext + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEaftertitletextfalse} +\fi + + +% provide a way to restore the commands that are locked out +\def\IEEEoverridecommandlockouts{% +\typeout{** ATTENTION: Overriding command lockouts (line \the\inputlineno).}% +\let\thanks\@IEEESAVECMDthanks% +\let\IEEEPARstart\@IEEESAVECMDIEEEPARstart% +\let\IEEEbiography\@IEEESAVECMDIEEEbiography% +\let\endIEEEbiography\@IEEESAVECMDendIEEEbiography% +\let\IEEEbiographynophoto\@IEEESAVECMDIEEEbiographynophoto% +\let\endIEEEbiographynophoto\@IEEESAVECMDendIEEEbiographynophoto% +\let\IEEEpubid\@IEEESAVECMDIEEEpubid% +\let\IEEEpubidadjcol\@IEEESAVECMDIEEEpubidadjcol% +\let\IEEEmembership\@IEEESAVECMDIEEEmembership% +\let\IEEEaftertitletext\@IEEESAVECMDIEEEaftertitletext} + + + +% need a backslash character for typeout output +{\catcode`\|=0 \catcode`\\=12 +|xdef|@IEEEbackslash{\}} + + +% hook to allow easy disabling of all legacy warnings +\def\@IEEElegacywarn#1#2{\typeout{** ATTENTION: \@IEEEbackslash #1 is deprecated (line \the\inputlineno). +Use \@IEEEbackslash #2 instead.}} + + +% provide 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 -r 000000000000 -r 8319d82cab07 Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,28 @@ +# target name +TARGET=paper + +# dependencies +$(TARGET).pdf : $(TARGET).dvi + dvipdfmx $< + +$(TARGET).dvi : $(wildcard **/*.tex) $(TARGET).tex + platex $(TARGET).tex + pbibtex $(TARGET) + platex $(TARGET).tex + platex $(TARGET).tex + + +# commands +.PHONY : clean all open remake + +clean: + rm -f *.dvi *.aux *.log *.pdf *.ps *.gz *.bbl *.blg *.toc *~ *.core *.cpt *.lof *.lot *.lol *.bbl *.blg + +all: $(TARGET).pdf + +open: $(TARGET).pdf + open $(TARGET).pdf + +remake: + make clean + make all diff -r 000000000000 -r 8319d82cab07 README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,110 @@ + +September 17, 2014 + + +IEEEtran is a LaTeX class for authors of the Institute of Electrical and +Electronics Engineers (IEEE) transactions journals and conferences. +The latest version of the IEEEtran package can be found at CTAN: + +http://mirror.ctan.org/macros/latex/contrib/IEEEtran/ + +as well as within IEEE's site: + +http://www.ieee.org/ + +For latest news, helpful tips, answers to frequently asked questions, +beta releases and other support, visit the IEEEtran home page at my +website: + +http://www.michaelshell.org/tex/ieeetran/ + +Version 1.8a has a number of significant changes over the v1.8 release. +For a full list of changes, please read the file changelog.txt. The most +notable changes include: + + + 1) Extensive rework of the compsoc mode to comply with the latest standards + of the IEEE Computer Society. + + 2) Fixed abstract, index terms and diamond line for compsoc technotes. + + 3) New \IEEEraisesectionheading{} command to provide for the special + raised first section heading of Computer Society journal papers. + + 4) Internal code improvements for page setup and command argument + processing. + + +Best wishes for all your publication endeavors, + +Michael Shell +http://www.michaelshell.org/ + + +***************************** Subdirectories ****************************** + +bibtex - The IEEEtran BibTeX style package. + +extras - Supplementary material that may be of interest. + +testflow - The testflow diagnostic suite for verifying PS/PDF output. + +tools - The IEEEtrantools.sty package which provides several commands + from the IEEEtran.cls file for use with other LaTeX classes. + + +********************************** Files ********************************** + +README - This file. + +IEEEtran.cls - The IEEEtran LaTeX class file. + +changelog.txt - The revision history. + +IEEEtran_HOWTO.pdf - The IEEEtran LaTeX class user manual. + +bare_conf.tex - A bare bones starter file for conference papers. + +bare_conf_compsoc.tex - A bare bones starter file for Computer Society + conference papers. + +bare_jrnl.tex - A bare bones starter file for journal papers. + +bare_jrnl_compsoc.tex - A bare bones starter file for Computer Society + journal papers. + +bare_jrnl_transmag.tex - A bare bones starter file for IEEE Transactions + on Magnetics journal papers. + +bare_adv.tex - A bare bones starter file showing advanced + techniques such as conditional compilation, + hyperlinks, PDF thumbnails, etc. The illustrated + format is for a Computer Society journal paper. + +*************************************************************************** +Legal Notice: +This code is offered as-is without any warranty either expressed or +implied; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE! +User assumes all risk. +In no event shall IEEE or any contributor to this code be liable for +any damages or losses, including, but not limited to, incidental, +consequential, or any other damages, resulting from the use or misuse +of any information contained here. + +All comments are the opinions of their respective authors and are not +necessarily endorsed by the IEEE. + +This work is distributed under the LaTeX Project Public License (LPPL) +( http://www.latex-project.org/ ) version 1.3, and may be freely used, +distributed and modified. A copy of the LPPL, version 1.3, is included +in the base LaTeX documentation of all distributions of LaTeX released +2003/12/01 or later. +Retain all contribution notices and credits. +** Modified files should be clearly indicated as such, including ** +** renaming them and changing author support contact information. ** + +File list of work: IEEEtran.cls, IEEEtran_HOWTO.pdf, bare_adv.tex, + bare_conf.tex, bare_conf_compsoc.tex, bare_jrnl.tex, + bare_jrnl_compsoc.tex, bare_jrnl_transmag.tex +*************************************************************************** diff -r 000000000000 -r 8319d82cab07 bare_adv.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bare_adv.tex Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,949 @@ + +%% bare_adv.tex +%% V1.4a +%% 2014/09/17 +%% by Michael Shell +%% See: +%% http://www.michaelshell.org/ +%% for current contact information. +%% +%% This is a skeleton file demonstrating the advanced use of IEEEtran.cls +%% (requires IEEEtran.cls version 1.8a or later) with an IEEE Computer +%% Society journal paper. +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% and +%% http://www.ieee.org/ + +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall 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, bare_jrnl_transmag.tex +%%************************************************************************* + + +% *** Authors should verify (and, if needed, correct) their LaTeX system *** +% *** with the testflow diagnostic prior to trusting their LaTeX platform *** +% *** with production work. IEEE's font choices and paper sizes can *** +% *** trigger bugs that do not appear when using other class files. *** *** +% The testflow support page is at: +% http://www.michaelshell.org/tex/testflow/ + + +% IEEEtran V1.7 and later provides for these CLASSINPUT macros to allow the +% user to reprogram some IEEEtran.cls defaults if needed. These settings +% override the internal defaults of IEEEtran.cls regardless of which class +% options are used. Do not use these unless you have good reason to do so as +% they can result in nonIEEE compliant documents. User beware. ;) +% +%\newcommand{\CLASSINPUTbaselinestretch}{1.0} % baselinestretch +%\newcommand{\CLASSINPUTinnersidemargin}{1in} % inner side margin +%\newcommand{\CLASSINPUToutersidemargin}{1in} % outer side margin +%\newcommand{\CLASSINPUTtoptextmargin}{1in} % top text margin +%\newcommand{\CLASSINPUTbottomtextmargin}{1in}% bottom text margin + + + + +% +\documentclass[10pt,journal,compsoc]{IEEEtran} +% If IEEEtran.cls has not been installed into the LaTeX system files, +% manually specify the path to it like: +% \documentclass[10pt,journal,compsoc]{../sty/IEEEtran} + + +% For Computer Society journals, IEEEtran defaults to the use of +% Palatino/Palladio as is done in IEEE Computer Society journals. +% To go back to Times Roman, you can use this code: +%\renewcommand{\rmdefault}{ptm}\selectfont + + + + + +% Some very useful LaTeX packages include: +% (uncomment the ones you want to load) + + + +% *** MISC UTILITY PACKAGES *** +% +%\usepackage{ifpdf} +% Heiko Oberdiek's ifpdf.sty is very useful if you need conditional +% compilation based on whether the output is pdf or dvi. +% usage: +% \ifpdf +% % pdf code +% \else +% % dvi code +% \fi +% The latest version of ifpdf.sty can be obtained from: +% http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/ +% Also, note that IEEEtran.cls V1.7 and later provides a builtin +% \ifCLASSINFOpdf conditional that works the same way. +% When switching from latex to pdflatex and vice-versa, the compiler may +% have to be run twice to clear warning/error messages. + + + + + + +% *** CITATION PACKAGES *** +% +\ifCLASSOPTIONcompsoc + % IEEE Computer Society needs nocompress option + % requires cite.sty v4.0 or later (November 2003) + \usepackage[nocompress]{cite} +\else + % normal IEEE + \usepackage{cite} +\fi +% cite.sty was written by Donald Arseneau +% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package +% \cite{} output to follow that of IEEE. Loading the cite package will +% result in citation numbers being automatically sorted and properly +% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using +% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's +% \cite will automatically add leading space, if needed. Use cite.sty's +% noadjust option (cite.sty V3.8 and later) if you want to turn this off +% such as if a citation ever needs to be enclosed in parenthesis. +% cite.sty is already installed on most LaTeX systems. Be sure and use +% version 5.0 (2009-03-20) and later if using hyperref.sty. +% The latest version can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/cite/ +% The documentation is contained in the cite.sty file itself. +% +% Note that some packages require special options to format as the Computer +% Society requires. In particular, Computer Society papers do not use +% compressed citation ranges as is done in typical IEEE papers +% (e.g., [1]-[4]). Instead, they list every citation separately in order +% (e.g., [1], [2], [3], [4]). To get the latter we need to load the cite +% package with the nocompress option which is supported by cite.sty v4.0 +% and later. + + + + + +% *** GRAPHICS RELATED PACKAGES *** +% +\ifCLASSINFOpdf + % \usepackage[pdftex]{graphicx} + % declare the path(s) where your graphic files are + % \graphicspath{{../pdf/}{../jpeg/}} + % and their extensions so you won't have to specify these with + % every instance of \includegraphics + % \DeclareGraphicsExtensions{.pdf,.jpeg,.png} +\else + % or other class option (dvipsone, dvipdf, if not using dvips). graphicx + % will default to the driver specified in the system graphics.cfg if no + % driver is specified. + % \usepackage[dvips]{graphicx} + % declare the path(s) where your graphic files are + % \graphicspath{{../eps/}} + % and their extensions so you won't have to specify these with + % every instance of \includegraphics + % \DeclareGraphicsExtensions{.eps} +\fi +% graphicx was written by David Carlisle and Sebastian Rahtz. It is +% required if you want graphics, photos, etc. graphicx.sty is already +% installed on most LaTeX systems. The latest version and documentation +% can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/graphics/ +% Another good source of documentation is "Using Imported Graphics in +% LaTeX2e" by Keith Reckdahl which can be found at: +% http://www.ctan.org/tex-archive/info/epslatex/ +% +% latex, and pdflatex in dvi mode, support graphics in encapsulated +% postscript (.eps) format. pdflatex in pdf mode supports graphics +% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure +% that all non-photo figures use a vector format (.eps, .pdf, .mps) and +% not a bitmapped formats (.jpeg, .png). IEEE frowns on bitmapped formats +% which can result in "jaggedy"/blurry rendering of lines and letters as +% well as large increases in file sizes. +% +% You can find documentation about the pdfTeX application at: +% http://www.tug.org/applications/pdftex + + + + + +% *** MATH PACKAGES *** +% +%\usepackage[cmex10]{amsmath} +% A popular package from the American Mathematical Society that provides +% many useful and powerful commands for dealing with mathematics. If using +% it, be sure to load this package with the cmex10 option to ensure that +% only type 1 fonts will utilized at all point sizes. Without this option, +% it is possible that some math symbols, particularly those within +% footnotes, will be rendered in bitmap form which will result in a +% document that can not be IEEE Xplore compliant! +% +% Also, note that the amsmath package sets \interdisplaylinepenalty to 10000 +% thus preventing page breaks from occurring within multiline equations. Use: +%\interdisplaylinepenalty=2500 +% after loading amsmath to restore such page breaks as IEEEtran.cls normally +% does. amsmath.sty is already installed on most LaTeX systems. The latest +% version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/amslatex/math/ + + + + + +% *** SPECIALIZED LIST PACKAGES *** +%\usepackage{acronym} +% acronym.sty was written by Tobias Oetiker. This package provides tools for +% managing documents with large numbers of acronyms. (You don't *have* to +% use this package - unless you have a lot of acronyms, you may feel that +% such package management of them is bit of an overkill.) +% Do note that the acronym environment (which lists acronyms) will have a +% problem when used under IEEEtran.cls because acronym.sty relies on the +% description list environment - which IEEEtran.cls has customized for +% producing IEEE style lists. A workaround is to declared the longest +% label width via the IEEEtran.cls \IEEEiedlistdecl global control: +% +% \renewcommand{\IEEEiedlistdecl}{\IEEEsetlabelwidth{SONET}} +% \begin{acronym} +% +% \end{acronym} +% \renewcommand{\IEEEiedlistdecl}{\relax}% remember to reset \IEEEiedlistdecl +% +% instead of using the acronym environment's optional argument. +% The latest version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/acronym/ + + +%\usepackage{algorithmic} +% algorithmic.sty was written by Peter Williams and Rogerio Brito. +% This package provides an algorithmic environment fo describing algorithms. +% You can use the algorithmic environment in-text or within a figure +% environment to provide for a floating algorithm. Do NOT use the algorithm +% floating environment provided by algorithm.sty (by the same authors) or +% algorithm2e.sty (by Christophe Fiorio) as IEEE does not use dedicated +% algorithm float types and packages that provide these will not provide +% correct IEEE style captions. The latest version and documentation of +% algorithmic.sty can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithms/ +% There is also a support site at: +% http://algorithms.berlios.de/index.html +% Also of interest may be the (relatively newer and more customizable) +% algorithmicx.sty package by Szasz Janos: +% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithmicx/ + + + + +% *** ALIGNMENT PACKAGES *** +% +%\usepackage{array} +% Frank Mittelbach's and David Carlisle's array.sty patches and improves +% the standard LaTeX2e array and tabular environments to provide better +% appearance and additional user controls. As the default LaTeX2e table +% generation code is lacking to the point of almost being broken with +% respect to the quality of the end results, all users are strongly +% advised to use an enhanced (at the very least that provided by array.sty) +% set of table tools. array.sty is already installed on most systems. The +% latest version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/tools/ + + +%\usepackage{mdwmath} +%\usepackage{mdwtab} +% Also highly recommended is Mark Wooding's extremely powerful MDW tools, +% especially mdwmath.sty and mdwtab.sty which are used to format equations +% and tables, respectively. The MDWtools set is already installed on most +% LaTeX systems. The lastest version and documentation is available at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/mdwtools/ + + +% IEEEtran contains the IEEEeqnarray family of commands that can be used to +% generate multiline equations as well as matrices, tables, etc., of high +% quality. + + +%\usepackage{eqparbox} +% Also of notable interest is Scott Pakin's eqparbox package for creating +% (automatically sized) equal width boxes - aka "natural width parboxes". +% Available at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/eqparbox/ + + + + +% *** SUBFIGURE PACKAGES *** +%\ifCLASSOPTIONcompsoc +% \usepackage[caption=false,font=footnotesize,labelfont=sf,textfont=sf]{subfig} +%\else +% \usepackage[caption=false,font=footnotesize]{subfig} +%\fi +% subfig.sty, written by Steven Douglas Cochran, is the modern replacement +% for subfigure.sty, the latter of which is no longer maintained and is +% incompatible with some LaTeX packages including fixltx2e. However, +% subfig.sty requires and automatically loads Axel Sommerfeldt's caption.sty +% which will override IEEEtran.cls' handling of captions and this will result +% in non-IEEE style figure/table captions. To prevent this problem, be sure +% and invoke subfig.sty's "caption=false" package option (available since +% subfig.sty version 1.3, 2005/06/28) as this is will preserve IEEEtran.cls +% handling of captions. +% Note that the Computer Society format requires a sans serif font rather +% than the serif font used in traditional IEEE formatting and thus the need +% to invoke different subfig.sty package options depending on whether +% compsoc mode has been enabled. +% +% The latest version and documentation of subfig.sty can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/subfig/ + + + + +% *** FLOAT PACKAGES *** +% +%\usepackage{fixltx2e} +% fixltx2e, the successor to the earlier fix2col.sty, was written by +% Frank Mittelbach and David Carlisle. This package corrects a few problems +% in the LaTeX2e kernel, the most notable of which is that in current +% LaTeX2e releases, the ordering of single and double column floats is not +% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a +% single column figure to be placed prior to an earlier double column +% figure. The latest version and documentation can be found at: +% http://www.ctan.org/tex-archive/macros/latex/base/ + + +%\usepackage{stfloats} +% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e +% the ability to do double column floats at the bottom of the page as well +% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in +% LaTeX2e). It also provides a command: +%\fnbelowfloat +% to enable the placement of footnotes below bottom floats (the standard +% LaTeX2e kernel puts them above bottom floats). This is an invasive package +% which rewrites many portions of the LaTeX2e float routines. It may not work +% with other packages that modify the LaTeX2e float routines. The latest +% version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/sttools/ +% Do not use the stfloats baselinefloat ability as IEEE does not allow +% \baselineskip to stretch. Authors submitting work to the IEEE should note +% that IEEE rarely uses double column equations and that authors should try +% to avoid such use. Do not be tempted to use the cuted.sty or midfloat.sty +% packages (also by Sigitas Tolusis) as IEEE does not format its papers in +% such ways. +% Do not attempt to use stfloats with fixltx2e as they are incompatible. +% Instead, use Morten Hogholm'a dblfloatfix which combines the features +% of both fixltx2e and stfloats: +% +% \usepackage{dblfloatfix} +% The latest version can be found at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/dblfloatfix/ + + +%\ifCLASSOPTIONcaptionsoff +% \usepackage[nomarkers]{endfloat} +% \let\MYoriglatexcaption\caption +% \renewcommand{\caption}[2][\relax]{\MYoriglatexcaption[#2]{#2}} +%\fi +% endfloat.sty was written by James Darrell McCauley, Jeff Goldberg and +% Axel Sommerfeldt. This package may be useful when used in conjunction with +% IEEEtran.cls' captionsoff option. Some IEEE journals/societies require that +% submissions have lists of figures/tables at the end of the paper and that +% figures/tables without any captions are placed on a page by themselves at +% the end of the document. If needed, the draftcls IEEEtran class option or +% \CLASSINPUTbaselinestretch interface can be used to increase the line +% spacing as well. Be sure and use the nomarkers option of endfloat to +% prevent endfloat from "marking" where the figures would have been placed +% in the text. The two hack lines of code above are a slight modification of +% that suggested by in the endfloat docs (section 8.4.1) to ensure that +% the full captions always appear in the list of figures/tables - even if +% the user used the short optional argument of \caption[]{}. +% IEEE papers do not typically make use of \caption[]'s optional argument, +% so this should not be an issue. A similar trick can be used to disable +% captions of packages such as subfig.sty that lack options to turn off +% the subcaptions: +% For subfig.sty: +% \let\MYorigsubfloat\subfloat +% \renewcommand{\subfloat}[2][\relax]{\MYorigsubfloat[]{#2}} +% However, the above trick will not work if both optional arguments of +% the \subfloat command are used. Furthermore, there needs to be a +% description of each subfigure *somewhere* and endfloat does not add +% subfigure captions to its list of figures. Thus, the best approach is to +% avoid the use of subfigure captions (many IEEE journals avoid them anyway) +% and instead reference/explain all the subfigures within the main caption. +% The latest version of endfloat.sty and its documentation can obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/endfloat/ +% +% The IEEEtran \ifCLASSOPTIONcaptionsoff conditional can also be used +% later in the document, say, to conditionally put the References on a +% page by themselves. + + + + + +% *** PDF, URL AND HYPERLINK PACKAGES *** +% +%\usepackage{url} +% url.sty was written by Donald Arseneau. It provides better support for +% handling and breaking URLs. url.sty is already installed on most LaTeX +% systems. The latest version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/url/ +% Basically, \url{my_url_here}. + + +% NOTE: PDF thumbnail features are not required in IEEE papers +% and their use requires extra complexity and work. +%\ifCLASSINFOpdf +% \usepackage[pdftex]{thumbpdf} +%\else +% \usepackage[dvips]{thumbpdf} +%\fi +% thumbpdf.sty and its companion Perl utility were written by Heiko Oberdiek. +% It allows the user a way to produce PDF documents that contain fancy +% thumbnail images of each of the pages (which tools like acrobat reader can +% utilize). This is possible even when using dvi->ps->pdf workflow if the +% correct thumbpdf driver options are used. thumbpdf.sty incorporates the +% file containing the PDF thumbnail information (filename.tpm is used with +% dvips, filename.tpt is used with pdftex, where filename is the base name of +% your tex document) into the final ps or pdf output document. An external +% utility, the thumbpdf *Perl script* is needed to make these .tpm or .tpt +% thumbnail files from a .ps or .pdf version of the document (which obviously +% does not yet contain pdf thumbnails). Thus, one does a: +% +% thumbpdf filename.pdf +% +% to make a filename.tpt, and: +% +% thumbpdf --mode dvips filename.ps +% +% to make a filename.tpm which will then be loaded into the document by +% thumbpdf.sty the NEXT time the document is compiled (by pdflatex or +% latex->dvips->ps2pdf). Users must be careful to regenerate the .tpt and/or +% .tpm files if the main document changes and then to recompile the +% document to incorporate the revised thumbnails to ensure that thumbnails +% match the actual pages. It is easy to forget to do this! +% +% Unix systems come with a Perl interpreter. However, MS Windows users +% will usually have to install a Perl interpreter so that the thumbpdf +% script can be run. The Ghostscript PS/PDF interpreter is also required. +% See the thumbpdf docs for details. The latest version and documentation +% can be obtained at. +% http://www.ctan.org/tex-archive/support/thumbpdf/ + + +% NOTE: PDF hyperlink and bookmark features are not required in IEEE +% papers and their use requires extra complexity and work. +% *** IF USING HYPERREF BE SURE AND CHANGE THE EXAMPLE PDF *** +% *** TITLE/SUBJECT/AUTHOR/KEYWORDS INFO BELOW!! *** +\newcommand\MYhyperrefoptions{bookmarks=true,bookmarksnumbered=true, +pdfpagemode={UseOutlines},plainpages=false,pdfpagelabels=true, +colorlinks=true,linkcolor={black},citecolor={black},urlcolor={black}, +pdftitle={Bare Demo of IEEEtran.cls for Computer Society Journals},%.dvi->.ps->.pdf workflow if the respective packages/scripts are +% loaded/invoked with the correct driver options (dvips, etc.). +% As most IEEE papers use URLs sparingly (mainly in the references), this +% may not be as big an issue as with other publications. +% +% That said, Vilar Camara Neto created his breakurl.sty package which +% permits hyperref to easily break URLs even in dvi mode. +% Note that breakurl, unlike most other packages, must be loaded +% AFTER hyperref. The latest version of breakurl and its documentation can +% be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/breakurl/ +% breakurl.sty is not for use under pdflatex pdf mode. +% +% The advanced features offer by hyperref.sty are not required for IEEE +% submission, so users should weigh these features against the added +% complexity of use. +% The package options above demonstrate how to enable PDF bookmarks +% (a type of table of contents viewable in Acrobat Reader) as well as +% PDF document information (title, subject, author and keywords) that is +% viewable in Acrobat reader's Document_Properties menu. PDF document +% information is also used extensively to automate the cataloging of PDF +% documents. The above set of options ensures that hyperlinks will not be +% colored in the text and thus will not be visible in the printed page, +% but will be active on "mouse over". USING COLORS OR OTHER HIGHLIGHTING +% OF HYPERLINKS CAN RESULT IN DOCUMENT REJECTION BY THE IEEE, especially if +% these appear on the "printed" page. IF IN DOUBT, ASK THE RELEVANT +% SUBMISSION EDITOR. You may need to add the option hypertexnames=false if +% you used duplicate equation numbers, etc., but this should not be needed +% in normal IEEE work. +% The latest version of hyperref and its documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref/ + + + + + +% *** Do not adjust lengths that control margins, column widths, etc. *** +% *** Do not use packages that alter fonts (such as pslatex). *** +% There should be no need to do such things with IEEEtran.cls V1.6 and later. +% (Unless specifically asked to do so by the journal or conference you plan +% to submit to, of course. ) + + +% correct bad hyphenation here +\hyphenation{op-tical net-works semi-conduc-tor} + + +\begin{document} +% +% paper title +% Titles are generally capitalized except for words such as a, an, and, as, +% at, but, by, for, in, nor, of, on, or, the, to and up, which are usually +% not capitalized unless they are the first or last word of the title. +% Linebreaks \\ can be used within to get better formatting as desired. +% Do not put math or special symbols in the title. +\title{Bare Advanced Demo of IEEEtran.cls\\ for Computer Society Journals} +% +% +% author names and IEEE memberships +% note positions of commas and nonbreaking spaces ( ~ ) LaTeX will not break +% a structure at a ~ so this keeps an author's name from being broken across +% two lines. +% use \thanks{} to gain access to the first footnote area +% a separate \thanks must be used for each paragraph as LaTeX2e's \thanks +% was not built to handle multiple paragraphs +% +% +%\IEEEcompsocitemizethanks is a special \thanks that produces the bulleted +% lists the Computer Society journals use for "first footnote" author +% affiliations. Use \IEEEcompsocthanksitem which works much like \item +% for each affiliation group. When not in compsoc mode, +% \IEEEcompsocitemizethanks becomes like \thanks and +% \IEEEcompsocthanksitem becomes a line break with idention. This +% facilitates dual compilation, although admittedly the differences in the +% desired content of \author between the different types of papers makes a +% one-size-fits-all approach a daunting prospect. For instance, compsoc +% journal papers have the author affiliations above the "Manuscript +% received ..." text while in non-compsoc journals this is reversed. Sigh. + +\author{Michael~Shell,~\IEEEmembership{Member,~IEEE,} + John~Doe,~\IEEEmembership{Fellow,~OSA,} + and~Jane~Doe,~\IEEEmembership{Life~Fellow,~IEEE}% <-this % stops a space +\IEEEcompsocitemizethanks{\IEEEcompsocthanksitem M. Shell is with the Department +of Electrical and Computer Engineering, Georgia Institute of Technology, Atlanta, +GA, 30332.\protect\\ +% note need leading \protect in front of \\ to get a newline within \thanks as +% \\ is fragile and will error, could use \hfil\break instead. +E-mail: see http://www.michaelshell.org/contact.html +\IEEEcompsocthanksitem J. Doe and J. Doe are with Anonymous University.}% <-this % stops a space +\thanks{Manuscript received April 19, 2005; revised September 17, 2014.}} + +% note the % following the last \IEEEmembership and also \thanks - +% these prevent an unwanted space from occurring between the last author name +% and the end of the author line. i.e., if you had this: +% +% \author{....lastname \thanks{...} \thanks{...} } +% ^------------^------------^----Do not want these spaces! +% +% a space would be appended to the last name and could cause every name on that +% line to be shifted left slightly. This is one of those "LaTeX things". For +% instance, "\textbf{A} \textbf{B}" will typeset as "A B" not "AB". To get +% "AB" then you have to do: "\textbf{A}\textbf{B}" +% \thanks is no different in this regard, so shield the last } of each \thanks +% that ends a line with a % and do not let a space in before the next \thanks. +% Spaces after \IEEEmembership other than the last one are OK (and needed) as +% you are supposed to have spaces between the names. For what it is worth, +% this is a minor point as most people would not even notice if the said evil +% space somehow managed to creep in. + + + +% The paper headers +\markboth{Journal of \LaTeX\ Class Files,~Vol.~13, No.~9, September~2014}% +{Shell \MakeLowercase{\textit{et al.}}: Bare Advanced Demo of IEEEtran.cls for Journals} +% The only time the second header will appear is for the odd numbered pages +% after the title page when using the twoside option. +% +% *** Note that you probably will NOT want to include the author's *** +% *** name in the headers of peer review papers. *** +% You can use \ifCLASSOPTIONpeerreview for conditional compilation here if +% you desire. + + + +% The publisher's ID mark at the bottom of the page is less important with +% Computer Society journal papers as those publications place the marks +% outside of the main text columns and, therefore, unlike regular IEEE +% journals, the available text space is not reduced by their presence. +% If you want to put a publisher's ID mark on the page you can do it like +% this: +%\IEEEpubid{0000--0000/00\$00.00~\copyright~2014 IEEE} +% or like this to get the Computer Society new two part style. +%\IEEEpubid{\makebox[\columnwidth]{\hfill 0000--0000/00/\$00.00~\copyright~2014 IEEE}% +%\hspace{\columnsep}\makebox[\columnwidth]{Published by the IEEE Computer Society\hfill}} +% Remember, if you use this you must call \IEEEpubidadjcol in the second +% column for its text to clear the IEEEpubid mark (Computer Society journal +% papers don't need this extra clearance.) + + + +% use for special paper notices +%\IEEEspecialpapernotice{(Invited Paper)} + + + +% for Computer Society papers, we must declare the abstract and index terms +% PRIOR to the title within the \IEEEtitleabstractindextext IEEEtran +% command as these need to go into the title area created by \maketitle. +% As a general rule, do not put math, special symbols or citations +% in the abstract or keywords. +\IEEEtitleabstractindextext{% +\begin{abstract} +The abstract goes here. +\end{abstract} + +% Note that keywords are not normally used for peerreview papers. +\begin{IEEEkeywords} +Computer Society, IEEEtran, journal, \LaTeX, paper, template. +\end{IEEEkeywords}} + + +% make the title area +\maketitle + + +% To allow for easy dual compilation without having to reenter the +% abstract/keywords data, the \IEEEtitleabstractindextext text will +% not be used in maketitle, but will appear (i.e., to be "transported") +% here as \IEEEdisplaynontitleabstractindextext when compsoc mode +% is not selected if conference mode is selected - because compsoc +% conference papers position the abstract like regular (non-compsoc) +% papers do! +\IEEEdisplaynontitleabstractindextext +% \IEEEdisplaynontitleabstractindextext has no effect when using +% compsoc under a non-conference mode. + + +% For peer review papers, you can put extra information on the cover +% page as needed: +% \ifCLASSOPTIONpeerreview +% \begin{center} \bfseries EDICS Category: 3-BBND \end{center} +% \fi +% +% For peerreview papers, this IEEEtran command inserts a page break and +% creates the second title. It will be ignored for other modes. +\IEEEpeerreviewmaketitle + + +\ifCLASSOPTIONcompsoc +\IEEEraisesectionheading{\section{Introduction}\label{sec:introduction}} +\else +\section{Introduction} +\label{sec:introduction} +\fi +% Computer Society journal (but not conference!) papers do something unusual +% with the very first section heading (almost always called "Introduction"). +% They place it ABOVE the main text! IEEEtran.cls does not automatically do +% this for you, but you can achieve this effect with the provided +% \IEEEraisesectionheading{} command. Note the need to keep any \label that +% is to refer to the section immediately after \section in the above as +% \IEEEraisesectionheading puts \section within a raised box. + + + + +% The very first letter is a 2 line initial drop letter followed +% by the rest of the first word in caps (small caps for compsoc). +% +% form to use if the first word consists of a single letter: +% \IEEEPARstart{A}{demo} file is .... +% +% form to use if you need the single drop letter followed by +% normal text (unknown if ever used by IEEE): +% \IEEEPARstart{A}{}demo file is .... +% +% Some journals put the first two words in caps: +% \IEEEPARstart{T}{his demo} file is .... +% +% Here we have the typical use of a "T" for an initial drop letter +% and "HIS" in caps to complete the first word. +\IEEEPARstart{T}{his} demo file is intended to serve as a ``starter file'' +for IEEE Computer Society journal papers produced under \LaTeX\ using +IEEEtran.cls version 1.8a and later. +% You must have at least 2 lines in the paragraph with the drop letter +% (should never be an issue) +I wish you the best of success. + +\hfill mds + +\hfill September 17, 2014 + +\subsection{Subsection Heading Here} +Subsection text here. + +% needed in second column of first page if using \IEEEpubid +%\IEEEpubidadjcol + +\subsubsection{Subsubsection Heading Here} +Subsubsection text here. + + +% An example of a floating figure using the graphicx package. +% Note that \label must occur AFTER (or within) \caption. +% For figures, \caption should occur after the \includegraphics. +% Note that IEEEtran v1.7 and later has special internal code that +% is designed to preserve the operation of \label within \caption +% even when the captionsoff option is in effect. However, because +% of issues like this, it may be the safest practice to put all your +% \label just after \caption rather than within \caption{}. +% +% Reminder: the "draftcls" or "draftclsnofoot", not "draft", class +% option should be used if it is desired that the figures are to be +% displayed while in draft mode. +% +%\begin{figure}[!t] +%\centering +%\includegraphics[width=2.5in]{myfigure} +% where an .eps filename suffix will be assumed under latex, +% and a .pdf suffix will be assumed for pdflatex; or what has been declared +% via \DeclareGraphicsExtensions. +%\caption{Simulation results for the network.} +%\label{fig_sim} +%\end{figure} + +% Note that IEEE typically puts floats only at the top, even when this +% results in a large percentage of a column being occupied by floats. +% However, the Computer Society has been known to put floats at the bottom. + + +% An example of a double column floating figure using two subfigures. +% (The subfig.sty package must be loaded for this to work.) +% The subfigure \label commands are set within each subfloat command, +% and the \label for the overall figure must come after \caption. +% \hfil is used as a separator to get equal spacing. +% Watch out that the combined width of all the subfigures on a +% line do not exceed the text width or a line break will occur. +% +%\begin{figure*}[!t] +%\centering +%\subfloat[Case I]{\includegraphics[width=2.5in]{box}% +%\label{fig_first_case}} +%\hfil +%\subfloat[Case II]{\includegraphics[width=2.5in]{box}% +%\label{fig_second_case}} +%\caption{Simulation results for the network.} +%\label{fig_sim} +%\end{figure*} +% +% Note that often IEEE papers with subfigures do not employ subfigure +% captions (using the optional argument to \subfloat[]), but instead will +% reference/describe all of them (a), (b), etc., within the main caption. +% Be aware that for subfig.sty to generate the (a), (b), etc., subfigure +% labels, the optional argument to \subfloat must be present. If a +% subcaption is not desired, just leave its contents blank, +% e.g., \subfloat[]. + + +% An example of a floating table. Note that, for IEEE style tables, the +% \caption command should come BEFORE the table and, given that table +% captions serve much like titles, are usually capitalized except for words +% such as a, an, and, as, at, but, by, for, in, nor, of, on, or, the, to +% and up, which are usually not capitalized unless they are the first or +% last word of the caption. Table text will default to \footnotesize as +% IEEE normally uses this smaller font for tables. +% The \label must come after \caption as always. +% +%\begin{table}[!t] +%% increase table row spacing, adjust to taste +%\renewcommand{\arraystretch}{1.3} +% if using array.sty, it might be a good idea to tweak the value of +% \extrarowheight as needed to properly center the text within the cells +%\caption{An Example of a Table} +%\label{table_example} +%\centering +%% Some packages, such as MDW tools, offer better commands for making tables +%% than the plain LaTeX2e tabular which is used here. +%\begin{tabular}{|c||c|} +%\hline +%One & Two\\ +%\hline +%Three & Four\\ +%\hline +%\end{tabular} +%\end{table} + + +% Note that the IEEE does not put floats in the very first column +% - or typically anywhere on the first page for that matter. Also, +% in-text middle ("here") positioning is typically not used, but it +% is allowed and encouraged for Computer Society conferences (but +% not Computer Society journals). Most IEEE journals/conferences use +% top floats exclusively. +% Note that, LaTeX2e, unlike IEEE journals/conferences, places +% footnotes above bottom floats. This can be corrected via the +% \fnbelowfloat command of the stfloats package. + + + + +\section{Conclusion} +The conclusion goes here. + + + + + +% if have a single appendix: +%\appendix[Proof of the Zonklar Equations] +% or +%\appendix % for no appendix heading +% do not use \section anymore after \appendix, only \section* +% is possibly needed + +% use appendices with more than one appendix +% then use \section to start each appendix +% you must declare a \section before using any +% \subsection or using \label (\appendices by itself +% starts a section numbered zero.) +% + + +\appendices +\section{Proof of the First Zonklar Equation} +Appendix one text goes here. + +% you can choose not to have a title for an appendix +% if you want by leaving the argument blank +\section{} +Appendix two text goes here. + + +% use section* for acknowledgment +\ifCLASSOPTIONcompsoc + % The Computer Society usually uses the plural form + \section*{Acknowledgments} +\else + % regular IEEE prefers the singular form + \section*{Acknowledgment} +\fi + + +The authors would like to thank... + + +% Can use something like this to put references on a page +% by themselves when using endfloat and the captionsoff option. +\ifCLASSOPTIONcaptionsoff + \newpage +\fi + + + +% trigger a \newpage just before the given reference +% number - used to balance the columns on the last page +% adjust value as needed - may need to be readjusted if +% the document is modified later +%\IEEEtriggeratref{8} +% The "triggered" command can be changed if desired: +%\IEEEtriggercmd{\enlargethispage{-5in}} + +% references section + +% can use a bibliography generated by BibTeX as a .bbl file +% BibTeX documentation can be easily obtained at: +% http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/ +% The IEEEtran BibTeX style support page is at: +% http://www.michaelshell.org/tex/ieeetran/bibtex/ +%\bibliographystyle{IEEEtran} +% argument is your BibTeX string definitions and bibliography database(s) +%\bibliography{IEEEabrv,../bib/paper} +% +% manually copy in the resultant .bbl file +% set second argument of \begin to the number of references +% (used to reserve space for the reference number labels box) +\begin{thebibliography}{1} + +\bibitem{IEEEhowto:kopka} +H.~Kopka and P.~W. Daly, \emph{A Guide to {\LaTeX}}, 3rd~ed.\hskip 1em plus + 0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999. + +\end{thebibliography} + +% biography section +% +% If you have an EPS/PDF photo (graphicx package needed) extra braces are +% needed around the contents of the optional argument to biography to prevent +% the LaTeX parser from getting confused when it sees the complicated +% \includegraphics command within an optional argument. (You could create +% your own custom macro containing the \includegraphics command to make things +% simpler here.) +%\begin{IEEEbiography}[{\includegraphics[width=1in,height=1.25in,clip,keepaspectratio]{mshell}}]{Michael Shell} +% or if you just want to reserve a space for a photo: + +\begin{IEEEbiography}{Michael Shell} +Biography text here. +\end{IEEEbiography} + +% if you will not have a photo at all: +\begin{IEEEbiographynophoto}{John Doe} +Biography text here. +\end{IEEEbiographynophoto} + +% insert where needed to balance the two columns on the last page with +% biographies +%\newpage + +\begin{IEEEbiographynophoto}{Jane Doe} +Biography text here. +\end{IEEEbiographynophoto} + +% You can push biographies down or up by placing +% a \vfill before or after them. The appropriate +% use of \vfill depends on what kind of text is +% on the last page and whether or not the columns +% are being equalized. + +%\vfill + +% Can be used to pull up biographies so that the bottom of the last one +% is flush with the other column. +%\enlargethispage{-5in} + + + +% that's all folks +\end{document} + + diff -r 000000000000 -r 8319d82cab07 bare_conf.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bare_conf.tex Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,582 @@ + +%% bare_conf.tex +%% V1.4a +%% 2014/09/17 +%% by Michael Shell +%% See: +%% http://www.michaelshell.org/ +%% for current contact information. +%% +%% This is a skeleton file demonstrating the use of IEEEtran.cls +%% (requires IEEEtran.cls version 1.8a or later) with an IEEE +%% conference paper. +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% and +%% http://www.ieee.org/ + +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall 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, bare_jrnl_transmag.tex +%%************************************************************************* + + +% *** Authors should verify (and, if needed, correct) their LaTeX system *** +% *** with the testflow diagnostic prior to trusting their LaTeX platform *** +% *** with production work. IEEE's font choices and paper sizes can *** +% *** trigger bugs that do not appear when using other class files. *** *** +% The testflow support page is at: +% http://www.michaelshell.org/tex/testflow/ + + + +\documentclass[conference]{IEEEtran} +% Some Computer Society conferences also require the compsoc mode option, +% but others use the standard conference format. +% +% If IEEEtran.cls has not been installed into the LaTeX system files, +% manually specify the path to it like: +% \documentclass[conference]{../sty/IEEEtran} + + + + + +% Some very useful LaTeX packages include: +% (uncomment the ones you want to load) + + +% *** MISC UTILITY PACKAGES *** +% +%\usepackage{ifpdf} +% Heiko Oberdiek's ifpdf.sty is very useful if you need conditional +% compilation based on whether the output is pdf or dvi. +% usage: +% \ifpdf +% % pdf code +% \else +% % dvi code +% \fi +% The latest version of ifpdf.sty can be obtained from: +% http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/ +% Also, note that IEEEtran.cls V1.7 and later provides a builtin +% \ifCLASSINFOpdf conditional that works the same way. +% When switching from latex to pdflatex and vice-versa, the compiler may +% have to be run twice to clear warning/error messages. + + + + + + +% *** CITATION PACKAGES *** +% +%\usepackage{cite} +% cite.sty was written by Donald Arseneau +% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package +% \cite{} output to follow that of IEEE. Loading the cite package will +% result in citation numbers being automatically sorted and properly +% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using +% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's +% \cite will automatically add leading space, if needed. Use cite.sty's +% noadjust option (cite.sty V3.8 and later) if you want to turn this off +% such as if a citation ever needs to be enclosed in parenthesis. +% cite.sty is already installed on most LaTeX systems. Be sure and use +% version 5.0 (2009-03-20) and later if using hyperref.sty. +% The latest version can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/cite/ +% The documentation is contained in the cite.sty file itself. + + + + + + +% *** GRAPHICS RELATED PACKAGES *** +% +\ifCLASSINFOpdf + % \usepackage[pdftex]{graphicx} + % declare the path(s) where your graphic files are + % \graphicspath{{../pdf/}{../jpeg/}} + % and their extensions so you won't have to specify these with + % every instance of \includegraphics + % \DeclareGraphicsExtensions{.pdf,.jpeg,.png} +\else + % or other class option (dvipsone, dvipdf, if not using dvips). graphicx + % will default to the driver specified in the system graphics.cfg if no + % driver is specified. + % \usepackage[dvips]{graphicx} + % declare the path(s) where your graphic files are + % \graphicspath{{../eps/}} + % and their extensions so you won't have to specify these with + % every instance of \includegraphics + % \DeclareGraphicsExtensions{.eps} +\fi +% graphicx was written by David Carlisle and Sebastian Rahtz. It is +% required if you want graphics, photos, etc. graphicx.sty is already +% installed on most LaTeX systems. The latest version and documentation +% can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/graphics/ +% Another good source of documentation is "Using Imported Graphics in +% LaTeX2e" by Keith Reckdahl which can be found at: +% http://www.ctan.org/tex-archive/info/epslatex/ +% +% latex, and pdflatex in dvi mode, support graphics in encapsulated +% postscript (.eps) format. pdflatex in pdf mode supports graphics +% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure +% that all non-photo figures use a vector format (.eps, .pdf, .mps) and +% not a bitmapped formats (.jpeg, .png). IEEE frowns on bitmapped formats +% which can result in "jaggedy"/blurry rendering of lines and letters as +% well as large increases in file sizes. +% +% You can find documentation about the pdfTeX application at: +% http://www.tug.org/applications/pdftex + + + + + +% *** MATH PACKAGES *** +% +%\usepackage[cmex10]{amsmath} +% A popular package from the American Mathematical Society that provides +% many useful and powerful commands for dealing with mathematics. If using +% it, be sure to load this package with the cmex10 option to ensure that +% only type 1 fonts will utilized at all point sizes. Without this option, +% it is possible that some math symbols, particularly those within +% footnotes, will be rendered in bitmap form which will result in a +% document that can not be IEEE Xplore compliant! +% +% Also, note that the amsmath package sets \interdisplaylinepenalty to 10000 +% thus preventing page breaks from occurring within multiline equations. Use: +%\interdisplaylinepenalty=2500 +% after loading amsmath to restore such page breaks as IEEEtran.cls normally +% does. amsmath.sty is already installed on most LaTeX systems. The latest +% version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/amslatex/math/ + + + + + +% *** SPECIALIZED LIST PACKAGES *** +% +%\usepackage{algorithmic} +% algorithmic.sty was written by Peter Williams and Rogerio Brito. +% This package provides an algorithmic environment fo describing algorithms. +% You can use the algorithmic environment in-text or within a figure +% environment to provide for a floating algorithm. Do NOT use the algorithm +% floating environment provided by algorithm.sty (by the same authors) or +% algorithm2e.sty (by Christophe Fiorio) as IEEE does not use dedicated +% algorithm float types and packages that provide these will not provide +% correct IEEE style captions. The latest version and documentation of +% algorithmic.sty can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithms/ +% There is also a support site at: +% http://algorithms.berlios.de/index.html +% Also of interest may be the (relatively newer and more customizable) +% algorithmicx.sty package by Szasz Janos: +% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithmicx/ + + + + +% *** ALIGNMENT PACKAGES *** +% +%\usepackage{array} +% Frank Mittelbach's and David Carlisle's array.sty patches and improves +% the standard LaTeX2e array and tabular environments to provide better +% appearance and additional user controls. As the default LaTeX2e table +% generation code is lacking to the point of almost being broken with +% respect to the quality of the end results, all users are strongly +% advised to use an enhanced (at the very least that provided by array.sty) +% set of table tools. array.sty is already installed on most systems. The +% latest version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/tools/ + + +% IEEEtran contains the IEEEeqnarray family of commands that can be used to +% generate multiline equations as well as matrices, tables, etc., of high +% quality. + + + + +% *** SUBFIGURE PACKAGES *** +%\ifCLASSOPTIONcompsoc +% \usepackage[caption=false,font=normalsize,labelfont=sf,textfont=sf]{subfig} +%\else +% \usepackage[caption=false,font=footnotesize]{subfig} +%\fi +% subfig.sty, written by Steven Douglas Cochran, is the modern replacement +% for subfigure.sty, the latter of which is no longer maintained and is +% incompatible with some LaTeX packages including fixltx2e. However, +% subfig.sty requires and automatically loads Axel Sommerfeldt's caption.sty +% which will override IEEEtran.cls' handling of captions and this will result +% in non-IEEE style figure/table captions. To prevent this problem, be sure +% and invoke subfig.sty's "caption=false" package option (available since +% subfig.sty version 1.3, 2005/06/28) as this is will preserve IEEEtran.cls +% handling of captions. +% Note that the Computer Society format requires a larger sans serif font +% than the serif footnote size font used in traditional IEEE formatting +% and thus the need to invoke different subfig.sty package options depending +% on whether compsoc mode has been enabled. +% +% The latest version and documentation of subfig.sty can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/subfig/ + + + + +% *** FLOAT PACKAGES *** +% +%\usepackage{fixltx2e} +% fixltx2e, the successor to the earlier fix2col.sty, was written by +% Frank Mittelbach and David Carlisle. This package corrects a few problems +% in the LaTeX2e kernel, the most notable of which is that in current +% LaTeX2e releases, the ordering of single and double column floats is not +% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a +% single column figure to be placed prior to an earlier double column +% figure. The latest version and documentation can be found at: +% http://www.ctan.org/tex-archive/macros/latex/base/ + + +%\usepackage{stfloats} +% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e +% the ability to do double column floats at the bottom of the page as well +% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in +% LaTeX2e). It also provides a command: +%\fnbelowfloat +% to enable the placement of footnotes below bottom floats (the standard +% LaTeX2e kernel puts them above bottom floats). This is an invasive package +% which rewrites many portions of the LaTeX2e float routines. It may not work +% with other packages that modify the LaTeX2e float routines. The latest +% version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/sttools/ +% Do not use the stfloats baselinefloat ability as IEEE does not allow +% \baselineskip to stretch. Authors submitting work to the IEEE should note +% that IEEE rarely uses double column equations and that authors should try +% to avoid such use. Do not be tempted to use the cuted.sty or midfloat.sty +% packages (also by Sigitas Tolusis) as IEEE does not format its papers in +% such ways. +% Do not attempt to use stfloats with fixltx2e as they are incompatible. +% Instead, use Morten Hogholm'a dblfloatfix which combines the features +% of both fixltx2e and stfloats: +% +% \usepackage{dblfloatfix} +% The latest version can be found at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/dblfloatfix/ + + + + +% *** PDF, URL AND HYPERLINK PACKAGES *** +% +%\usepackage{url} +% url.sty was written by Donald Arseneau. It provides better support for +% handling and breaking URLs. url.sty is already installed on most LaTeX +% systems. The latest version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/url/ +% Basically, \url{my_url_here}. + + + + +% *** Do not adjust lengths that control margins, column widths, etc. *** +% *** Do not use packages that alter fonts (such as pslatex). *** +% There should be no need to do such things with IEEEtran.cls V1.6 and later. +% (Unless specifically asked to do so by the journal or conference you plan +% to submit to, of course. ) + + +% correct bad hyphenation here +\hyphenation{op-tical net-works semi-conduc-tor} + + +\begin{document} +% +% paper title +% Titles are generally capitalized except for words such as a, an, and, as, +% at, but, by, for, in, nor, of, on, or, the, to and up, which are usually +% not capitalized unless they are the first or last word of the title. +% Linebreaks \\ can be used within to get better formatting as desired. +% Do not put math or special symbols in the title. +\title{Bare Demo of IEEEtran.cls for Conferences} + + +% author names and affiliations +% use a multiple column layout for up to three different +% affiliations +\author{\IEEEauthorblockN{Michael Shell} +\IEEEauthorblockA{School of Electrical and\\Computer Engineering\\ +Georgia Institute of Technology\\ +Atlanta, Georgia 30332--0250\\ +Email: http://www.michaelshell.org/contact.html} +\and +\IEEEauthorblockN{Homer Simpson} +\IEEEauthorblockA{Twentieth Century Fox\\ +Springfield, USA\\ +Email: homer@thesimpsons.com} +\and +\IEEEauthorblockN{James Kirk\\ and Montgomery Scott} +\IEEEauthorblockA{Starfleet Academy\\ +San Francisco, California 96678--2391\\ +Telephone: (800) 555--1212\\ +Fax: (888) 555--1212}} + +% conference papers do not typically use \thanks and this command +% is locked out in conference mode. If really needed, such as for +% the acknowledgment of grants, issue a \IEEEoverridecommandlockouts +% after \documentclass + +% for over three affiliations, or if they all won't fit within the width +% of the page, use this alternative format: +% +%\author{\IEEEauthorblockN{Michael Shell\IEEEauthorrefmark{1}, +%Homer Simpson\IEEEauthorrefmark{2}, +%James Kirk\IEEEauthorrefmark{3}, +%Montgomery Scott\IEEEauthorrefmark{3} and +%Eldon Tyrell\IEEEauthorrefmark{4}} +%\IEEEauthorblockA{\IEEEauthorrefmark{1}School of Electrical and Computer Engineering\\ +%Georgia Institute of Technology, +%Atlanta, Georgia 30332--0250\\ Email: see http://www.michaelshell.org/contact.html} +%\IEEEauthorblockA{\IEEEauthorrefmark{2}Twentieth Century Fox, Springfield, USA\\ +%Email: homer@thesimpsons.com} +%\IEEEauthorblockA{\IEEEauthorrefmark{3}Starfleet Academy, San Francisco, California 96678-2391\\ +%Telephone: (800) 555--1212, Fax: (888) 555--1212} +%\IEEEauthorblockA{\IEEEauthorrefmark{4}Tyrell Inc., 123 Replicant Street, Los Angeles, California 90210--4321}} + + + + +% use for special paper notices +%\IEEEspecialpapernotice{(Invited Paper)} + + + + +% make the title area +\maketitle + +% As a general rule, do not put math, special symbols or citations +% in the abstract +\begin{abstract} +The abstract goes here. +\end{abstract} + +% no keywords + + + + +% For peer review papers, you can put extra information on the cover +% page as needed: +% \ifCLASSOPTIONpeerreview +% \begin{center} \bfseries EDICS Category: 3-BBND \end{center} +% \fi +% +% For peerreview papers, this IEEEtran command inserts a page break and +% creates the second title. It will be ignored for other modes. +\IEEEpeerreviewmaketitle + + + +\section{Introduction} +% no \IEEEPARstart +This demo file is intended to serve as a ``starter file'' +for IEEE conference papers produced under \LaTeX\ using +IEEEtran.cls version 1.8a and later. +% You must have at least 2 lines in the paragraph with the drop letter +% (should never be an issue) +I wish you the best of success. + +\hfill mds + +\hfill September 17, 2014 + +\subsection{Subsection Heading Here} +Subsection text here. + + +\subsubsection{Subsubsection Heading Here} +Subsubsection text here. + + +% An example of a floating figure using the graphicx package. +% Note that \label must occur AFTER (or within) \caption. +% For figures, \caption should occur after the \includegraphics. +% Note that IEEEtran v1.7 and later has special internal code that +% is designed to preserve the operation of \label within \caption +% even when the captionsoff option is in effect. However, because +% of issues like this, it may be the safest practice to put all your +% \label just after \caption rather than within \caption{}. +% +% Reminder: the "draftcls" or "draftclsnofoot", not "draft", class +% option should be used if it is desired that the figures are to be +% displayed while in draft mode. +% +%\begin{figure}[!t] +%\centering +%\includegraphics[width=2.5in]{myfigure} +% where an .eps filename suffix will be assumed under latex, +% and a .pdf suffix will be assumed for pdflatex; or what has been declared +% via \DeclareGraphicsExtensions. +%\caption{Simulation results for the network.} +%\label{fig_sim} +%\end{figure} + +% Note that IEEE typically puts floats only at the top, even when this +% results in a large percentage of a column being occupied by floats. + + +% An example of a double column floating figure using two subfigures. +% (The subfig.sty package must be loaded for this to work.) +% The subfigure \label commands are set within each subfloat command, +% and the \label for the overall figure must come after \caption. +% \hfil is used as a separator to get equal spacing. +% Watch out that the combined width of all the subfigures on a +% line do not exceed the text width or a line break will occur. +% +%\begin{figure*}[!t] +%\centering +%\subfloat[Case I]{\includegraphics[width=2.5in]{box}% +%\label{fig_first_case}} +%\hfil +%\subfloat[Case II]{\includegraphics[width=2.5in]{box}% +%\label{fig_second_case}} +%\caption{Simulation results for the network.} +%\label{fig_sim} +%\end{figure*} +% +% Note that often IEEE papers with subfigures do not employ subfigure +% captions (using the optional argument to \subfloat[]), but instead will +% reference/describe all of them (a), (b), etc., within the main caption. +% Be aware that for subfig.sty to generate the (a), (b), etc., subfigure +% labels, the optional argument to \subfloat must be present. If a +% subcaption is not desired, just leave its contents blank, +% e.g., \subfloat[]. + + +% An example of a floating table. Note that, for IEEE style tables, the +% \caption command should come BEFORE the table and, given that table +% captions serve much like titles, are usually capitalized except for words +% such as a, an, and, as, at, but, by, for, in, nor, of, on, or, the, to +% and up, which are usually not capitalized unless they are the first or +% last word of the caption. Table text will default to \footnotesize as +% IEEE normally uses this smaller font for tables. +% The \label must come after \caption as always. +% +%\begin{table}[!t] +%% increase table row spacing, adjust to taste +%\renewcommand{\arraystretch}{1.3} +% if using array.sty, it might be a good idea to tweak the value of +% \extrarowheight as needed to properly center the text within the cells +%\caption{An Example of a Table} +%\label{table_example} +%\centering +%% Some packages, such as MDW tools, offer better commands for making tables +%% than the plain LaTeX2e tabular which is used here. +%\begin{tabular}{|c||c|} +%\hline +%One & Two\\ +%\hline +%Three & Four\\ +%\hline +%\end{tabular} +%\end{table} + + +% Note that the IEEE does not put floats in the very first column +% - or typically anywhere on the first page for that matter. Also, +% in-text middle ("here") positioning is typically not used, but it +% is allowed and encouraged for Computer Society conferences (but +% not Computer Society journals). Most IEEE journals/conferences use +% top floats exclusively. +% Note that, LaTeX2e, unlike IEEE journals/conferences, places +% footnotes above bottom floats. This can be corrected via the +% \fnbelowfloat command of the stfloats package. + + + + +\section{Conclusion} +The conclusion goes here. + + + + +% conference papers do not normally have an appendix + + +% use section* for acknowledgment +\section*{Acknowledgment} + + +The authors would like to thank... + + + + + +% trigger a \newpage just before the given reference +% number - used to balance the columns on the last page +% adjust value as needed - may need to be readjusted if +% the document is modified later +%\IEEEtriggeratref{8} +% The "triggered" command can be changed if desired: +%\IEEEtriggercmd{\enlargethispage{-5in}} + +% references section + +% can use a bibliography generated by BibTeX as a .bbl file +% BibTeX documentation can be easily obtained at: +% http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/ +% The IEEEtran BibTeX style support page is at: +% http://www.michaelshell.org/tex/ieeetran/bibtex/ +%\bibliographystyle{IEEEtran} +% argument is your BibTeX string definitions and bibliography database(s) +%\bibliography{IEEEabrv,../bib/paper} +% +% manually copy in the resultant .bbl file +% set second argument of \begin to the number of references +% (used to reserve space for the reference number labels box) +\begin{thebibliography}{1} + +\bibitem{IEEEhowto:kopka} +H.~Kopka and P.~W. Daly, \emph{A Guide to \LaTeX}, 3rd~ed.\hskip 1em plus + 0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999. + +\end{thebibliography} + + + + +% that's all folks +\end{document} + + diff -r 000000000000 -r 8319d82cab07 bare_conf_compsoc.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bare_conf_compsoc.tex Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,605 @@ + +%% bare_conf_compsoc.tex +%% V1.4a +%% 2014/09/17 +%% by Michael Shell +%% See: +%% http://www.michaelshell.org/ +%% for current contact information. +%% +%% This is a skeleton file demonstrating the use of IEEEtran.cls +%% (requires IEEEtran.cls version 1.8s or later) with an IEEE Computer +%% Society conference paper. +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% and +%% http://www.ieee.org/ + +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall 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, bare_jrnl_transmag.tex +%%************************************************************************* + + +% *** Authors should verify (and, if needed, correct) their LaTeX system *** +% *** with the testflow diagnostic prior to trusting their LaTeX platform *** +% *** with production work. IEEE's font choices and paper sizes can *** +% *** trigger bugs that do not appear when using other class files. *** *** +% The testflow support page is at: +% http://www.michaelshell.org/tex/testflow/ + + + +\documentclass[conference,compsoc]{IEEEtran} +% Some/most Computer Society conferences require the compsoc mode option, +% but others may want the standard conference format. +% +% If IEEEtran.cls has not been installed into the LaTeX system files, +% manually specify the path to it like: +% \documentclass[conference,compsoc]{../sty/IEEEtran} + + + + + +% Some very useful LaTeX packages include: +% (uncomment the ones you want to load) + + +% *** MISC UTILITY PACKAGES *** +% +%\usepackage{ifpdf} +% Heiko Oberdiek's ifpdf.sty is very useful if you need conditional +% compilation based on whether the output is pdf or dvi. +% usage: +% \ifpdf +% % pdf code +% \else +% % dvi code +% \fi +% The latest version of ifpdf.sty can be obtained from: +% http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/ +% Also, note that IEEEtran.cls V1.7 and later provides a builtin +% \ifCLASSINFOpdf conditional that works the same way. +% When switching from latex to pdflatex and vice-versa, the compiler may +% have to be run twice to clear warning/error messages. + + + + + + +% *** CITATION PACKAGES *** +% +\ifCLASSOPTIONcompsoc + % IEEE Computer Society needs nocompress option + % requires cite.sty v4.0 or later (November 2003) + \usepackage[nocompress]{cite} +\else + % normal IEEE + \usepackage{cite} +\fi +% cite.sty was written by Donald Arseneau +% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package +% \cite{} output to follow that of IEEE. Loading the cite package will +% result in citation numbers being automatically sorted and properly +% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using +% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's +% \cite will automatically add leading space, if needed. Use cite.sty's +% noadjust option (cite.sty V3.8 and later) if you want to turn this off +% such as if a citation ever needs to be enclosed in parenthesis. +% cite.sty is already installed on most LaTeX systems. Be sure and use +% version 5.0 (2009-03-20) and later if using hyperref.sty. +% The latest version can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/cite/ +% The documentation is contained in the cite.sty file itself. +% +% Note that some packages require special options to format as the Computer +% Society requires. In particular, Computer Society papers do not use +% compressed citation ranges as is done in typical IEEE papers +% (e.g., [1]-[4]). Instead, they list every citation separately in order +% (e.g., [1], [2], [3], [4]). To get the latter we need to load the cite +% package with the nocompress option which is supported by cite.sty v4.0 +% and later. + + + + + +% *** GRAPHICS RELATED PACKAGES *** +% +\ifCLASSINFOpdf + % \usepackage[pdftex]{graphicx} + % declare the path(s) where your graphic files are + % \graphicspath{{../pdf/}{../jpeg/}} + % and their extensions so you won't have to specify these with + % every instance of \includegraphics + % \DeclareGraphicsExtensions{.pdf,.jpeg,.png} +\else + % or other class option (dvipsone, dvipdf, if not using dvips). graphicx + % will default to the driver specified in the system graphics.cfg if no + % driver is specified. + % \usepackage[dvips]{graphicx} + % declare the path(s) where your graphic files are + % \graphicspath{{../eps/}} + % and their extensions so you won't have to specify these with + % every instance of \includegraphics + % \DeclareGraphicsExtensions{.eps} +\fi +% graphicx was written by David Carlisle and Sebastian Rahtz. It is +% required if you want graphics, photos, etc. graphicx.sty is already +% installed on most LaTeX systems. The latest version and documentation +% can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/graphics/ +% Another good source of documentation is "Using Imported Graphics in +% LaTeX2e" by Keith Reckdahl which can be found at: +% http://www.ctan.org/tex-archive/info/epslatex/ +% +% latex, and pdflatex in dvi mode, support graphics in encapsulated +% postscript (.eps) format. pdflatex in pdf mode supports graphics +% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure +% that all non-photo figures use a vector format (.eps, .pdf, .mps) and +% not a bitmapped formats (.jpeg, .png). IEEE frowns on bitmapped formats +% which can result in "jaggedy"/blurry rendering of lines and letters as +% well as large increases in file sizes. +% +% You can find documentation about the pdfTeX application at: +% http://www.tug.org/applications/pdftex + + + + + +% *** MATH PACKAGES *** +% +%\usepackage[cmex10]{amsmath} +% A popular package from the American Mathematical Society that provides +% many useful and powerful commands for dealing with mathematics. If using +% it, be sure to load this package with the cmex10 option to ensure that +% only type 1 fonts will utilized at all point sizes. Without this option, +% it is possible that some math symbols, particularly those within +% footnotes, will be rendered in bitmap form which will result in a +% document that can not be IEEE Xplore compliant! +% +% Also, note that the amsmath package sets \interdisplaylinepenalty to 10000 +% thus preventing page breaks from occurring within multiline equations. Use: +%\interdisplaylinepenalty=2500 +% after loading amsmath to restore such page breaks as IEEEtran.cls normally +% does. amsmath.sty is already installed on most LaTeX systems. The latest +% version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/amslatex/math/ + + + + + +% *** SPECIALIZED LIST PACKAGES *** +% +%\usepackage{algorithmic} +% algorithmic.sty was written by Peter Williams and Rogerio Brito. +% This package provides an algorithmic environment fo describing algorithms. +% You can use the algorithmic environment in-text or within a figure +% environment to provide for a floating algorithm. Do NOT use the algorithm +% floating environment provided by algorithm.sty (by the same authors) or +% algorithm2e.sty (by Christophe Fiorio) as IEEE does not use dedicated +% algorithm float types and packages that provide these will not provide +% correct IEEE style captions. The latest version and documentation of +% algorithmic.sty can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithms/ +% There is also a support site at: +% http://algorithms.berlios.de/index.html +% Also of interest may be the (relatively newer and more customizable) +% algorithmicx.sty package by Szasz Janos: +% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithmicx/ + + + + +% *** ALIGNMENT PACKAGES *** +% +%\usepackage{array} +% Frank Mittelbach's and David Carlisle's array.sty patches and improves +% the standard LaTeX2e array and tabular environments to provide better +% appearance and additional user controls. As the default LaTeX2e table +% generation code is lacking to the point of almost being broken with +% respect to the quality of the end results, all users are strongly +% advised to use an enhanced (at the very least that provided by array.sty) +% set of table tools. array.sty is already installed on most systems. The +% latest version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/tools/ + + +% IEEEtran contains the IEEEeqnarray family of commands that can be used to +% generate multiline equations as well as matrices, tables, etc., of high +% quality. + + + + +% *** SUBFIGURE PACKAGES *** +%\ifCLASSOPTIONcompsoc +% \usepackage[caption=false,font=footnotesize,labelfont=sf,textfont=sf]{subfig} +%\else +% \usepackage[caption=false,font=footnotesize]{subfig} +%\fi +% subfig.sty, written by Steven Douglas Cochran, is the modern replacement +% for subfigure.sty, the latter of which is no longer maintained and is +% incompatible with some LaTeX packages including fixltx2e. However, +% subfig.sty requires and automatically loads Axel Sommerfeldt's caption.sty +% which will override IEEEtran.cls' handling of captions and this will result +% in non-IEEE style figure/table captions. To prevent this problem, be sure +% and invoke subfig.sty's "caption=false" package option (available since +% subfig.sty version 1.3, 2005/06/28) as this is will preserve IEEEtran.cls +% handling of captions. +% Note that the Computer Society format requires a sans serif font rather +% than the serif font used in traditional IEEE formatting and thus the need +% to invoke different subfig.sty package options depending on whether +% compsoc mode has been enabled. +% +% The latest version and documentation of subfig.sty can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/subfig/ + + + + +% *** FLOAT PACKAGES *** +% +%\usepackage{fixltx2e} +% fixltx2e, the successor to the earlier fix2col.sty, was written by +% Frank Mittelbach and David Carlisle. This package corrects a few problems +% in the LaTeX2e kernel, the most notable of which is that in current +% LaTeX2e releases, the ordering of single and double column floats is not +% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a +% single column figure to be placed prior to an earlier double column +% figure. The latest version and documentation can be found at: +% http://www.ctan.org/tex-archive/macros/latex/base/ + + +%\usepackage{stfloats} +% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e +% the ability to do double column floats at the bottom of the page as well +% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in +% LaTeX2e). It also provides a command: +%\fnbelowfloat +% to enable the placement of footnotes below bottom floats (the standard +% LaTeX2e kernel puts them above bottom floats). This is an invasive package +% which rewrites many portions of the LaTeX2e float routines. It may not work +% with other packages that modify the LaTeX2e float routines. The latest +% version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/sttools/ +% Do not use the stfloats baselinefloat ability as IEEE does not allow +% \baselineskip to stretch. Authors submitting work to the IEEE should note +% that IEEE rarely uses double column equations and that authors should try +% to avoid such use. Do not be tempted to use the cuted.sty or midfloat.sty +% packages (also by Sigitas Tolusis) as IEEE does not format its papers in +% such ways. +% Do not attempt to use stfloats with fixltx2e as they are incompatible. +% Instead, use Morten Hogholm'a dblfloatfix which combines the features +% of both fixltx2e and stfloats: +% +% \usepackage{dblfloatfix} +% The latest version can be found at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/dblfloatfix/ + + + + +% *** PDF, URL AND HYPERLINK PACKAGES *** +% +%\usepackage{url} +% url.sty was written by Donald Arseneau. It provides better support for +% handling and breaking URLs. url.sty is already installed on most LaTeX +% systems. The latest version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/url/ +% Basically, \url{my_url_here}. + + + + +% *** Do not adjust lengths that control margins, column widths, etc. *** +% *** Do not use packages that alter fonts (such as pslatex). *** +% There should be no need to do such things with IEEEtran.cls V1.6 and later. +% (Unless specifically asked to do so by the journal or conference you plan +% to submit to, of course. ) + + +% correct bad hyphenation here +\hyphenation{op-tical net-works semi-conduc-tor} + + +\begin{document} +% +% paper title +% Titles are generally capitalized except for words such as a, an, and, as, +% at, but, by, for, in, nor, of, on, or, the, to and up, which are usually +% not capitalized unless they are the first or last word of the title. +% Linebreaks \\ can be used within to get better formatting as desired. +% Do not put math or special symbols in the title. +\title{Bare Demo of IEEEtran.cls for Computer Society Conferences} + + +% author names and affiliations +% use a multiple column layout for up to three different +% affiliations +\author{\IEEEauthorblockN{Michael Shell} +\IEEEauthorblockA{School of Electrical and\\Computer Engineering\\ +Georgia Institute of Technology\\ +Atlanta, Georgia 30332--0250\\ +Email: http://www.michaelshell.org/contact.html} +\and +\IEEEauthorblockN{Homer Simpson} +\IEEEauthorblockA{Twentieth Century Fox\\ +Springfield, USA\\ +Email: homer@thesimpsons.com} +\and +\IEEEauthorblockN{James Kirk\\ and Montgomery Scott} +\IEEEauthorblockA{Starfleet Academy\\ +San Francisco, California 96678-2391\\ +Telephone: (800) 555--1212\\ +Fax: (888) 555--1212}} + +% conference papers do not typically use \thanks and this command +% is locked out in conference mode. If really needed, such as for +% the acknowledgment of grants, issue a \IEEEoverridecommandlockouts +% after \documentclass + +% for over three affiliations, or if they all won't fit within the width +% of the page (and note that there is less available width in this regard for +% compsoc conferences compared to traditional conferences), use this +% alternative format: +% +%\author{\IEEEauthorblockN{Michael Shell\IEEEauthorrefmark{1}, +%Homer Simpson\IEEEauthorrefmark{2}, +%James Kirk\IEEEauthorrefmark{3}, +%Montgomery Scott\IEEEauthorrefmark{3} and +%Eldon Tyrell\IEEEauthorrefmark{4}} +%\IEEEauthorblockA{\IEEEauthorrefmark{1}School of Electrical and Computer Engineering\\ +%Georgia Institute of Technology, +%Atlanta, Georgia 30332--0250\\ Email: see http://www.michaelshell.org/contact.html} +%\IEEEauthorblockA{\IEEEauthorrefmark{2}Twentieth Century Fox, Springfield, USA\\ +%Email: homer@thesimpsons.com} +%\IEEEauthorblockA{\IEEEauthorrefmark{3}Starfleet Academy, San Francisco, California 96678-2391\\ +%Telephone: (800) 555--1212, Fax: (888) 555--1212} +%\IEEEauthorblockA{\IEEEauthorrefmark{4}Tyrell Inc., 123 Replicant Street, Los Angeles, California 90210--4321}} + + + + +% use for special paper notices +%\IEEEspecialpapernotice{(Invited Paper)} + + + + +% make the title area +\maketitle + +% As a general rule, do not put math, special symbols or citations +% in the abstract +\begin{abstract} +The abstract goes here. +\end{abstract} + +% no keywords + + + + +% For peer review papers, you can put extra information on the cover +% page as needed: +% \ifCLASSOPTIONpeerreview +% \begin{center} \bfseries EDICS Category: 3-BBND \end{center} +% \fi +% +% For peerreview papers, this IEEEtran command inserts a page break and +% creates the second title. It will be ignored for other modes. +\IEEEpeerreviewmaketitle + + + +\section{Introduction} +% no \IEEEPARstart +This demo file is intended to serve as a ``starter file'' +for IEEE conference papers produced under \LaTeX\ using +IEEEtran.cls version 1.8a and later. +% You must have at least 2 lines in the paragraph with the drop letter +% (should never be an issue) +I wish you the best of success. + +\hfill mds + +\hfill September 17, 2014 + +\subsection{Subsection Heading Here} +Subsection text here. + + +\subsubsection{Subsubsection Heading Here} +Subsubsection text here. + + +% An example of a floating figure using the graphicx package. +% Note that \label must occur AFTER (or within) \caption. +% For figures, \caption should occur after the \includegraphics. +% Note that IEEEtran v1.7 and later has special internal code that +% is designed to preserve the operation of \label within \caption +% even when the captionsoff option is in effect. However, because +% of issues like this, it may be the safest practice to put all your +% \label just after \caption rather than within \caption{}. +% +% Reminder: the "draftcls" or "draftclsnofoot", not "draft", class +% option should be used if it is desired that the figures are to be +% displayed while in draft mode. +% +%\begin{figure}[!t] +%\centering +%\includegraphics[width=2.5in]{myfigure} +% where an .eps filename suffix will be assumed under latex, +% and a .pdf suffix will be assumed for pdflatex; or what has been declared +% via \DeclareGraphicsExtensions. +%\caption{Simulation results for the network.} +%\label{fig_sim} +%\end{figure} + +% Note that IEEE typically puts floats only at the top, even when this +% results in a large percentage of a column being occupied by floats. + + +% An example of a double column floating figure using two subfigures. +% (The subfig.sty package must be loaded for this to work.) +% The subfigure \label commands are set within each subfloat command, +% and the \label for the overall figure must come after \caption. +% \hfil is used as a separator to get equal spacing. +% Watch out that the combined width of all the subfigures on a +% line do not exceed the text width or a line break will occur. +% +%\begin{figure*}[!t] +%\centering +%\subfloat[Case I]{\includegraphics[width=2.5in]{box}% +%\label{fig_first_case}} +%\hfil +%\subfloat[Case II]{\includegraphics[width=2.5in]{box}% +%\label{fig_second_case}} +%\caption{Simulation results for the network.} +%\label{fig_sim} +%\end{figure*} +% +% Note that often IEEE papers with subfigures do not employ subfigure +% captions (using the optional argument to \subfloat[]), but instead will +% reference/describe all of them (a), (b), etc., within the main caption. +% Be aware that for subfig.sty to generate the (a), (b), etc., subfigure +% labels, the optional argument to \subfloat must be present. If a +% subcaption is not desired, just leave its contents blank, +% e.g., \subfloat[]. + + +% An example of a floating table. Note that, for IEEE style tables, the +% \caption command should come BEFORE the table and, given that table +% captions serve much like titles, are usually capitalized except for words +% such as a, an, and, as, at, but, by, for, in, nor, of, on, or, the, to +% and up, which are usually not capitalized unless they are the first or +% last word of the caption. Table text will default to \footnotesize as +% IEEE normally uses this smaller font for tables. +% The \label must come after \caption as always. +% +%\begin{table}[!t] +%% increase table row spacing, adjust to taste +%\renewcommand{\arraystretch}{1.3} +% if using array.sty, it might be a good idea to tweak the value of +% \extrarowheight as needed to properly center the text within the cells +%\caption{An Example of a Table} +%\label{table_example} +%\centering +%% Some packages, such as MDW tools, offer better commands for making tables +%% than the plain LaTeX2e tabular which is used here. +%\begin{tabular}{|c||c|} +%\hline +%One & Two\\ +%\hline +%Three & Four\\ +%\hline +%\end{tabular} +%\end{table} + + +% Note that the IEEE does not put floats in the very first column +% - or typically anywhere on the first page for that matter. Also, +% in-text middle ("here") positioning is typically not used, but it +% is allowed and encouraged for Computer Society conferences (but +% not Computer Society journals). Most IEEE journals/conferences use +% top floats exclusively. +% Note that, LaTeX2e, unlike IEEE journals/conferences, places +% footnotes above bottom floats. This can be corrected via the +% \fnbelowfloat command of the stfloats package. + + + + +\section{Conclusion} +The conclusion goes here. + + + + +% conference papers do not normally have an appendix + + + +% use section* for acknowledgment +\ifCLASSOPTIONcompsoc + % The Computer Society usually uses the plural form + \section*{Acknowledgments} +\else + % regular IEEE prefers the singular form + \section*{Acknowledgment} +\fi + + +The authors would like to thank... + + + + + +% trigger a \newpage just before the given reference +% number - used to balance the columns on the last page +% adjust value as needed - may need to be readjusted if +% the document is modified later +%\IEEEtriggeratref{8} +% The "triggered" command can be changed if desired: +%\IEEEtriggercmd{\enlargethispage{-5in}} + +% references section + +% can use a bibliography generated by BibTeX as a .bbl file +% BibTeX documentation can be easily obtained at: +% http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/ +% The IEEEtran BibTeX style support page is at: +% http://www.michaelshell.org/tex/ieeetran/bibtex/ +%\bibliographystyle{IEEEtran} +% argument is your BibTeX string definitions and bibliography database(s) +%\bibliography{IEEEabrv,../bib/paper} +% +% manually copy in the resultant .bbl file +% set second argument of \begin to the number of references +% (used to reserve space for the reference number labels box) +\begin{thebibliography}{1} + +\bibitem{IEEEhowto:kopka} +H.~Kopka and P.~W. Daly, \emph{A Guide to \LaTeX}, 3rd~ed.\hskip 1em plus + 0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999. + +\end{thebibliography} + + + + +% that's all folks +\end{document} + + diff -r 000000000000 -r 8319d82cab07 bare_jrnl.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bare_jrnl.tex Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,723 @@ + +%% bare_jrnl.tex +%% V1.4a +%% 2014/09/17 +%% by Michael Shell +%% see http://www.michaelshell.org/ +%% for current contact information. +%% +%% This is a skeleton file demonstrating the use of IEEEtran.cls +%% (requires IEEEtran.cls version 1.8a or later) with an IEEE +%% journal paper. +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% and +%% http://www.ieee.org/ + +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall 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, bare_jrnl_transmag.tex +%%************************************************************************* + + +% *** Authors should verify (and, if needed, correct) their LaTeX system *** +% *** with the testflow diagnostic prior to trusting their LaTeX platform *** +% *** with production work. IEEE's font choices and paper sizes can *** +% *** trigger bugs that do not appear when using other class files. *** *** +% The testflow support page is at: +% http://www.michaelshell.org/tex/testflow/ + + + +\documentclass[journal]{IEEEtran} +% +% If IEEEtran.cls has not been installed into the LaTeX system files, +% manually specify the path to it like: +% \documentclass[journal]{../sty/IEEEtran} + + + + + +% Some very useful LaTeX packages include: +% (uncomment the ones you want to load) + + +% *** MISC UTILITY PACKAGES *** +% +%\usepackage{ifpdf} +% Heiko Oberdiek's ifpdf.sty is very useful if you need conditional +% compilation based on whether the output is pdf or dvi. +% usage: +% \ifpdf +% % pdf code +% \else +% % dvi code +% \fi +% The latest version of ifpdf.sty can be obtained from: +% http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/ +% Also, note that IEEEtran.cls V1.7 and later provides a builtin +% \ifCLASSINFOpdf conditional that works the same way. +% When switching from latex to pdflatex and vice-versa, the compiler may +% have to be run twice to clear warning/error messages. + + + + + + +% *** CITATION PACKAGES *** +% +%\usepackage{cite} +% cite.sty was written by Donald Arseneau +% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package +% \cite{} output to follow that of IEEE. Loading the cite package will +% result in citation numbers being automatically sorted and properly +% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using +% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's +% \cite will automatically add leading space, if needed. Use cite.sty's +% noadjust option (cite.sty V3.8 and later) if you want to turn this off +% such as if a citation ever needs to be enclosed in parenthesis. +% cite.sty is already installed on most LaTeX systems. Be sure and use +% version 5.0 (2009-03-20) and later if using hyperref.sty. +% The latest version can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/cite/ +% The documentation is contained in the cite.sty file itself. + + + + + + +% *** GRAPHICS RELATED PACKAGES *** +% +\ifCLASSINFOpdf + % \usepackage[pdftex]{graphicx} + % declare the path(s) where your graphic files are + % \graphicspath{{../pdf/}{../jpeg/}} + % and their extensions so you won't have to specify these with + % every instance of \includegraphics + % \DeclareGraphicsExtensions{.pdf,.jpeg,.png} +\else + % or other class option (dvipsone, dvipdf, if not using dvips). graphicx + % will default to the driver specified in the system graphics.cfg if no + % driver is specified. + % \usepackage[dvips]{graphicx} + % declare the path(s) where your graphic files are + % \graphicspath{{../eps/}} + % and their extensions so you won't have to specify these with + % every instance of \includegraphics + % \DeclareGraphicsExtensions{.eps} +\fi +% graphicx was written by David Carlisle and Sebastian Rahtz. It is +% required if you want graphics, photos, etc. graphicx.sty is already +% installed on most LaTeX systems. The latest version and documentation +% can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/graphics/ +% Another good source of documentation is "Using Imported Graphics in +% LaTeX2e" by Keith Reckdahl which can be found at: +% http://www.ctan.org/tex-archive/info/epslatex/ +% +% latex, and pdflatex in dvi mode, support graphics in encapsulated +% postscript (.eps) format. pdflatex in pdf mode supports graphics +% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure +% that all non-photo figures use a vector format (.eps, .pdf, .mps) and +% not a bitmapped formats (.jpeg, .png). IEEE frowns on bitmapped formats +% which can result in "jaggedy"/blurry rendering of lines and letters as +% well as large increases in file sizes. +% +% You can find documentation about the pdfTeX application at: +% http://www.tug.org/applications/pdftex + + + + + +% *** MATH PACKAGES *** +% +%\usepackage[cmex10]{amsmath} +% A popular package from the American Mathematical Society that provides +% many useful and powerful commands for dealing with mathematics. If using +% it, be sure to load this package with the cmex10 option to ensure that +% only type 1 fonts will utilized at all point sizes. Without this option, +% it is possible that some math symbols, particularly those within +% footnotes, will be rendered in bitmap form which will result in a +% document that can not be IEEE Xplore compliant! +% +% Also, note that the amsmath package sets \interdisplaylinepenalty to 10000 +% thus preventing page breaks from occurring within multiline equations. Use: +%\interdisplaylinepenalty=2500 +% after loading amsmath to restore such page breaks as IEEEtran.cls normally +% does. amsmath.sty is already installed on most LaTeX systems. The latest +% version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/amslatex/math/ + + + + + +% *** SPECIALIZED LIST PACKAGES *** +% +%\usepackage{algorithmic} +% algorithmic.sty was written by Peter Williams and Rogerio Brito. +% This package provides an algorithmic environment fo describing algorithms. +% You can use the algorithmic environment in-text or within a figure +% environment to provide for a floating algorithm. Do NOT use the algorithm +% floating environment provided by algorithm.sty (by the same authors) or +% algorithm2e.sty (by Christophe Fiorio) as IEEE does not use dedicated +% algorithm float types and packages that provide these will not provide +% correct IEEE style captions. The latest version and documentation of +% algorithmic.sty can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithms/ +% There is also a support site at: +% http://algorithms.berlios.de/index.html +% Also of interest may be the (relatively newer and more customizable) +% algorithmicx.sty package by Szasz Janos: +% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithmicx/ + + + + +% *** ALIGNMENT PACKAGES *** +% +%\usepackage{array} +% Frank Mittelbach's and David Carlisle's array.sty patches and improves +% the standard LaTeX2e array and tabular environments to provide better +% appearance and additional user controls. As the default LaTeX2e table +% generation code is lacking to the point of almost being broken with +% respect to the quality of the end results, all users are strongly +% advised to use an enhanced (at the very least that provided by array.sty) +% set of table tools. array.sty is already installed on most systems. The +% latest version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/tools/ + + +% IEEEtran contains the IEEEeqnarray family of commands that can be used to +% generate multiline equations as well as matrices, tables, etc., of high +% quality. + + + + +% *** SUBFIGURE PACKAGES *** +%\ifCLASSOPTIONcompsoc +% \usepackage[caption=false,font=normalsize,labelfont=sf,textfont=sf]{subfig} +%\else +% \usepackage[caption=false,font=footnotesize]{subfig} +%\fi +% subfig.sty, written by Steven Douglas Cochran, is the modern replacement +% for subfigure.sty, the latter of which is no longer maintained and is +% incompatible with some LaTeX packages including fixltx2e. However, +% subfig.sty requires and automatically loads Axel Sommerfeldt's caption.sty +% which will override IEEEtran.cls' handling of captions and this will result +% in non-IEEE style figure/table captions. To prevent this problem, be sure +% and invoke subfig.sty's "caption=false" package option (available since +% subfig.sty version 1.3, 2005/06/28) as this is will preserve IEEEtran.cls +% handling of captions. +% Note that the Computer Society format requires a larger sans serif font +% than the serif footnote size font used in traditional IEEE formatting +% and thus the need to invoke different subfig.sty package options depending +% on whether compsoc mode has been enabled. +% +% The latest version and documentation of subfig.sty can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/subfig/ + + + + +% *** FLOAT PACKAGES *** +% +%\usepackage{fixltx2e} +% fixltx2e, the successor to the earlier fix2col.sty, was written by +% Frank Mittelbach and David Carlisle. This package corrects a few problems +% in the LaTeX2e kernel, the most notable of which is that in current +% LaTeX2e releases, the ordering of single and double column floats is not +% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a +% single column figure to be placed prior to an earlier double column +% figure. The latest version and documentation can be found at: +% http://www.ctan.org/tex-archive/macros/latex/base/ + + +%\usepackage{stfloats} +% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e +% the ability to do double column floats at the bottom of the page as well +% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in +% LaTeX2e). It also provides a command: +%\fnbelowfloat +% to enable the placement of footnotes below bottom floats (the standard +% LaTeX2e kernel puts them above bottom floats). This is an invasive package +% which rewrites many portions of the LaTeX2e float routines. It may not work +% with other packages that modify the LaTeX2e float routines. The latest +% version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/sttools/ +% Do not use the stfloats baselinefloat ability as IEEE does not allow +% \baselineskip to stretch. Authors submitting work to the IEEE should note +% that IEEE rarely uses double column equations and that authors should try +% to avoid such use. Do not be tempted to use the cuted.sty or midfloat.sty +% packages (also by Sigitas Tolusis) as IEEE does not format its papers in +% such ways. +% Do not attempt to use stfloats with fixltx2e as they are incompatible. +% Instead, use Morten Hogholm'a dblfloatfix which combines the features +% of both fixltx2e and stfloats: +% +% \usepackage{dblfloatfix} +% The latest version can be found at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/dblfloatfix/ + + + + +%\ifCLASSOPTIONcaptionsoff +% \usepackage[nomarkers]{endfloat} +% \let\MYoriglatexcaption\caption +% \renewcommand{\caption}[2][\relax]{\MYoriglatexcaption[#2]{#2}} +%\fi +% endfloat.sty was written by James Darrell McCauley, Jeff Goldberg and +% Axel Sommerfeldt. This package may be useful when used in conjunction with +% IEEEtran.cls' captionsoff option. Some IEEE journals/societies require that +% submissions have lists of figures/tables at the end of the paper and that +% figures/tables without any captions are placed on a page by themselves at +% the end of the document. If needed, the draftcls IEEEtran class option or +% \CLASSINPUTbaselinestretch interface can be used to increase the line +% spacing as well. Be sure and use the nomarkers option of endfloat to +% prevent endfloat from "marking" where the figures would have been placed +% in the text. The two hack lines of code above are a slight modification of +% that suggested by in the endfloat docs (section 8.4.1) to ensure that +% the full captions always appear in the list of figures/tables - even if +% the user used the short optional argument of \caption[]{}. +% IEEE papers do not typically make use of \caption[]'s optional argument, +% so this should not be an issue. A similar trick can be used to disable +% captions of packages such as subfig.sty that lack options to turn off +% the subcaptions: +% For subfig.sty: +% \let\MYorigsubfloat\subfloat +% \renewcommand{\subfloat}[2][\relax]{\MYorigsubfloat[]{#2}} +% However, the above trick will not work if both optional arguments of +% the \subfloat command are used. Furthermore, there needs to be a +% description of each subfigure *somewhere* and endfloat does not add +% subfigure captions to its list of figures. Thus, the best approach is to +% avoid the use of subfigure captions (many IEEE journals avoid them anyway) +% and instead reference/explain all the subfigures within the main caption. +% The latest version of endfloat.sty and its documentation can obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/endfloat/ +% +% The IEEEtran \ifCLASSOPTIONcaptionsoff conditional can also be used +% later in the document, say, to conditionally put the References on a +% page by themselves. + + + + +% *** PDF, URL AND HYPERLINK PACKAGES *** +% +%\usepackage{url} +% url.sty was written by Donald Arseneau. It provides better support for +% handling and breaking URLs. url.sty is already installed on most LaTeX +% systems. The latest version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/url/ +% Basically, \url{my_url_here}. + + + + +% *** Do not adjust lengths that control margins, column widths, etc. *** +% *** Do not use packages that alter fonts (such as pslatex). *** +% There should be no need to do such things with IEEEtran.cls V1.6 and later. +% (Unless specifically asked to do so by the journal or conference you plan +% to submit to, of course. ) + + +% correct bad hyphenation here +\hyphenation{op-tical net-works semi-conduc-tor} + + +\begin{document} +% +% paper title +% Titles are generally capitalized except for words such as a, an, and, as, +% at, but, by, for, in, nor, of, on, or, the, to and up, which are usually +% not capitalized unless they are the first or last word of the title. +% Linebreaks \\ can be used within to get better formatting as desired. +% Do not put math or special symbols in the title. +\title{Bare Demo of IEEEtran.cls for Journals} +% +% +% author names and IEEE memberships +% note positions of commas and nonbreaking spaces ( ~ ) LaTeX will not break +% a structure at a ~ so this keeps an author's name from being broken across +% two lines. +% use \thanks{} to gain access to the first footnote area +% a separate \thanks must be used for each paragraph as LaTeX2e's \thanks +% was not built to handle multiple paragraphs +% + +\author{Michael~Shell,~\IEEEmembership{Member,~IEEE,} + John~Doe,~\IEEEmembership{Fellow,~OSA,} + and~Jane~Doe,~\IEEEmembership{Life~Fellow,~IEEE}% <-this % stops a space +\thanks{M. Shell is with the Department +of Electrical and Computer Engineering, Georgia Institute of Technology, Atlanta, +GA, 30332 USA e-mail: (see http://www.michaelshell.org/contact.html).}% <-this % stops a space +\thanks{J. Doe and J. Doe are with Anonymous University.}% <-this % stops a space +\thanks{Manuscript received April 19, 2005; revised September 17, 2014.}} + +% note the % following the last \IEEEmembership and also \thanks - +% these prevent an unwanted space from occurring between the last author name +% and the end of the author line. i.e., if you had this: +% +% \author{....lastname \thanks{...} \thanks{...} } +% ^------------^------------^----Do not want these spaces! +% +% a space would be appended to the last name and could cause every name on that +% line to be shifted left slightly. This is one of those "LaTeX things". For +% instance, "\textbf{A} \textbf{B}" will typeset as "A B" not "AB". To get +% "AB" then you have to do: "\textbf{A}\textbf{B}" +% \thanks is no different in this regard, so shield the last } of each \thanks +% that ends a line with a % and do not let a space in before the next \thanks. +% Spaces after \IEEEmembership other than the last one are OK (and needed) as +% you are supposed to have spaces between the names. For what it is worth, +% this is a minor point as most people would not even notice if the said evil +% space somehow managed to creep in. + + + +% The paper headers +\markboth{Journal of \LaTeX\ Class Files,~Vol.~13, No.~9, September~2014}% +{Shell \MakeLowercase{\textit{et al.}}: Bare Demo of IEEEtran.cls for Journals} +% The only time the second header will appear is for the odd numbered pages +% after the title page when using the twoside option. +% +% *** Note that you probably will NOT want to include the author's *** +% *** name in the headers of peer review papers. *** +% You can use \ifCLASSOPTIONpeerreview for conditional compilation here if +% you desire. + + + + +% If you want to put a publisher's ID mark on the page you can do it like +% this: +%\IEEEpubid{0000--0000/00\$00.00~\copyright~2014 IEEE} +% Remember, if you use this you must call \IEEEpubidadjcol in the second +% column for its text to clear the IEEEpubid mark. + + + +% use for special paper notices +%\IEEEspecialpapernotice{(Invited Paper)} + + + + +% make the title area +\maketitle + +% As a general rule, do not put math, special symbols or citations +% in the abstract or keywords. +\begin{abstract} +The abstract goes here. +\end{abstract} + +% Note that keywords are not normally used for peerreview papers. +\begin{IEEEkeywords} +IEEEtran, journal, \LaTeX, paper, template. +\end{IEEEkeywords} + + + + + + +% For peer review papers, you can put extra information on the cover +% page as needed: +% \ifCLASSOPTIONpeerreview +% \begin{center} \bfseries EDICS Category: 3-BBND \end{center} +% \fi +% +% For peerreview papers, this IEEEtran command inserts a page break and +% creates the second title. It will be ignored for other modes. +\IEEEpeerreviewmaketitle + + + +\section{Introduction} +% The very first letter is a 2 line initial drop letter followed +% by the rest of the first word in caps. +% +% form to use if the first word consists of a single letter: +% \IEEEPARstart{A}{demo} file is .... +% +% form to use if you need the single drop letter followed by +% normal text (unknown if ever used by IEEE): +% \IEEEPARstart{A}{}demo file is .... +% +% Some journals put the first two words in caps: +% \IEEEPARstart{T}{his demo} file is .... +% +% Here we have the typical use of a "T" for an initial drop letter +% and "HIS" in caps to complete the first word. +\IEEEPARstart{T}{his} demo file is intended to serve as a ``starter file'' +for IEEE journal papers produced under \LaTeX\ using +IEEEtran.cls version 1.8a and later. +% You must have at least 2 lines in the paragraph with the drop letter +% (should never be an issue) +I wish you the best of success. + +\hfill mds + +\hfill September 17, 2014 + +\subsection{Subsection Heading Here} +Subsection text here. + +% needed in second column of first page if using \IEEEpubid +%\IEEEpubidadjcol + +\subsubsection{Subsubsection Heading Here} +Subsubsection text here. + + +% An example of a floating figure using the graphicx package. +% Note that \label must occur AFTER (or within) \caption. +% For figures, \caption should occur after the \includegraphics. +% Note that IEEEtran v1.7 and later has special internal code that +% is designed to preserve the operation of \label within \caption +% even when the captionsoff option is in effect. However, because +% of issues like this, it may be the safest practice to put all your +% \label just after \caption rather than within \caption{}. +% +% Reminder: the "draftcls" or "draftclsnofoot", not "draft", class +% option should be used if it is desired that the figures are to be +% displayed while in draft mode. +% +%\begin{figure}[!t] +%\centering +%\includegraphics[width=2.5in]{myfigure} +% where an .eps filename suffix will be assumed under latex, +% and a .pdf suffix will be assumed for pdflatex; or what has been declared +% via \DeclareGraphicsExtensions. +%\caption{Simulation results for the network.} +%\label{fig_sim} +%\end{figure} + +% Note that IEEE typically puts floats only at the top, even when this +% results in a large percentage of a column being occupied by floats. + + +% An example of a double column floating figure using two subfigures. +% (The subfig.sty package must be loaded for this to work.) +% The subfigure \label commands are set within each subfloat command, +% and the \label for the overall figure must come after \caption. +% \hfil is used as a separator to get equal spacing. +% Watch out that the combined width of all the subfigures on a +% line do not exceed the text width or a line break will occur. +% +%\begin{figure*}[!t] +%\centering +%\subfloat[Case I]{\includegraphics[width=2.5in]{box}% +%\label{fig_first_case}} +%\hfil +%\subfloat[Case II]{\includegraphics[width=2.5in]{box}% +%\label{fig_second_case}} +%\caption{Simulation results for the network.} +%\label{fig_sim} +%\end{figure*} +% +% Note that often IEEE papers with subfigures do not employ subfigure +% captions (using the optional argument to \subfloat[]), but instead will +% reference/describe all of them (a), (b), etc., within the main caption. +% Be aware that for subfig.sty to generate the (a), (b), etc., subfigure +% labels, the optional argument to \subfloat must be present. If a +% subcaption is not desired, just leave its contents blank, +% e.g., \subfloat[]. + + +% An example of a floating table. Note that, for IEEE style tables, the +% \caption command should come BEFORE the table and, given that table +% captions serve much like titles, are usually capitalized except for words +% such as a, an, and, as, at, but, by, for, in, nor, of, on, or, the, to +% and up, which are usually not capitalized unless they are the first or +% last word of the caption. Table text will default to \footnotesize as +% IEEE normally uses this smaller font for tables. +% The \label must come after \caption as always. +% +%\begin{table}[!t] +%% increase table row spacing, adjust to taste +%\renewcommand{\arraystretch}{1.3} +% if using array.sty, it might be a good idea to tweak the value of +% \extrarowheight as needed to properly center the text within the cells +%\caption{An Example of a Table} +%\label{table_example} +%\centering +%% Some packages, such as MDW tools, offer better commands for making tables +%% than the plain LaTeX2e tabular which is used here. +%\begin{tabular}{|c||c|} +%\hline +%One & Two\\ +%\hline +%Three & Four\\ +%\hline +%\end{tabular} +%\end{table} + + +% Note that the IEEE does not put floats in the very first column +% - or typically anywhere on the first page for that matter. Also, +% in-text middle ("here") positioning is typically not used, but it +% is allowed and encouraged for Computer Society conferences (but +% not Computer Society journals). Most IEEE journals/conferences use +% top floats exclusively. +% Note that, LaTeX2e, unlike IEEE journals/conferences, places +% footnotes above bottom floats. This can be corrected via the +% \fnbelowfloat command of the stfloats package. + + + + +\section{Conclusion} +The conclusion goes here. + + + + + +% if have a single appendix: +%\appendix[Proof of the Zonklar Equations] +% or +%\appendix % for no appendix heading +% do not use \section anymore after \appendix, only \section* +% is possibly needed + +% use appendices with more than one appendix +% then use \section to start each appendix +% you must declare a \section before using any +% \subsection or using \label (\appendices by itself +% starts a section numbered zero.) +% + + +\appendices +\section{Proof of the First Zonklar Equation} +Appendix one text goes here. + +% you can choose not to have a title for an appendix +% if you want by leaving the argument blank +\section{} +Appendix two text goes here. + + +% use section* for acknowledgment +\section*{Acknowledgment} + + +The authors would like to thank... + + +% Can use something like this to put references on a page +% by themselves when using endfloat and the captionsoff option. +\ifCLASSOPTIONcaptionsoff + \newpage +\fi + + + +% trigger a \newpage just before the given reference +% number - used to balance the columns on the last page +% adjust value as needed - may need to be readjusted if +% the document is modified later +%\IEEEtriggeratref{8} +% The "triggered" command can be changed if desired: +%\IEEEtriggercmd{\enlargethispage{-5in}} + +% references section + +% can use a bibliography generated by BibTeX as a .bbl file +% BibTeX documentation can be easily obtained at: +% http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/ +% The IEEEtran BibTeX style support page is at: +% http://www.michaelshell.org/tex/ieeetran/bibtex/ +%\bibliographystyle{IEEEtran} +% argument is your BibTeX string definitions and bibliography database(s) +%\bibliography{IEEEabrv,../bib/paper} +% +% manually copy in the resultant .bbl file +% set second argument of \begin to the number of references +% (used to reserve space for the reference number labels box) +\begin{thebibliography}{1} + +\bibitem{IEEEhowto:kopka} +H.~Kopka and P.~W. Daly, \emph{A Guide to \LaTeX}, 3rd~ed.\hskip 1em plus + 0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999. + +\end{thebibliography} + +% biography section +% +% If you have an EPS/PDF photo (graphicx package needed) extra braces are +% needed around the contents of the optional argument to biography to prevent +% the LaTeX parser from getting confused when it sees the complicated +% \includegraphics command within an optional argument. (You could create +% your own custom macro containing the \includegraphics command to make things +% simpler here.) +%\begin{IEEEbiography}[{\includegraphics[width=1in,height=1.25in,clip,keepaspectratio]{mshell}}]{Michael Shell} +% or if you just want to reserve a space for a photo: + +\begin{IEEEbiography}{Michael Shell} +Biography text here. +\end{IEEEbiography} + +% if you will not have a photo at all: +\begin{IEEEbiographynophoto}{John Doe} +Biography text here. +\end{IEEEbiographynophoto} + +% insert where needed to balance the two columns on the last page with +% biographies +%\newpage + +\begin{IEEEbiographynophoto}{Jane Doe} +Biography text here. +\end{IEEEbiographynophoto} + +% You can push biographies down or up by placing +% a \vfill before or after them. The appropriate +% use of \vfill depends on what kind of text is +% on the last page and whether or not the columns +% are being equalized. + +%\vfill + +% Can be used to pull up biographies so that the bottom of the last one +% is flush with the other column. +%\enlargethispage{-5in} + + + +% that's all folks +\end{document} + + diff -r 000000000000 -r 8319d82cab07 bare_jrnl_compsoc.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bare_jrnl_compsoc.tex Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,793 @@ + +%% bare_jrnl_compsoc.tex +%% V1.4a +%% 2014/09/17 +%% by Michael Shell +%% See: +%% http://www.michaelshell.org/ +%% for current contact information. +%% +%% This is a skeleton file demonstrating the use of IEEEtran.cls +%% (requires IEEEtran.cls version 1.8a or later) with an IEEE +%% Computer Society journal paper. +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% and +%% http://www.ieee.org/ + +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall 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, bare_jrnl_transmag.tex +%%************************************************************************* + + +% *** Authors should verify (and, if needed, correct) their LaTeX system *** +% *** with the testflow diagnostic prior to trusting their LaTeX platform *** +% *** with production work. IEEE's font choices and paper sizes can *** +% *** trigger bugs that do not appear when using other class files. *** *** +% The testflow support page is at: +% http://www.michaelshell.org/tex/testflow/ + + +\documentclass[10pt,journal,compsoc]{IEEEtran} +% +% If IEEEtran.cls has not been installed into the LaTeX system files, +% manually specify the path to it like: +% \documentclass[10pt,journal,compsoc]{../sty/IEEEtran} + + + + + +% Some very useful LaTeX packages include: +% (uncomment the ones you want to load) + + +% *** MISC UTILITY PACKAGES *** +% +%\usepackage{ifpdf} +% Heiko Oberdiek's ifpdf.sty is very useful if you need conditional +% compilation based on whether the output is pdf or dvi. +% usage: +% \ifpdf +% % pdf code +% \else +% % dvi code +% \fi +% The latest version of ifpdf.sty can be obtained from: +% http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/ +% Also, note that IEEEtran.cls V1.7 and later provides a builtin +% \ifCLASSINFOpdf conditional that works the same way. +% When switching from latex to pdflatex and vice-versa, the compiler may +% have to be run twice to clear warning/error messages. + + + + + + +% *** CITATION PACKAGES *** +% +\ifCLASSOPTIONcompsoc + % IEEE Computer Society needs nocompress option + % requires cite.sty v4.0 or later (November 2003) + \usepackage[nocompress]{cite} +\else + % normal IEEE + \usepackage{cite} +\fi +% cite.sty was written by Donald Arseneau +% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package +% \cite{} output to follow that of IEEE. Loading the cite package will +% result in citation numbers being automatically sorted and properly +% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using +% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's +% \cite will automatically add leading space, if needed. Use cite.sty's +% noadjust option (cite.sty V3.8 and later) if you want to turn this off +% such as if a citation ever needs to be enclosed in parenthesis. +% cite.sty is already installed on most LaTeX systems. Be sure and use +% version 5.0 (2009-03-20) and later if using hyperref.sty. +% The latest version can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/cite/ +% The documentation is contained in the cite.sty file itself. +% +% Note that some packages require special options to format as the Computer +% Society requires. In particular, Computer Society papers do not use +% compressed citation ranges as is done in typical IEEE papers +% (e.g., [1]-[4]). Instead, they list every citation separately in order +% (e.g., [1], [2], [3], [4]). To get the latter we need to load the cite +% package with the nocompress option which is supported by cite.sty v4.0 +% and later. Note also the use of a CLASSOPTION conditional provided by +% IEEEtran.cls V1.7 and later. + + + + + +% *** GRAPHICS RELATED PACKAGES *** +% +\ifCLASSINFOpdf + % \usepackage[pdftex]{graphicx} + % declare the path(s) where your graphic files are + % \graphicspath{{../pdf/}{../jpeg/}} + % and their extensions so you won't have to specify these with + % every instance of \includegraphics + % \DeclareGraphicsExtensions{.pdf,.jpeg,.png} +\else + % or other class option (dvipsone, dvipdf, if not using dvips). graphicx + % will default to the driver specified in the system graphics.cfg if no + % driver is specified. + % \usepackage[dvips]{graphicx} + % declare the path(s) where your graphic files are + % \graphicspath{{../eps/}} + % and their extensions so you won't have to specify these with + % every instance of \includegraphics + % \DeclareGraphicsExtensions{.eps} +\fi +% graphicx was written by David Carlisle and Sebastian Rahtz. It is +% required if you want graphics, photos, etc. graphicx.sty is already +% installed on most LaTeX systems. The latest version and documentation +% can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/graphics/ +% Another good source of documentation is "Using Imported Graphics in +% LaTeX2e" by Keith Reckdahl which can be found at: +% http://www.ctan.org/tex-archive/info/epslatex/ +% +% latex, and pdflatex in dvi mode, support graphics in encapsulated +% postscript (.eps) format. pdflatex in pdf mode supports graphics +% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure +% that all non-photo figures use a vector format (.eps, .pdf, .mps) and +% not a bitmapped formats (.jpeg, .png). IEEE frowns on bitmapped formats +% which can result in "jaggedy"/blurry rendering of lines and letters as +% well as large increases in file sizes. +% +% You can find documentation about the pdfTeX application at: +% http://www.tug.org/applications/pdftex + + + + + + +% *** MATH PACKAGES *** +% +%\usepackage[cmex10]{amsmath} +% A popular package from the American Mathematical Society that provides +% many useful and powerful commands for dealing with mathematics. If using +% it, be sure to load this package with the cmex10 option to ensure that +% only type 1 fonts will utilized at all point sizes. Without this option, +% it is possible that some math symbols, particularly those within +% footnotes, will be rendered in bitmap form which will result in a +% document that can not be IEEE Xplore compliant! +% +% Also, note that the amsmath package sets \interdisplaylinepenalty to 10000 +% thus preventing page breaks from occurring within multiline equations. Use: +%\interdisplaylinepenalty=2500 +% after loading amsmath to restore such page breaks as IEEEtran.cls normally +% does. amsmath.sty is already installed on most LaTeX systems. The latest +% version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/amslatex/math/ + + + + + +% *** SPECIALIZED LIST PACKAGES *** +% +%\usepackage{algorithmic} +% algorithmic.sty was written by Peter Williams and Rogerio Brito. +% This package provides an algorithmic environment fo describing algorithms. +% You can use the algorithmic environment in-text or within a figure +% environment to provide for a floating algorithm. Do NOT use the algorithm +% floating environment provided by algorithm.sty (by the same authors) or +% algorithm2e.sty (by Christophe Fiorio) as IEEE does not use dedicated +% algorithm float types and packages that provide these will not provide +% correct IEEE style captions. The latest version and documentation of +% algorithmic.sty can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithms/ +% There is also a support site at: +% http://algorithms.berlios.de/index.html +% Also of interest may be the (relatively newer and more customizable) +% algorithmicx.sty package by Szasz Janos: +% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithmicx/ + + + + +% *** ALIGNMENT PACKAGES *** +% +%\usepackage{array} +% Frank Mittelbach's and David Carlisle's array.sty patches and improves +% the standard LaTeX2e array and tabular environments to provide better +% appearance and additional user controls. As the default LaTeX2e table +% generation code is lacking to the point of almost being broken with +% respect to the quality of the end results, all users are strongly +% advised to use an enhanced (at the very least that provided by array.sty) +% set of table tools. array.sty is already installed on most systems. The +% latest version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/tools/ + + +% IEEEtran contains the IEEEeqnarray family of commands that can be used to +% generate multiline equations as well as matrices, tables, etc., of high +% quality. + + + + +% *** SUBFIGURE PACKAGES *** +%\ifCLASSOPTIONcompsoc +% \usepackage[caption=false,font=footnotesize,labelfont=sf,textfont=sf]{subfig} +%\else +% \usepackage[caption=false,font=footnotesize]{subfig} +%\fi +% subfig.sty, written by Steven Douglas Cochran, is the modern replacement +% for subfigure.sty, the latter of which is no longer maintained and is +% incompatible with some LaTeX packages including fixltx2e. However, +% subfig.sty requires and automatically loads Axel Sommerfeldt's caption.sty +% which will override IEEEtran.cls' handling of captions and this will result +% in non-IEEE style figure/table captions. To prevent this problem, be sure +% and invoke subfig.sty's "caption=false" package option (available since +% subfig.sty version 1.3, 2005/06/28) as this is will preserve IEEEtran.cls +% handling of captions. +% Note that the Computer Society format requires a sans serif font rather +% than the serif font used in traditional IEEE formatting and thus the need +% to invoke different subfig.sty package options depending on whether +% compsoc mode has been enabled. +% +% The latest version and documentation of subfig.sty can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/subfig/ + + + + +% *** FLOAT PACKAGES *** +% +%\usepackage{fixltx2e} +% fixltx2e, the successor to the earlier fix2col.sty, was written by +% Frank Mittelbach and David Carlisle. This package corrects a few problems +% in the LaTeX2e kernel, the most notable of which is that in current +% LaTeX2e releases, the ordering of single and double column floats is not +% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a +% single column figure to be placed prior to an earlier double column +% figure. The latest version and documentation can be found at: +% http://www.ctan.org/tex-archive/macros/latex/base/ + + +%\usepackage{stfloats} +% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e +% the ability to do double column floats at the bottom of the page as well +% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in +% LaTeX2e). It also provides a command: +%\fnbelowfloat +% to enable the placement of footnotes below bottom floats (the standard +% LaTeX2e kernel puts them above bottom floats). This is an invasive package +% which rewrites many portions of the LaTeX2e float routines. It may not work +% with other packages that modify the LaTeX2e float routines. The latest +% version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/sttools/ +% Do not use the stfloats baselinefloat ability as IEEE does not allow +% \baselineskip to stretch. Authors submitting work to the IEEE should note +% that IEEE rarely uses double column equations and that authors should try +% to avoid such use. Do not be tempted to use the cuted.sty or midfloat.sty +% packages (also by Sigitas Tolusis) as IEEE does not format its papers in +% such ways. +% Do not attempt to use stfloats with fixltx2e as they are incompatible. +% Instead, use Morten Hogholm'a dblfloatfix which combines the features +% of both fixltx2e and stfloats: +% +% \usepackage{dblfloatfix} +% The latest version can be found at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/dblfloatfix/ + + + + +%\ifCLASSOPTIONcaptionsoff +% \usepackage[nomarkers]{endfloat} +% \let\MYoriglatexcaption\caption +% \renewcommand{\caption}[2][\relax]{\MYoriglatexcaption[#2]{#2}} +%\fi +% endfloat.sty was written by James Darrell McCauley, Jeff Goldberg and +% Axel Sommerfeldt. This package may be useful when used in conjunction with +% IEEEtran.cls' captionsoff option. Some IEEE journals/societies require that +% submissions have lists of figures/tables at the end of the paper and that +% figures/tables without any captions are placed on a page by themselves at +% the end of the document. If needed, the draftcls IEEEtran class option or +% \CLASSINPUTbaselinestretch interface can be used to increase the line +% spacing as well. Be sure and use the nomarkers option of endfloat to +% prevent endfloat from "marking" where the figures would have been placed +% in the text. The two hack lines of code above are a slight modification of +% that suggested by in the endfloat docs (section 8.4.1) to ensure that +% the full captions always appear in the list of figures/tables - even if +% the user used the short optional argument of \caption[]{}. +% IEEE papers do not typically make use of \caption[]'s optional argument, +% so this should not be an issue. A similar trick can be used to disable +% captions of packages such as subfig.sty that lack options to turn off +% the subcaptions: +% For subfig.sty: +% \let\MYorigsubfloat\subfloat +% \renewcommand{\subfloat}[2][\relax]{\MYorigsubfloat[]{#2}} +% However, the above trick will not work if both optional arguments of +% the \subfloat command are used. Furthermore, there needs to be a +% description of each subfigure *somewhere* and endfloat does not add +% subfigure captions to its list of figures. Thus, the best approach is to +% avoid the use of subfigure captions (many IEEE journals avoid them anyway) +% and instead reference/explain all the subfigures within the main caption. +% The latest version of endfloat.sty and its documentation can obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/endfloat/ +% +% The IEEEtran \ifCLASSOPTIONcaptionsoff conditional can also be used +% later in the document, say, to conditionally put the References on a +% page by themselves. + + + + +% *** PDF, URL AND HYPERLINK PACKAGES *** +% +%\usepackage{url} +% url.sty was written by Donald Arseneau. It provides better support for +% handling and breaking URLs. url.sty is already installed on most LaTeX +% systems. The latest version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/url/ +% Basically, \url{my_url_here}. + + + + + +% *** Do not adjust lengths that control margins, column widths, etc. *** +% *** Do not use packages that alter fonts (such as pslatex). *** +% There should be no need to do such things with IEEEtran.cls V1.6 and later. +% (Unless specifically asked to do so by the journal or conference you plan +% to submit to, of course. ) + + +% correct bad hyphenation here +\hyphenation{op-tical net-works semi-conduc-tor} + + +\begin{document} +% +% paper title +% Titles are generally capitalized except for words such as a, an, and, as, +% at, but, by, for, in, nor, of, on, or, the, to and up, which are usually +% not capitalized unless they are the first or last word of the title. +% Linebreaks \\ can be used within to get better formatting as desired. +% Do not put math or special symbols in the title. +\title{Bare Demo of IEEEtran.cls\\ for Computer Society Journals} +% +% +% author names and IEEE memberships +% note positions of commas and nonbreaking spaces ( ~ ) LaTeX will not break +% a structure at a ~ so this keeps an author's name from being broken across +% two lines. +% use \thanks{} to gain access to the first footnote area +% a separate \thanks must be used for each paragraph as LaTeX2e's \thanks +% was not built to handle multiple paragraphs +% +% +%\IEEEcompsocitemizethanks is a special \thanks that produces the bulleted +% lists the Computer Society journals use for "first footnote" author +% affiliations. Use \IEEEcompsocthanksitem which works much like \item +% for each affiliation group. When not in compsoc mode, +% \IEEEcompsocitemizethanks becomes like \thanks and +% \IEEEcompsocthanksitem becomes a line break with idention. This +% facilitates dual compilation, although admittedly the differences in the +% desired content of \author between the different types of papers makes a +% one-size-fits-all approach a daunting prospect. For instance, compsoc +% journal papers have the author affiliations above the "Manuscript +% received ..." text while in non-compsoc journals this is reversed. Sigh. + +\author{Michael~Shell,~\IEEEmembership{Member,~IEEE,} + John~Doe,~\IEEEmembership{Fellow,~OSA,} + and~Jane~Doe,~\IEEEmembership{Life~Fellow,~IEEE}% <-this % stops a space +\IEEEcompsocitemizethanks{\IEEEcompsocthanksitem M. Shell is with the Department +of Electrical and Computer Engineering, Georgia Institute of Technology, Atlanta, +GA, 30332.\protect\\ +% note need leading \protect in front of \\ to get a newline within \thanks as +% \\ is fragile and will error, could use \hfil\break instead. +E-mail: see http://www.michaelshell.org/contact.html +\IEEEcompsocthanksitem J. Doe and J. Doe are with Anonymous University.}% <-this % stops an unwanted space +\thanks{Manuscript received April 19, 2005; revised September 17, 2014.}} + +% note the % following the last \IEEEmembership and also \thanks - +% these prevent an unwanted space from occurring between the last author name +% and the end of the author line. i.e., if you had this: +% +% \author{....lastname \thanks{...} \thanks{...} } +% ^------------^------------^----Do not want these spaces! +% +% a space would be appended to the last name and could cause every name on that +% line to be shifted left slightly. This is one of those "LaTeX things". For +% instance, "\textbf{A} \textbf{B}" will typeset as "A B" not "AB". To get +% "AB" then you have to do: "\textbf{A}\textbf{B}" +% \thanks is no different in this regard, so shield the last } of each \thanks +% that ends a line with a % and do not let a space in before the next \thanks. +% Spaces after \IEEEmembership other than the last one are OK (and needed) as +% you are supposed to have spaces between the names. For what it is worth, +% this is a minor point as most people would not even notice if the said evil +% space somehow managed to creep in. + + + +% The paper headers +\markboth{Journal of \LaTeX\ Class Files,~Vol.~13, No.~9, September~2014}% +{Shell \MakeLowercase{\textit{et al.}}: Bare Demo of IEEEtran.cls for Computer Society Journals} +% The only time the second header will appear is for the odd numbered pages +% after the title page when using the twoside option. +% +% *** Note that you probably will NOT want to include the author's *** +% *** name in the headers of peer review papers. *** +% You can use \ifCLASSOPTIONpeerreview for conditional compilation here if +% you desire. + + + +% The publisher's ID mark at the bottom of the page is less important with +% Computer Society journal papers as those publications place the marks +% outside of the main text columns and, therefore, unlike regular IEEE +% journals, the available text space is not reduced by their presence. +% If you want to put a publisher's ID mark on the page you can do it like +% this: +%\IEEEpubid{0000--0000/00\$00.00~\copyright~2014 IEEE} +% or like this to get the Computer Society new two part style. +%\IEEEpubid{\makebox[\columnwidth]{\hfill 0000--0000/00/\$00.00~\copyright~2014 IEEE}% +%\hspace{\columnsep}\makebox[\columnwidth]{Published by the IEEE Computer Society\hfill}} +% Remember, if you use this you must call \IEEEpubidadjcol in the second +% column for its text to clear the IEEEpubid mark (Computer Society jorunal +% papers don't need this extra clearance.) + + + +% use for special paper notices +%\IEEEspecialpapernotice{(Invited Paper)} + + + +% for Computer Society papers, we must declare the abstract and index terms +% PRIOR to the title within the \IEEEtitleabstractindextext IEEEtran +% command as these need to go into the title area created by \maketitle. +% As a general rule, do not put math, special symbols or citations +% in the abstract or keywords. +\IEEEtitleabstractindextext{% +\begin{abstract} +The abstract goes here. +\end{abstract} + +% Note that keywords are not normally used for peerreview papers. +\begin{IEEEkeywords} +Computer Society, IEEEtran, journal, \LaTeX, paper, template. +\end{IEEEkeywords}} + + +% make the title area +\maketitle + + +% To allow for easy dual compilation without having to reenter the +% abstract/keywords data, the \IEEEtitleabstractindextext text will +% not be used in maketitle, but will appear (i.e., to be "transported") +% here as \IEEEdisplaynontitleabstractindextext when the compsoc +% or transmag modes are not selected if conference mode is selected +% - because all conference papers position the abstract like regular +% papers do. +\IEEEdisplaynontitleabstractindextext +% \IEEEdisplaynontitleabstractindextext has no effect when using +% compsoc or transmag under a non-conference mode. + + + +% For peer review papers, you can put extra information on the cover +% page as needed: +% \ifCLASSOPTIONpeerreview +% \begin{center} \bfseries EDICS Category: 3-BBND \end{center} +% \fi +% +% For peerreview papers, this IEEEtran command inserts a page break and +% creates the second title. It will be ignored for other modes. +\IEEEpeerreviewmaketitle + + + +\IEEEraisesectionheading{\section{Introduction}\label{sec:introduction}} +% Computer Society journal (but not conference!) papers do something unusual +% with the very first section heading (almost always called "Introduction"). +% They place it ABOVE the main text! IEEEtran.cls does not automatically do +% this for you, but you can achieve this effect with the provided +% \IEEEraisesectionheading{} command. Note the need to keep any \label that +% is to refer to the section immediately after \section in the above as +% \IEEEraisesectionheading puts \section within a raised box. + + + + +% The very first letter is a 2 line initial drop letter followed +% by the rest of the first word in caps (small caps for compsoc). +% +% form to use if the first word consists of a single letter: +% \IEEEPARstart{A}{demo} file is .... +% +% form to use if you need the single drop letter followed by +% normal text (unknown if ever used by IEEE): +% \IEEEPARstart{A}{}demo file is .... +% +% Some journals put the first two words in caps: +% \IEEEPARstart{T}{his demo} file is .... +% +% Here we have the typical use of a "T" for an initial drop letter +% and "HIS" in caps to complete the first word. +\IEEEPARstart{T}{his} demo file is intended to serve as a ``starter file'' +for IEEE Computer Society journal papers produced under \LaTeX\ using +IEEEtran.cls version 1.8a and later. +% You must have at least 2 lines in the paragraph with the drop letter +% (should never be an issue) +I wish you the best of success. + +\hfill mds + +\hfill September 17, 2014 + +\subsection{Subsection Heading Here} +Subsection text here. + +% needed in second column of first page if using \IEEEpubid +%\IEEEpubidadjcol + +\subsubsection{Subsubsection Heading Here} +Subsubsection text here. + + +% An example of a floating figure using the graphicx package. +% Note that \label must occur AFTER (or within) \caption. +% For figures, \caption should occur after the \includegraphics. +% Note that IEEEtran v1.7 and later has special internal code that +% is designed to preserve the operation of \label within \caption +% even when the captionsoff option is in effect. However, because +% of issues like this, it may be the safest practice to put all your +% \label just after \caption rather than within \caption{}. +% +% Reminder: the "draftcls" or "draftclsnofoot", not "draft", class +% option should be used if it is desired that the figures are to be +% displayed while in draft mode. +% +%\begin{figure}[!t] +%\centering +%\includegraphics[width=2.5in]{myfigure} +% where an .eps filename suffix will be assumed under latex, +% and a .pdf suffix will be assumed for pdflatex; or what has been declared +% via \DeclareGraphicsExtensions. +%\caption{Simulation results for the network.} +%\label{fig_sim} +%\end{figure} + +% Note that IEEE typically puts floats only at the top, even when this +% results in a large percentage of a column being occupied by floats. +% However, the Computer Society has been known to put floats at the bottom. + + +% An example of a double column floating figure using two subfigures. +% (The subfig.sty package must be loaded for this to work.) +% The subfigure \label commands are set within each subfloat command, +% and the \label for the overall figure must come after \caption. +% \hfil is used as a separator to get equal spacing. +% Watch out that the combined width of all the subfigures on a +% line do not exceed the text width or a line break will occur. +% +%\begin{figure*}[!t] +%\centering +%\subfloat[Case I]{\includegraphics[width=2.5in]{box}% +%\label{fig_first_case}} +%\hfil +%\subfloat[Case II]{\includegraphics[width=2.5in]{box}% +%\label{fig_second_case}} +%\caption{Simulation results for the network.} +%\label{fig_sim} +%\end{figure*} +% +% Note that often IEEE papers with subfigures do not employ subfigure +% captions (using the optional argument to \subfloat[]), but instead will +% reference/describe all of them (a), (b), etc., within the main caption. +% Be aware that for subfig.sty to generate the (a), (b), etc., subfigure +% labels, the optional argument to \subfloat must be present. If a +% subcaption is not desired, just leave its contents blank, +% e.g., \subfloat[]. + + +% An example of a floating table. Note that, for IEEE style tables, the +% \caption command should come BEFORE the table and, given that table +% captions serve much like titles, are usually capitalized except for words +% such as a, an, and, as, at, but, by, for, in, nor, of, on, or, the, to +% and up, which are usually not capitalized unless they are the first or +% last word of the caption. Table text will default to \footnotesize as +% IEEE normally uses this smaller font for tables. +% The \label must come after \caption as always. +% +%\begin{table}[!t] +%% increase table row spacing, adjust to taste +%\renewcommand{\arraystretch}{1.3} +% if using array.sty, it might be a good idea to tweak the value of +% \extrarowheight as needed to properly center the text within the cells +%\caption{An Example of a Table} +%\label{table_example} +%\centering +%% Some packages, such as MDW tools, offer better commands for making tables +%% than the plain LaTeX2e tabular which is used here. +%\begin{tabular}{|c||c|} +%\hline +%One & Two\\ +%\hline +%Three & Four\\ +%\hline +%\end{tabular} +%\end{table} + + +% Note that the IEEE does not put floats in the very first column +% - or typically anywhere on the first page for that matter. Also, +% in-text middle ("here") positioning is typically not used, but it +% is allowed and encouraged for Computer Society conferences (but +% not Computer Society journals). Most IEEE journals/conferences use +% top floats exclusively. +% Note that, LaTeX2e, unlike IEEE journals/conferences, places +% footnotes above bottom floats. This can be corrected via the +% \fnbelowfloat command of the stfloats package. + + + + +\section{Conclusion} +The conclusion goes here. + + + + + +% if have a single appendix: +%\appendix[Proof of the Zonklar Equations] +% or +%\appendix % for no appendix heading +% do not use \section anymore after \appendix, only \section* +% is possibly needed + +% use appendices with more than one appendix +% then use \section to start each appendix +% you must declare a \section before using any +% \subsection or using \label (\appendices by itself +% starts a section numbered zero.) +% + + +\appendices +\section{Proof of the First Zonklar Equation} +Appendix one text goes here. + +% you can choose not to have a title for an appendix +% if you want by leaving the argument blank +\section{} +Appendix two text goes here. + + +% use section* for acknowledgment +\ifCLASSOPTIONcompsoc + % The Computer Society usually uses the plural form + \section*{Acknowledgments} +\else + % regular IEEE prefers the singular form + \section*{Acknowledgment} +\fi + + +The authors would like to thank... + + +% Can use something like this to put references on a page +% by themselves when using endfloat and the captionsoff option. +\ifCLASSOPTIONcaptionsoff + \newpage +\fi + + + +% trigger a \newpage just before the given reference +% number - used to balance the columns on the last page +% adjust value as needed - may need to be readjusted if +% the document is modified later +%\IEEEtriggeratref{8} +% The "triggered" command can be changed if desired: +%\IEEEtriggercmd{\enlargethispage{-5in}} + +% references section + +% can use a bibliography generated by BibTeX as a .bbl file +% BibTeX documentation can be easily obtained at: +% http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/ +% The IEEEtran BibTeX style support page is at: +% http://www.michaelshell.org/tex/ieeetran/bibtex/ +%\bibliographystyle{IEEEtran} +% argument is your BibTeX string definitions and bibliography database(s) +%\bibliography{IEEEabrv,../bib/paper} +% +% manually copy in the resultant .bbl file +% set second argument of \begin to the number of references +% (used to reserve space for the reference number labels box) +\begin{thebibliography}{1} + +\bibitem{IEEEhowto:kopka} +H.~Kopka and P.~W. Daly, \emph{A Guide to \LaTeX}, 3rd~ed.\hskip 1em plus + 0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999. + +\end{thebibliography} + +% biography section +% +% If you have an EPS/PDF photo (graphicx package needed) extra braces are +% needed around the contents of the optional argument to biography to prevent +% the LaTeX parser from getting confused when it sees the complicated +% \includegraphics command within an optional argument. (You could create +% your own custom macro containing the \includegraphics command to make things +% simpler here.) +%\begin{IEEEbiography}[{\includegraphics[width=1in,height=1.25in,clip,keepaspectratio]{mshell}}]{Michael Shell} +% or if you just want to reserve a space for a photo: + +\begin{IEEEbiography}{Michael Shell} +Biography text here. +\end{IEEEbiography} + +% if you will not have a photo at all: +\begin{IEEEbiographynophoto}{John Doe} +Biography text here. +\end{IEEEbiographynophoto} + +% insert where needed to balance the two columns on the last page with +% biographies +%\newpage + +\begin{IEEEbiographynophoto}{Jane Doe} +Biography text here. +\end{IEEEbiographynophoto} + +% You can push biographies down or up by placing +% a \vfill before or after them. The appropriate +% use of \vfill depends on what kind of text is +% on the last page and whether or not the columns +% are being equalized. + +%\vfill + +% Can be used to pull up biographies so that the bottom of the last one +% is flush with the other column. +%\enlargethispage{-5in} + + + +% that's all folks +\end{document} + + diff -r 000000000000 -r 8319d82cab07 bare_jrnl_transmag.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bare_jrnl_transmag.tex Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,720 @@ + +%% bare_jrnl_transmag.tex +%% V1.4a +%% 2014/09/17 +%% by Michael Shell +%% see http://www.michaelshell.org/ +%% for current contact information. +%% +%% This is a skeleton file demonstrating the use of IEEEtran.cls +%% (requires IEEEtran.cls version 1.8a or later) with an IEEE +%% Transactions on Magnetics journal paper. +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% and +%% http://www.ieee.org/ + +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall 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, bare_jrnl_transmag.tex +%%************************************************************************* + + +% *** Authors should verify (and, if needed, correct) their LaTeX system *** +% *** with the testflow diagnostic prior to trusting their LaTeX platform *** +% *** with production work. IEEE's font choices and paper sizes can *** +% *** trigger bugs that do not appear when using other class files. *** *** +% The testflow support page is at: +% http://www.michaelshell.org/tex/testflow/ + + + +\documentclass[journal,transmag]{IEEEtran} +% +% If IEEEtran.cls has not been installed into the LaTeX system files, +% manually specify the path to it like: +% \documentclass[journal]{../sty/IEEEtran} + + + + + +% Some very useful LaTeX packages include: +% (uncomment the ones you want to load) + + +% *** MISC UTILITY PACKAGES *** +% +%\usepackage{ifpdf} +% Heiko Oberdiek's ifpdf.sty is very useful if you need conditional +% compilation based on whether the output is pdf or dvi. +% usage: +% \ifpdf +% % pdf code +% \else +% % dvi code +% \fi +% The latest version of ifpdf.sty can be obtained from: +% http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/ +% Also, note that IEEEtran.cls V1.7 and later provides a builtin +% \ifCLASSINFOpdf conditional that works the same way. +% When switching from latex to pdflatex and vice-versa, the compiler may +% have to be run twice to clear warning/error messages. + + + + + + +% *** CITATION PACKAGES *** +% +%\usepackage{cite} +% cite.sty was written by Donald Arseneau +% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package +% \cite{} output to follow that of IEEE. Loading the cite package will +% result in citation numbers being automatically sorted and properly +% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using +% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's +% \cite will automatically add leading space, if needed. Use cite.sty's +% noadjust option (cite.sty V3.8 and later) if you want to turn this off +% such as if a citation ever needs to be enclosed in parenthesis. +% cite.sty is already installed on most LaTeX systems. Be sure and use +% version 5.0 (2009-03-20) and later if using hyperref.sty. +% The latest version can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/cite/ +% The documentation is contained in the cite.sty file itself. + + + + + + +% *** GRAPHICS RELATED PACKAGES *** +% +\ifCLASSINFOpdf + % \usepackage[pdftex]{graphicx} + % declare the path(s) where your graphic files are + % \graphicspath{{../pdf/}{../jpeg/}} + % and their extensions so you won't have to specify these with + % every instance of \includegraphics + % \DeclareGraphicsExtensions{.pdf,.jpeg,.png} +\else + % or other class option (dvipsone, dvipdf, if not using dvips). graphicx + % will default to the driver specified in the system graphics.cfg if no + % driver is specified. + % \usepackage[dvips]{graphicx} + % declare the path(s) where your graphic files are + % \graphicspath{{../eps/}} + % and their extensions so you won't have to specify these with + % every instance of \includegraphics + % \DeclareGraphicsExtensions{.eps} +\fi +% graphicx was written by David Carlisle and Sebastian Rahtz. It is +% required if you want graphics, photos, etc. graphicx.sty is already +% installed on most LaTeX systems. The latest version and documentation +% can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/graphics/ +% Another good source of documentation is "Using Imported Graphics in +% LaTeX2e" by Keith Reckdahl which can be found at: +% http://www.ctan.org/tex-archive/info/epslatex/ +% +% latex, and pdflatex in dvi mode, support graphics in encapsulated +% postscript (.eps) format. pdflatex in pdf mode supports graphics +% in .pdf, .jpeg, .png and .mps (metapost) formats. Users should ensure +% that all non-photo figures use a vector format (.eps, .pdf, .mps) and +% not a bitmapped formats (.jpeg, .png). IEEE frowns on bitmapped formats +% which can result in "jaggedy"/blurry rendering of lines and letters as +% well as large increases in file sizes. +% +% You can find documentation about the pdfTeX application at: +% http://www.tug.org/applications/pdftex + + + + +% *** MATH PACKAGES *** +% +%\usepackage[cmex10]{amsmath} +% A popular package from the American Mathematical Society that provides +% many useful and powerful commands for dealing with mathematics. If using +% it, be sure to load this package with the cmex10 option to ensure that +% only type 1 fonts will utilized at all point sizes. Without this option, +% it is possible that some math symbols, particularly those within +% footnotes, will be rendered in bitmap form which will result in a +% document that can not be IEEE Xplore compliant! +% +% Also, note that the amsmath package sets \interdisplaylinepenalty to 10000 +% thus preventing page breaks from occurring within multiline equations. Use: +%\interdisplaylinepenalty=2500 +% after loading amsmath to restore such page breaks as IEEEtran.cls normally +% does. amsmath.sty is already installed on most LaTeX systems. The latest +% version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/amslatex/math/ + + + + + +% *** SPECIALIZED LIST PACKAGES *** +% +%\usepackage{algorithmic} +% algorithmic.sty was written by Peter Williams and Rogerio Brito. +% This package provides an algorithmic environment fo describing algorithms. +% You can use the algorithmic environment in-text or within a figure +% environment to provide for a floating algorithm. Do NOT use the algorithm +% floating environment provided by algorithm.sty (by the same authors) or +% algorithm2e.sty (by Christophe Fiorio) as IEEE does not use dedicated +% algorithm float types and packages that provide these will not provide +% correct IEEE style captions. The latest version and documentation of +% algorithmic.sty can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithms/ +% There is also a support site at: +% http://algorithms.berlios.de/index.html +% Also of interest may be the (relatively newer and more customizable) +% algorithmicx.sty package by Szasz Janos: +% http://www.ctan.org/tex-archive/macros/latex/contrib/algorithmicx/ + + + + +% *** ALIGNMENT PACKAGES *** +% +%\usepackage{array} +% Frank Mittelbach's and David Carlisle's array.sty patches and improves +% the standard LaTeX2e array and tabular environments to provide better +% appearance and additional user controls. As the default LaTeX2e table +% generation code is lacking to the point of almost being broken with +% respect to the quality of the end results, all users are strongly +% advised to use an enhanced (at the very least that provided by array.sty) +% set of table tools. array.sty is already installed on most systems. The +% latest version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/required/tools/ + + +% IEEEtran contains the IEEEeqnarray family of commands that can be used to +% generate multiline equations as well as matrices, tables, etc., of high +% quality. + + + + +% *** SUBFIGURE PACKAGES *** +%\ifCLASSOPTIONcompsoc +% \usepackage[caption=false,font=normalsize,labelfont=sf,textfont=sf]{subfig} +%\else +% \usepackage[caption=false,font=footnotesize]{subfig} +%\fi +% subfig.sty, written by Steven Douglas Cochran, is the modern replacement +% for subfigure.sty, the latter of which is no longer maintained and is +% incompatible with some LaTeX packages including fixltx2e. However, +% subfig.sty requires and automatically loads Axel Sommerfeldt's caption.sty +% which will override IEEEtran.cls' handling of captions and this will result +% in non-IEEE style figure/table captions. To prevent this problem, be sure +% and invoke subfig.sty's "caption=false" package option (available since +% subfig.sty version 1.3, 2005/06/28) as this is will preserve IEEEtran.cls +% handling of captions. +% Note that the Computer Society format requires a larger sans serif font +% than the serif footnote size font used in traditional IEEE formatting +% and thus the need to invoke different subfig.sty package options depending +% on whether compsoc mode has been enabled. +% +% The latest version and documentation of subfig.sty can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/subfig/ + + + +% *** FLOAT PACKAGES *** +% +%\usepackage{fixltx2e} +% fixltx2e, the successor to the earlier fix2col.sty, was written by +% Frank Mittelbach and David Carlisle. This package corrects a few problems +% in the LaTeX2e kernel, the most notable of which is that in current +% LaTeX2e releases, the ordering of single and double column floats is not +% guaranteed to be preserved. Thus, an unpatched LaTeX2e can allow a +% single column figure to be placed prior to an earlier double column +% figure. The latest version and documentation can be found at: +% http://www.ctan.org/tex-archive/macros/latex/base/ + + +%\usepackage{stfloats} +% stfloats.sty was written by Sigitas Tolusis. This package gives LaTeX2e +% the ability to do double column floats at the bottom of the page as well +% as the top. (e.g., "\begin{figure*}[!b]" is not normally possible in +% LaTeX2e). It also provides a command: +%\fnbelowfloat +% to enable the placement of footnotes below bottom floats (the standard +% LaTeX2e kernel puts them above bottom floats). This is an invasive package +% which rewrites many portions of the LaTeX2e float routines. It may not work +% with other packages that modify the LaTeX2e float routines. The latest +% version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/sttools/ +% Do not use the stfloats baselinefloat ability as IEEE does not allow +% \baselineskip to stretch. Authors submitting work to the IEEE should note +% that IEEE rarely uses double column equations and that authors should try +% to avoid such use. Do not be tempted to use the cuted.sty or midfloat.sty +% packages (also by Sigitas Tolusis) as IEEE does not format its papers in +% such ways. +% Do not attempt to use stfloats with fixltx2e as they are incompatible. +% Instead, use Morten Hogholm'a dblfloatfix which combines the features +% of both fixltx2e and stfloats: +% +% \usepackage{dblfloatfix} +% The latest version can be found at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/dblfloatfix/ + + + + +%\ifCLASSOPTIONcaptionsoff +% \usepackage[nomarkers]{endfloat} +% \let\MYoriglatexcaption\caption +% \renewcommand{\caption}[2][\relax]{\MYoriglatexcaption[#2]{#2}} +%\fi +% endfloat.sty was written by James Darrell McCauley, Jeff Goldberg and +% Axel Sommerfeldt. This package may be useful when used in conjunction with +% IEEEtran.cls' captionsoff option. Some IEEE journals/societies require that +% submissions have lists of figures/tables at the end of the paper and that +% figures/tables without any captions are placed on a page by themselves at +% the end of the document. If needed, the draftcls IEEEtran class option or +% \CLASSINPUTbaselinestretch interface can be used to increase the line +% spacing as well. Be sure and use the nomarkers option of endfloat to +% prevent endfloat from "marking" where the figures would have been placed +% in the text. The two hack lines of code above are a slight modification of +% that suggested by in the endfloat docs (section 8.4.1) to ensure that +% the full captions always appear in the list of figures/tables - even if +% the user used the short optional argument of \caption[]{}. +% IEEE papers do not typically make use of \caption[]'s optional argument, +% so this should not be an issue. A similar trick can be used to disable +% captions of packages such as subfig.sty that lack options to turn off +% the subcaptions: +% For subfig.sty: +% \let\MYorigsubfloat\subfloat +% \renewcommand{\subfloat}[2][\relax]{\MYorigsubfloat[]{#2}} +% However, the above trick will not work if both optional arguments of +% the \subfloat command are used. Furthermore, there needs to be a +% description of each subfigure *somewhere* and endfloat does not add +% subfigure captions to its list of figures. Thus, the best approach is to +% avoid the use of subfigure captions (many IEEE journals avoid them anyway) +% and instead reference/explain all the subfigures within the main caption. +% The latest version of endfloat.sty and its documentation can obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/endfloat/ +% +% The IEEEtran \ifCLASSOPTIONcaptionsoff conditional can also be used +% later in the document, say, to conditionally put the References on a +% page by themselves. + + + + +% *** PDF, URL AND HYPERLINK PACKAGES *** +% +%\usepackage{url} +% url.sty was written by Donald Arseneau. It provides better support for +% handling and breaking URLs. url.sty is already installed on most LaTeX +% systems. The latest version and documentation can be obtained at: +% http://www.ctan.org/tex-archive/macros/latex/contrib/url/ +% Basically, \url{my_url_here}. + + + + +% *** Do not adjust lengths that control margins, column widths, etc. *** +% *** Do not use packages that alter fonts (such as pslatex). *** +% There should be no need to do such things with IEEEtran.cls V1.6 and later. +% (Unless specifically asked to do so by the journal or conference you plan +% to submit to, of course. ) + + +% correct bad hyphenation here +\hyphenation{op-tical net-works semi-conduc-tor} + + +\begin{document} +% +% paper title +% Titles are generally capitalized except for words such as a, an, and, as, +% at, but, by, for, in, nor, of, on, or, the, to and up, which are usually +% not capitalized unless they are the first or last word of the title. +% Linebreaks \\ can be used within to get better formatting as desired. +% Do not put math or special symbols in the title. +\title{Bare Demo of IEEEtran.cls for \textsc{Transactions on Magnetics}} + + + +% author names and affiliations +% transmag papers use the long conference author name format. + +\author{\IEEEauthorblockN{Michael Shell\IEEEauthorrefmark{1}, +Homer Simpson\IEEEauthorrefmark{2}, +James Kirk\IEEEauthorrefmark{3}, +Montgomery Scott\IEEEauthorrefmark{3}, and +Eldon Tyrell\IEEEauthorrefmark{4},~\IEEEmembership{Fellow,~IEEE}} +\IEEEauthorblockA{\IEEEauthorrefmark{1}School of Electrical and Computer Engineering, +Georgia Institute of Technology, Atlanta, GA 30332 USA} +\IEEEauthorblockA{\IEEEauthorrefmark{2}Twentieth Century Fox, Springfield, USA} +\IEEEauthorblockA{\IEEEauthorrefmark{3}Starfleet Academy, San Francisco, CA 96678 USA} +\IEEEauthorblockA{\IEEEauthorrefmark{4}Tyrell Inc., 123 Replicant Street, Los Angeles, CA 90210 USA}% <-this % stops an unwanted space +\thanks{Manuscript received December 1, 2012; revised September 17, 2014. +Corresponding author: M. Shell (email: http://www.michaelshell.org/contact.html).}} + + + +% The paper headers +\markboth{Journal of \LaTeX\ Class Files,~Vol.~13, No.~9, September~2014}% +{Shell \MakeLowercase{\textit{et al.}}: Bare Demo of IEEEtran.cls for Journals} +% The only time the second header will appear is for the odd numbered pages +% after the title page when using the twoside option. +% +% *** Note that you probably will NOT want to include the author's *** +% *** name in the headers of peer review papers. *** +% You can use \ifCLASSOPTIONpeerreview for conditional compilation here if +% you desire. + + + + +% If you want to put a publisher's ID mark on the page you can do it like +% this: +%\IEEEpubid{0000--0000/00\$00.00~\copyright~2014 IEEE} +% Remember, if you use this you must call \IEEEpubidadjcol in the second +% column for its text to clear the IEEEpubid mark. + + + +% use for special paper notices +%\IEEEspecialpapernotice{(Invited Paper)} + + +% for Transactions on Magnetics papers, we must declare the abstract and +% index terms PRIOR to the title within the \IEEEtitleabstractindextext +% IEEEtran command as these need to go into the title area created by +% \maketitle. +% As a general rule, do not put math, special symbols or citations +% in the abstract or keywords. +\IEEEtitleabstractindextext{% +\begin{abstract} +The abstract goes here. +\end{abstract} + +% Note that keywords are not normally used for peerreview papers. +\begin{IEEEkeywords} +IEEEtran, journal, \LaTeX, magnetics, paper, template. +\end{IEEEkeywords}} + + + +% make the title area +\maketitle + + +% To allow for easy dual compilation without having to reenter the +% abstract/keywords data, the \IEEEtitleabstractindextext text will +% not be used in maketitle, but will appear (i.e., to be "transported") +% here as \IEEEdisplaynontitleabstractindextext when the compsoc +% or transmag modes are not selected if conference mode is selected +% - because all conference papers position the abstract like regular +% papers do. +\IEEEdisplaynontitleabstractindextext +% \IEEEdisplaynontitleabstractindextext has no effect when using +% compsoc or transmag under a non-conference mode. + + + + + + + +% For peer review papers, you can put extra information on the cover +% page as needed: +% \ifCLASSOPTIONpeerreview +% \begin{center} \bfseries EDICS Category: 3-BBND \end{center} +% \fi +% +% For peerreview papers, this IEEEtran command inserts a page break and +% creates the second title. It will be ignored for other modes. +\IEEEpeerreviewmaketitle + + + +\section{Introduction} +% The very first letter is a 2 line initial drop letter followed +% by the rest of the first word in caps. +% +% form to use if the first word consists of a single letter: +% \IEEEPARstart{A}{demo} file is .... +% +% form to use if you need the single drop letter followed by +% normal text (unknown if ever used by IEEE): +% \IEEEPARstart{A}{}demo file is .... +% +% Some journals put the first two words in caps: +% \IEEEPARstart{T}{his demo} file is .... +% +% Here we have the typical use of a "T" for an initial drop letter +% and "HIS" in caps to complete the first word. +\IEEEPARstart{T}{his} demo file is intended to serve as a ``starter file'' +for IEEE \textsc{Transactions on Magnetics} journal papers produced under \LaTeX\ using +IEEEtran.cls version 1.8a and later. +% You must have at least 2 lines in the paragraph with the drop letter +% (should never be an issue) +I wish you the best of success. + +\hfill mds + +\hfill September 17, 2014 + +\subsection{Subsection Heading Here} +Subsection text here. + +% needed in second column of first page if using \IEEEpubid +%\IEEEpubidadjcol + +\subsubsection{Subsubsection Heading Here} +Subsubsection text here. + + +% An example of a floating figure using the graphicx package. +% Note that \label must occur AFTER (or within) \caption. +% For figures, \caption should occur after the \includegraphics. +% Note that IEEEtran v1.7 and later has special internal code that +% is designed to preserve the operation of \label within \caption +% even when the captionsoff option is in effect. However, because +% of issues like this, it may be the safest practice to put all your +% \label just after \caption rather than within \caption{}. +% +% Reminder: the "draftcls" or "draftclsnofoot", not "draft", class +% option should be used if it is desired that the figures are to be +% displayed while in draft mode. +% +%\begin{figure}[!t] +%\centering +%\includegraphics[width=2.5in]{myfigure} +% where an .eps filename suffix will be assumed under latex, +% and a .pdf suffix will be assumed for pdflatex; or what has been declared +% via \DeclareGraphicsExtensions. +%\caption{Simulation results for the network.} +%\label{fig_sim} +%\end{figure} + +% Note that IEEE typically puts floats only at the top, even when this +% results in a large percentage of a column being occupied by floats. + + +% An example of a double column floating figure using two subfigures. +% (The subfig.sty package must be loaded for this to work.) +% The subfigure \label commands are set within each subfloat command, +% and the \label for the overall figure must come after \caption. +% \hfil is used as a separator to get equal spacing. +% Watch out that the combined width of all the subfigures on a +% line do not exceed the text width or a line break will occur. +% +%\begin{figure*}[!t] +%\centering +%\subfloat[Case I]{\includegraphics[width=2.5in]{box}% +%\label{fig_first_case}} +%\hfil +%\subfloat[Case II]{\includegraphics[width=2.5in]{box}% +%\label{fig_second_case}} +%\caption{Simulation results for the network.} +%\label{fig_sim} +%\end{figure*} +% +% Note that often IEEE papers with subfigures do not employ subfigure +% captions (using the optional argument to \subfloat[]), but instead will +% reference/describe all of them (a), (b), etc., within the main caption. +% Be aware that for subfig.sty to generate the (a), (b), etc., subfigure +% labels, the optional argument to \subfloat must be present. If a +% subcaption is not desired, just leave its contents blank, +% e.g., \subfloat[]. + + +% An example of a floating table. Note that, for IEEE style tables, the +% \caption command should come BEFORE the table and, given that table +% captions serve much like titles, are usually capitalized except for words +% such as a, an, and, as, at, but, by, for, in, nor, of, on, or, the, to +% and up, which are usually not capitalized unless they are the first or +% last word of the caption. Table text will default to \footnotesize as +% IEEE normally uses this smaller font for tables. +% The \label must come after \caption as always. +% +%\begin{table}[!t] +%% increase table row spacing, adjust to taste +%\renewcommand{\arraystretch}{1.3} +% if using array.sty, it might be a good idea to tweak the value of +% \extrarowheight as needed to properly center the text within the cells +%\caption{An Example of a Table} +%\label{table_example} +%\centering +%% Some packages, such as MDW tools, offer better commands for making tables +%% than the plain LaTeX2e tabular which is used here. +%\begin{tabular}{|c||c|} +%\hline +%One & Two\\ +%\hline +%Three & Four\\ +%\hline +%\end{tabular} +%\end{table} + + +% Note that the IEEE does not put floats in the very first column +% - or typically anywhere on the first page for that matter. Also, +% in-text middle ("here") positioning is typically not used, but it +% is allowed and encouraged for Computer Society conferences (but +% not Computer Society journals). Most IEEE journals/conferences use +% top floats exclusively. +% Note that, LaTeX2e, unlike IEEE journals/conferences, places +% footnotes above bottom floats. This can be corrected via the +% \fnbelowfloat command of the stfloats package. + + + + +\section{Conclusion} +The conclusion goes here. + + + + + +% if have a single appendix: +%\appendix[Proof of the Zonklar Equations] +% or +%\appendix % for no appendix heading +% do not use \section anymore after \appendix, only \section* +% is possibly needed + +% use appendices with more than one appendix +% then use \section to start each appendix +% you must declare a \section before using any +% \subsection or using \label (\appendices by itself +% starts a section numbered zero.) +% + + +\appendices +\section{Proof of the First Zonklar Equation} +Appendix one text goes here. + +% you can choose not to have a title for an appendix +% if you want by leaving the argument blank +\section{} +Appendix two text goes here. + + +% use section* for acknowledgment +\section*{Acknowledgment} + + +The authors would like to thank... + + +% Can use something like this to put references on a page +% by themselves when using endfloat and the captionsoff option. +\ifCLASSOPTIONcaptionsoff + \newpage +\fi + + + +% trigger a \newpage just before the given reference +% number - used to balance the columns on the last page +% adjust value as needed - may need to be readjusted if +% the document is modified later +%\IEEEtriggeratref{8} +% The "triggered" command can be changed if desired: +%\IEEEtriggercmd{\enlargethispage{-5in}} + +% references section + +% can use a bibliography generated by BibTeX as a .bbl file +% BibTeX documentation can be easily obtained at: +% http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/ +% The IEEEtran BibTeX style support page is at: +% http://www.michaelshell.org/tex/ieeetran/bibtex/ +%\bibliographystyle{IEEEtran} +% argument is your BibTeX string definitions and bibliography database(s) +%\bibliography{IEEEabrv,../bib/paper} +% +% manually copy in the resultant .bbl file +% set second argument of \begin to the number of references +% (used to reserve space for the reference number labels box) +\begin{thebibliography}{1} + +\bibitem{IEEEhowto:kopka} +H.~Kopka and P.~W. Daly, \emph{A Guide to \LaTeX}, 3rd~ed.\hskip 1em plus + 0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999. + +\end{thebibliography} + +% biography section +% +% If you have an EPS/PDF photo (graphicx package needed) extra braces are +% needed around the contents of the optional argument to biography to prevent +% the LaTeX parser from getting confused when it sees the complicated +% \includegraphics command within an optional argument. (You could create +% your own custom macro containing the \includegraphics command to make things +% simpler here.) +%\begin{IEEEbiography}[{\includegraphics[width=1in,height=1.25in,clip,keepaspectratio]{mshell}}]{Michael Shell} +% or if you just want to reserve a space for a photo: + +\begin{IEEEbiography}{Michael Shell} +Biography text here. +\end{IEEEbiography} + +% if you will not have a photo at all: +\begin{IEEEbiographynophoto}{John Doe} +Biography text here. +\end{IEEEbiographynophoto} + +% insert where needed to balance the two columns on the last page with +% biographies +%\newpage + +\begin{IEEEbiographynophoto}{Jane Doe} +Biography text here. +\end{IEEEbiographynophoto} + +% You can push biographies down or up by placing +% a \vfill before or after them. The appropriate +% use of \vfill depends on what kind of text is +% on the last page and whether or not the columns +% are being equalized. + +%\vfill + +% Can be used to pull up biographies so that the bottom of the last one +% is flush with the other column. +%\enlargethispage{-5in} + + + +% that's all folks +\end{document} + + diff -r 000000000000 -r 8319d82cab07 bibtex/IEEEabrv.bib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bibtex/IEEEabrv.bib Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,451 @@ + +IEEEabrv.bib +V1.13 (2008/09/30) +Copyright (c) 2002-2008 by Michael Shell +See: http://www.michaelshell.org/ +for current contact information. + +BibTeX bibliography string definitions of the ABBREVIATED titles of +IEEE journals and magazines and online publications. + +This file is designed for bibliography styles that require +abbreviated titles and is not for use in bibliographies that +require full-length titles. + +Support sites: +http://www.michaelshell.org/tex/ieeetran/ +http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +and/or +http://www.ieee.org/ + +Special thanks to Laura Hyslop and ken Rawson of IEEE for their help +in obtaining the information needed to compile this file. Also, +Volker Kuhlmann and Moritz Borgmann kindly provided some corrections +and additions. + +************************************************************************* +Legal Notice: +This code is offered as-is without any warranty either expressed or +implied; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE! +User assumes all risk. +In no event shall IEEE or any contributor to this code be liable for +any damages or losses, including, but not limited to, incidental, +consequential, or any other damages, resulting from the use or misuse +of any information contained here. + +All comments are the opinions of their respective authors and are not +necessarily endorsed by the IEEE. + +This work is distributed under the LaTeX Project Public License (LPPL) +( http://www.latex-project.org/ ) version 1.3, and may be freely used, +distributed and modified. A copy of the LPPL, version 1.3, is included +in the base LaTeX documentation of all distributions of LaTeX released +2003/12/01 or later. +Retain all contribution notices and credits. +** Modified files should be clearly indicated as such, including ** +** renaming them and changing author support contact information. ** + +File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib, + IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst, + IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf +************************************************************************* + + +USAGE: + +\bibliographystyle{mybstfile} +\bibliography{IEEEabrv,mybibfile} + +where the IEEE titles in the .bib database entries use the strings +defined here. e.g., + + + journal = IEEE_J_AC, + + +to yield "{IEEE} Trans. Automat. Contr." + + +IEEE uses abbreviated journal titles in their bibliographies - +this file is suitable for work that is to be submitted to the IEEE. + + +For work that requires full-length titles, you should use the full +titles provided in the companion file, IEEEfull.bib. + + +** NOTES ** + + 1. Journals have been grouped according to subject in order to make it + easier to locate and extract the definitions for related journals - + as most works use references that are confined to a single topic. + Magazines are listed in straight alphabetical order. + + 2. String names are closely based on IEEE's own internal acronyms. + + 3. Abbreviations follow IEEE's style. + + 4. Older, out-of-print IEEE titles are included (but not including titles + dating prior to IEEE's formation from the IRE and AIEE in 1963). + + 5. The following string definitions have been disabled because their + abbreviations have not yet been verified: + + STRING{IEEE_J_LT = "{IEEE} Trans. Learning Technol."} + STRING{IEEE_J_NSM = "{IEEE} Trans. Netw. Service Manag."} + STRING{IEEE_J_SC = "{IEEE} Trans. Services Comput."} + STRING{IEEE_J_STARS = "{IEEE} J. Sel. Topics Appl. Earth Observations Remote Sens."} + + + If you know what the proper abbreviation is for a string above, + email me and I will correct them in the next release. + + + + + +IEEE Journals + + + +aerospace and military +@STRING{IEEE_J_AES = "{IEEE} Trans. Aerosp. Electron. Syst."} +@STRING{IEEE_J_ANE = "{IEEE} Trans. Aerosp. Navig. Electron."} +@STRING{IEEE_J_ANNE = "{IEEE} Trans. Aeronaut. Navig. Electron."} +@STRING{IEEE_J_AS = "{IEEE} Trans. Aerosp."} +@STRING{IEEE_J_AIRE = "{IEEE} Trans. Airborne Electron."} +@STRING{IEEE_J_MIL = "{IEEE} Trans. Mil. Electron."} + + + +autos, transportation and vehicles (non-aerospace) +@STRING{IEEE_J_ITS = "{IEEE} Trans. Intell. Transp. Syst."} +@STRING{IEEE_J_VT = "{IEEE} Trans. Veh. Technol."} +@STRING{IEEE_J_VC = "{IEEE} Trans. Veh. Commun."} + + + +circuits, signals, systems, audio and controls +@STRING{IEEE_J_SPL = "{IEEE} Signal Process. Lett."} +@STRING{IEEE_J_ASSP = "{IEEE} Trans. Acoust., Speech, Signal Process."} +@STRING{IEEE_J_AU = "{IEEE} Trans. Audio"} +@STRING{IEEE_J_AUEA = "{IEEE} Trans. Audio Electroacoust."} +@STRING{IEEE_J_AC = "{IEEE} Trans. Autom. Control"} +@STRING{IEEE_J_CAS = "{IEEE} Trans. Circuits Syst."} +@STRING{IEEE_J_CASVT = "{IEEE} Trans. Circuits Syst. Video Technol."} +@STRING{IEEE_J_CASI = "{IEEE} Trans. Circuits Syst. {I}"} +@STRING{IEEE_J_CASII = "{IEEE} Trans. Circuits Syst. {II}"} +in 2004 CASI and CASII renamed part title to CASI_RP and CASII_EB, respectively. +@STRING{IEEE_J_CASI_RP = "{IEEE} Trans. Circuits Syst. {I}"} +@STRING{IEEE_J_CASII_EB = "{IEEE} Trans. Circuits Syst. {II}"} +@STRING{IEEE_J_CT = "{IEEE} Trans. Circuit Theory"} +@STRING{IEEE_J_CST = "{IEEE} Trans. Control Syst. Technol."} +@STRING{IEEE_J_SP = "{IEEE} Trans. Signal Process."} +@STRING{IEEE_J_SU = "{IEEE} Trans. Sonics Ultrason."} +@STRING{IEEE_J_SAP = "{IEEE} Trans. Speech Audio Process."} +@STRING{IEEE_J_STSP = "{IEEE} J. Sel. Topics Signal Process."} +@STRING{IEEE_J_SYST = "{IEEE} Syst. J."} +@STRING{IEEE_J_UE = "{IEEE} Trans. Ultrason. Eng."} +@STRING{IEEE_J_UFFC = "{IEEE} Trans. Ultrason., Ferroelectr., Freq. Control"} + + + +communications +@STRING{IEEE_J_COML = "{IEEE} Commun. Lett."} +@STRING{IEEE_J_JSAC = "{IEEE} J. Sel. Areas Commun."} +@STRING{IEEE_J_COM = "{IEEE} Trans. Commun."} +@STRING{IEEE_J_COMT = "{IEEE} Trans. Commun. Technol."} +@STRING{IEEE_J_WCOM = "{IEEE} Trans. Wireless Commun."} + + + +components, packaging and manufacturing +@STRING{IEEE_J_ADVP = "{IEEE} Trans. Adv. Packag."} +@STRING{IEEE_J_CHMT = "{IEEE} Trans. Compon., Hybrids, Manuf. Technol."} +@STRING{IEEE_J_CPMTA = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {A}"} +@STRING{IEEE_J_CPMTB = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {B}"} +@STRING{IEEE_J_CPMTC = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {C}"} +@STRING{IEEE_J_CAPT = "{IEEE} Trans. Compon. Packag. Technol."} +@STRING{IEEE_J_CAPTS = "{IEEE} Trans. Compon. Packag. Technol."} +@STRING{IEEE_J_CPART = "{IEEE} Trans. Compon. Parts"} +@STRING{IEEE_J_EPM = "{IEEE} Trans. Electron. Packag. Manuf."} +@STRING{IEEE_J_MFT = "{IEEE} Trans. Manuf. Technol."} +@STRING{IEEE_J_PHP = "{IEEE} Trans. Parts, Hybrids, Packag."} +@STRING{IEEE_J_PMP = "{IEEE} Trans. Parts, Mater., Packag."} + + + +CAD +@STRING{IEEE_J_TCAD = "{IEEE} J. Technol. Comput. Aided Design"} +@STRING{IEEE_J_CAD = "{IEEE} Trans. Comput.-Aided Design Integr. Circuits Syst."} + + + +coding, data, information, knowledge +@STRING{IEEE_J_IT = "{IEEE} Trans. Inf. Theory"} +@STRING{IEEE_J_KDE = "{IEEE} Trans. Knowl. Data Eng."} + + + +computers, computation, networking and software +@STRING{IEEE_J_C = "{IEEE} Trans. Comput."} +@STRING{IEEE_J_CAL = "{IEEE} Comput. Archit. Lett."} +@STRING{IEEE_J_DSC = "{IEEE} Trans. Dependable Secure Comput."} +@STRING{IEEE_J_ECOMP = "{IEEE} Trans. Electron. Comput."} +@STRING{IEEE_J_EVC = "{IEEE} Trans. Evol. Comput."} +@STRING{IEEE_J_FUZZ = "{IEEE} Trans. Fuzzy Syst."} +@STRING{IEEE_J_IFS = "{IEEE} Trans. Inf. Forensics Security"} +@STRING{IEEE_J_MC = "{IEEE} Trans. Mobile Comput."} +@STRING{IEEE_J_NET = "{IEEE/ACM} Trans. Netw."} +@STRING{IEEE_J_NN = "{IEEE} Trans. Neural Netw."} +disabled until abbreviation verified +STRING{IEEE_J_NSM = "{IEEE} Trans. Netw. Service Manag."} +@STRING{IEEE_J_PDS = "{IEEE} Trans. Parallel Distrib. Syst."} +disabled until abbreviation verified +STRING{IEEE_J_SC = "{IEEE} Trans. Services Comput."} +@STRING{IEEE_J_SE = "{IEEE} Trans. Softw. Eng."} + + + +computer graphics, imaging, and multimedia +@STRING{IEEE_J_JDT = "{IEEE/OSA} J. Display Technol."} +@STRING{IEEE_J_IP = "{IEEE} Trans. Image Process."} +@STRING{IEEE_J_MM = "{IEEE} Trans. Multimedia"} +@STRING{IEEE_J_VCG = "{IEEE} Trans. Vis. Comput. Graphics"} + + + +cybernetics, ergonomics, robots, man-machine, and automation +@STRING{IEEE_J_ASE = "{IEEE} Trans. Autom. Sci. Eng."} +@STRING{IEEE_J_JRA = "{IEEE} J. Robot. Autom."} +@STRING{IEEE_J_H = "{IEEE} Trans. Haptics"} +@STRING{IEEE_J_HFE = "{IEEE} Trans. Hum. Factors Electron."} +@STRING{IEEE_J_MMS = "{IEEE} Trans. Man-Mach. Syst."} +@STRING{IEEE_J_PAMI = "{IEEE} Trans. Pattern Anal. Mach. Intell."} +in 1989 JRA became RA +in August 2004, RA split into ASE and RO +@STRING{IEEE_J_RA = "{IEEE} Trans. Robot. Autom."} +@STRING{IEEE_J_RO = "{IEEE} Trans. Robot."} +@STRING{IEEE_J_SMC = "{IEEE} Trans. Syst., Man, Cybern."} +@STRING{IEEE_J_SMCA = "{IEEE} Trans. Syst., Man, Cybern. {A}"} +@STRING{IEEE_J_SMCB = "{IEEE} Trans. Syst., Man, Cybern. {B}"} +@STRING{IEEE_J_SMCC = "{IEEE} Trans. Syst., Man, Cybern. {C}"} +@STRING{IEEE_J_SSC = "{IEEE} Trans. Syst. Sci. Cybern."} + + + +earth, wind, fire and water +@STRING{IEEE_J_GE = "{IEEE} Trans. Geosci. Electron."} +@STRING{IEEE_J_GRS = "{IEEE} Trans. Geosci. Remote Sens."} +@STRING{IEEE_J_GRSL = "{IEEE} Geosci. Remote Sens. Lett."} +@STRING{IEEE_J_OE = "{IEEE} J. Ocean. Eng."} +disabled until abbreviation verified +STRING{IEEE_J_STARS = "{IEEE} J. Sel. Topics Appl. Earth Observations Remote Sens."} + + +education, engineering, history, IEEE, professional +@STRING{IEEE_J_CJECE = "Canadian J. Elect. Comput. Eng."} +@STRING{IEEE_J_PROC = "Proc. {IEEE}"} +@STRING{IEEE_J_EDU = "{IEEE} Trans. Educ."} +@STRING{IEEE_J_EM = "{IEEE} Trans. Eng. Manag."} +@STRING{IEEE_J_EWS = "{IEEE} Trans. Eng. Writing Speech"} +disabled until abbreviation verified +STRING{IEEE_J_LT = "{IEEE} Trans. Learning Technol."} +@STRING{IEEE_J_PC = "{IEEE} Trans. Prof. Commun."} + + + +electromagnetics, antennas, EMI, magnetics and microwave +@STRING{IEEE_J_AWPL = "{IEEE} Antennas Wireless Propag. Lett."} +@STRING{IEEE_J_MGWL = "{IEEE} Microw. Guided Wave Lett."} +IEEE seems to want "Compon." here, not "Comp." +@STRING{IEEE_J_MWCL = "{IEEE} Microw. Wireless Compon. Lett."} +@STRING{IEEE_J_AP = "{IEEE} Trans. Antennas Propag."} +@STRING{IEEE_J_EMC = "{IEEE} Trans. Electromagn. Compat."} +@STRING{IEEE_J_MAG = "{IEEE} Trans. Magn."} +@STRING{IEEE_J_MTT = "{IEEE} Trans. Microw. Theory Tech."} +@STRING{IEEE_J_RFI = "{IEEE} Trans. Radio Freq. Interference"} +@STRING{IEEE_J_TJMJ = "{IEEE} Transl. J. Magn. Jpn."} + + + +energy and power +@STRING{IEEE_J_EC = "{IEEE} Trans. Energy Convers."} +@STRING{IEEE_J_PEL = "{IEEE} Power Electron. Lett."} +@STRING{IEEE_J_PWRAS = "{IEEE} Trans. Power App. Syst."} +@STRING{IEEE_J_PWRD = "{IEEE} Trans. Power Del."} +@STRING{IEEE_J_PWRE = "{IEEE} Trans. Power Electron."} +@STRING{IEEE_J_PWRS = "{IEEE} Trans. Power Syst."} + + + +industrial, commercial and consumer +@STRING{IEEE_J_APPIND = "{IEEE} Trans. Appl. Ind."} +@STRING{IEEE_J_BC = "{IEEE} Trans. Broadcast."} +@STRING{IEEE_J_BCTV = "{IEEE} Trans. Broadcast Television Receivers"} +@STRING{IEEE_J_CE = "{IEEE} Trans. Consum. Electron."} +@STRING{IEEE_J_IE = "{IEEE} Trans. Ind. Electron."} +@STRING{IEEE_J_IECI = "{IEEE} Trans. Ind. Electron. Contr. Instrum."} +@STRING{IEEE_J_IA = "{IEEE} Trans. Ind. Appl."} +@STRING{IEEE_J_IGA = "{IEEE} Trans. Ind. Gen. Appl."} +@STRING{IEEE_J_IINF = "{IEEE} Trans. Ind. Informat."} +@STRING{IEEE_J_PSE = "{IEEE} J. Product Safety Eng."} + + + +instrumentation and measurement +@STRING{IEEE_J_IM = "{IEEE} Trans. Instrum. Meas."} + + + +insulation and materials +@STRING{IEEE_J_JEM = "{IEEE/TMS} J. Electron. Mater."} +@STRING{IEEE_J_DEI = "{IEEE} Trans. Dielectr. Electr. Insul."} +@STRING{IEEE_J_EI = "{IEEE} Trans. Electr. Insul."} + + + +mechanical +@STRING{IEEE_J_MECH = "{IEEE/ASME} Trans. Mechatronics"} +@STRING{IEEE_J_MEMS = "J. Microelectromech. Syst."} + + + +medical and biological +@STRING{IEEE_J_BCAS = "{IEEE} Trans. Biomed. Circuits Syst."} +@STRING{IEEE_J_BME = "{IEEE} Trans. Biomed. Eng."} +Note: The B-ME journal later dropped the hyphen and became the BME. +@STRING{IEEE_J_B-ME = "{IEEE} Trans. Bio-Med. Eng."} +@STRING{IEEE_J_BMELC = "{IEEE} Trans. Bio-Med. Electron."} +@STRING{IEEE_J_CBB = "{IEEE/ACM} Trans. Comput. Biol. Bioinformatics"} +@STRING{IEEE_J_ITBM = "{IEEE} Trans. Inf. Technol. Biomed."} +@STRING{IEEE_J_ME = "{IEEE} Trans. Med. Electron."} +@STRING{IEEE_J_MI = "{IEEE} Trans. Med. Imag."} +@STRING{IEEE_J_NB = "{IEEE} Trans. Nanobiosci."} +@STRING{IEEE_J_NSRE = "{IEEE} Trans. Neural Syst. Rehabil. Eng."} +@STRING{IEEE_J_RBME = "{IEEE} Rev. Biomed. Eng."} +@STRING{IEEE_J_RE = "{IEEE} Trans. Rehabil. Eng."} + + + + optics, lightwave and photonics +@STRING{IEEE_J_PTL = "{IEEE} Photon. Technol. Lett."} +@STRING{IEEE_J_JLT = "J. Lightw. Technol."} + + + +physics, electrons, nanotechnology, nuclear and quantum electronics +@STRING{IEEE_J_EDL = "{IEEE} Electron Device Lett."} +@STRING{IEEE_J_JQE = "{IEEE} J. Quantum Electron."} +@STRING{IEEE_J_JSTQE = "{IEEE} J. Sel. Topics Quantum Electron."} +@STRING{IEEE_J_ED = "{IEEE} Trans. Electron Devices"} +@STRING{IEEE_J_NANO = "{IEEE} Trans. Nanotechnol."} +@STRING{IEEE_J_NS = "{IEEE} Trans. Nucl. Sci."} +@STRING{IEEE_J_PS = "{IEEE} Trans. Plasma Sci."} + + + +reliability +IEEE seems to want "Mat." here, not "Mater." +@STRING{IEEE_J_DMR = "{IEEE} Trans. Device Mater. Rel."} +@STRING{IEEE_J_R = "{IEEE} Trans. Rel."} + + + +semiconductors, superconductors, electrochemical and solid state +@STRING{IEEE_J_ESSL = "{IEEE/ECS} Electrochem. Solid-State Lett."} +@STRING{IEEE_J_JSSC = "{IEEE} J. Solid-State Circuits"} +@STRING{IEEE_J_ASC = "{IEEE} Trans. Appl. Supercond."} +@STRING{IEEE_J_SM = "{IEEE} Trans. Semicond. Manuf."} + + + +sensors +@STRING{IEEE_J_SENSOR = "{IEEE} Sensors J."} + + + +VLSI +@STRING{IEEE_J_VLSI = "{IEEE} Trans. {VLSI} Syst."} + + + + + + +IEEE Magazines + + + +@STRING{IEEE_M_AES = "{IEEE} Aerosp. Electron. Syst. Mag."} +@STRING{IEEE_M_HIST = "{IEEE} Ann. Hist. Comput."} +@STRING{IEEE_M_AP = "{IEEE} Antennas Propag. Mag."} +@STRING{IEEE_M_ASSP = "{IEEE} {ASSP} Mag."} +@STRING{IEEE_M_CD = "{IEEE} Circuits Devices Mag."} +@STRING{IEEE_M_CAS = "{IEEE} Circuits Syst. Mag."} +@STRING{IEEE_M_COM = "{IEEE} Commun. Mag."} +@STRING{IEEE_M_COMSOC = "{IEEE} Commun. Soc. Mag."} +@STRING{IEEE_M_CIM = "{IEEE} Comput. Intell. Mag."} +CSEM changed to CSE in 1999 +@STRING{IEEE_M_CSE = "{IEEE} Comput. Sci. Eng."} +@STRING{IEEE_M_CSEM = "{IEEE} Comput. Sci. Eng. Mag."} +@STRING{IEEE_M_C = "{IEEE} Computer"} +@STRING{IEEE_M_CAP = "{IEEE} Comput. Appl. Power"} +@STRING{IEEE_M_CGA = "{IEEE} Comput. Graph. Appl."} +@STRING{IEEE_M_CONC = "{IEEE} Concurrency"} +@STRING{IEEE_M_CS = "{IEEE} Control Syst. Mag."} +@STRING{IEEE_M_DTC = "{IEEE} Des. Test. Comput."} +@STRING{IEEE_M_EI = "{IEEE} Electr. Insul. Mag."} +@STRING{IEEE_M_ETR = "{IEEE} ElectroTechnol. Rev."} +@STRING{IEEE_M_EMB = "{IEEE} Eng. Med. Biol. Mag."} +@STRING{IEEE_M_EMR = "{IEEE} Eng. Manag. Rev."} +@STRING{IEEE_M_EXP = "{IEEE} Expert"} +@STRING{IEEE_M_IA = "{IEEE} Ind. Appl. Mag."} +@STRING{IEEE_M_IE = "{IEEE} Ind. Electron. Mag."} +@STRING{IEEE_M_IM = "{IEEE} Instrum. Meas. Mag."} +@STRING{IEEE_M_IS = "{IEEE} Intell. Syst."} +@STRING{IEEE_M_ITS = "{IEEE} Intell. Transp. Syst. Mag."} +@STRING{IEEE_M_IC = "{IEEE} Internet Comput."} +@STRING{IEEE_M_ITP = "{IEEE} {IT} Prof."} +@STRING{IEEE_M_MICRO = "{IEEE} Micro"} +@STRING{IEEE_M_MW = "{IEEE} Microw. Mag."} +@STRING{IEEE_M_MM = "{IEEE} Multimedia"} +@STRING{IEEE_M_NANO = "{IEEE} Nanotechnol. Mag."} +@STRING{IEEE_M_NET = "{IEEE} Netw."} +IEEE's editorial manual lists "Pers. Commun.", +but "Personal Commun. Mag." seems to be what is used in the journals +@STRING{IEEE_M_PCOM = "{IEEE} Personal Commun. Mag."} +@STRING{IEEE_M_POT = "{IEEE} Potentials"} +CAP and PER merged to form PE in 2003 +@STRING{IEEE_M_PE = "{IEEE} Power Energy Mag."} +@STRING{IEEE_M_PER = "{IEEE} Power Eng. Rev."} +@STRING{IEEE_M_PVC = "{IEEE} Pervasive Comput."} +@STRING{IEEE_M_RA = "{IEEE} Robot. Autom. Mag."} +@STRING{IEEE_M_SAP = "{IEEE} Security Privacy"} +@STRING{IEEE_M_SP = "{IEEE} Signal Process. Mag."} +@STRING{IEEE_M_S = "{IEEE} Softw."} +@STRING{IEEE_M_SPECT = "{IEEE} Spectr."} +@STRING{IEEE_M_TS = "{IEEE} Technol. Soc. Mag."} +@STRING{IEEE_M_VT = "{IEEE} Veh. Technol. Mag."} +@STRING{IEEE_M_WC = "{IEEE} Wireless Commun. Mag."} +@STRING{IEEE_M_TODAY = "Today's Engineer"} + + + + + + +IEEE Online Publications + + + +@STRING{IEEE_O_CSTO = "{IEEE} Commun. Surveys Tuts."} +@STRING{IEEE_O_DSO = "{IEEE} Distrib. Syst. Online"} + + + + + +-- +EOF diff -r 000000000000 -r 8319d82cab07 bibtex/IEEEexample.bib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bibtex/IEEEexample.bib Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,1203 @@ + +IEEEexample.bib +V1.13 (2008/09/30) +Copyright (c) 2002-2008 by Michael Shell +See: http://www.michaelshell.org/ +for current contact information. + +This is an example BibTeX database for the official IEEEtran.bst +BibTeX style file. + +Some entries call strings that are defined in the IEEEabrv.bib file. +Therefore, IEEEabrv.bib should be loaded prior to this file. +Usage: + +\bibliographystyle{./IEEEtran} +\bibliography{./IEEEabrv,./IEEEexample} + + +Support sites: +http://www.michaelshell.org/tex/ieeetran/ +http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +and/or +http://www.ieee.org/ + +************************************************************************* +Legal Notice: +This code is offered as-is without any warranty either expressed or +implied; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE! +User assumes all risk. +In no event shall IEEE or any contributor to this code be liable for +any damages or losses, including, but not limited to, incidental, +consequential, or any other damages, resulting from the use or misuse +of any information contained here. + +All comments are the opinions of their respective authors and are not +necessarily endorsed by the IEEE. + +This work is distributed under the LaTeX Project Public License (LPPL) +( http://www.latex-project.org/ ) version 1.3, and may be freely used, +distributed and modified. A copy of the LPPL, version 1.3, is included +in the base LaTeX documentation of all distributions of LaTeX released +2003/12/01 or later. +Retain all contribution notices and credits. +** Modified files should be clearly indicated as such, including ** +** renaming them and changing author support contact information. ** + +File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib, + IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst, + IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf +************************************************************************* + + +Note that, because the example references were taken from actual IEEE +publications, these examples do not always contain the full amount +of information that may be desirable (for use with other BibTeX styles). +In particular, full names (not abbreviated with initials) should be +entered whenever possible as some (non-IEEE) bibliography styles use +full names. IEEEtran.bst will automatically abbreviate when it encounters +full names. + + + + +references for the IEEEtran.bst documentation +IEEEtran homepage +@electronic{IEEEhowto:IEEEtranpage, + author = "Michael Shell", + title = "{IEEE}tran Homepage", + url = "http://www.michaelshell.org/tex/ieeetran/", + year = "2008" +} + + +the distribution site for IEEEtran.bst +@electronic{IEEEexample:shellCTANpage, + author = "Michael Shell", + title = "{IEEE}tran Webpage on {CTAN}", + url = "http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/", + year = "2008" +} + + +the IEEE website +sort key is needed for sorting styles +@electronic{IEEEexample:IEEEwebsite, + title = "The {IEEE} Website", + url = "http://www.ieee.org/", + year = "2008", + key = "IEEE" +} + + +The BibTeX user's guide. +The filename could have been put in the URL instead. But, there might +be other interesting things for the user in the same directory - and +the filename might change before the directory that contains it. +@electronic{IEEEexample:bibtexuser, + author = "Oren Patashnik", + title = "{{\BibTeX}}ing", + howpublished = "{btxdoc.pdf}", + url = "http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/", + month = feb, + year = "1988" +} + + +The BibTeX style designer's guide. +@electronic{IEEEexample:bibtexdesign, + author = "Oren Patashnik", + title = "Designing {{\BibTeX}} Styles", + howpublished = "{btxhak.pdf}", + url = "http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/", + month = feb, + year = "1988" +} + + +A comprehensive BibTeX tutorial. +@electronic{IEEEexample:tamethebeast, + author = "Nicolas Markey", + title = "Tame the BeaST --- The B to X of {{\BibTeX}}", + url = "http://tug.ctan.org/tex-archive/info/bibtex/tamethebeast/", + month = oct, + year = "2005" +} + + +The BibTeX Tips and FAQ guide. +@electronic{IEEEexample:bibtexFAQ, + author = "David Hoadley and Michael Shell", + title = "{{\BibTeX}} Tips and {FAQ}", + howpublished = "{btxFAQ.pdf}", + url = "http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/", + month = jan, + year = "2007" +} + + +The TeX FAQ +@electronic{IEEEexample:texfaq, + author = "Robin Fairbairns", + title = "The {{\TeX}} {FAQ}", + url = "http://www.tex.ac.uk/cgi-bin/texfaq2html/", + month = jun, + year = "2008" +} + + +A BibTeX Guide via Examples. +@electronic{IEEEexample:bibtexguide, + author = "Ki-Joo Kim", + title = "A {{\BibTeX}} Guide via Examples", + howpublished = "{bibtex\_guide.pdf}", + url = "http://www.geocities.com/kijoo2000/", + month = apr, + year = "2004" +} + + +TeX User Group Bibliography Archive +@electronic{IEEEexample:beebe_archive, + author = "Nelson H. F. Beebe", + title = "{{\TeX}} User Group Bibliography Archive", + url = "http://www.math.utah.edu/pub/tex/bib/index-table.html", + month = jul, + year = "2008" +} + +The natbib.sty package. +@electronic{ctan:natbib, + author = "Patrick W. Daly", + title = "The natbib.sty package", + url = "http://www.ctan.org/tex-archive/macros/latex/contrib/natbib/", + month = oct, + year = "2007" +} + +The url.sty package. +@electronic{IEEEexample:urlsty, + author = "Donald Arseneau", + title = "The url.sty Package", + url = "http://www.ctan.org/tex-archive/macros/latex/contrib/misc/", + month = apr, + year = "2006", +} + + +The hyperref.sty package. +@electronic{IEEEexample:hyperrefsty, + author = "Sebastian Rahtz and Heiko Oberdiek", + title = "The hyperref.sty Package", + url = "http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref/", + month = sep, + year = "2008", +} + + +The breakurl.sty package. +@electronic{IEEEexample:breakurl, + author = "Vilar Camara Neto", + title = "The breakurl.sty Package", + url = "http://www.ctan.org/tex-archive/macros/latex/contrib/breakurl/", + month = jul, + year = "2008", +} + + +The Babel package. +@electronic{IEEEexample:babel, + author = "Johannes Braams", + title = "The Babel Package", + url = "http://www.ctan.org/tex-archive/macros/latex/required/babel/", + month = jul, + year = "2008", +} + + +The multibib package. +@electronic{IEEEexample:multibibsty, + author = "Thorsten Hansen", + title = "The multibib.sty package", + url = "http://www.ctan.org/tex-archive/macros/latex/contrib/multibib/", + month = jan, + year = "2004" +} + + +The biblatex package. +@electronic{IEEEexample:biblatex, + author = "Philipp Lehman", + title = "The biblatex package", + url = "http://www.ctan.org/tex-archive/macros/latex/exptl/biblatex/", + month = apr, + year = "2008" +} + + + +The three most common and typical types of references used in +IEEE publications: + +an article in a journal +Note the use of the IEEE_J_EDL string, defined in the IEEEabrv.bib file, +for the journal name. IEEEtran.bst defines the BibTeX standard three +letter month codes per IEEE style. +From the June 2002 issue of "IEEE Transactions on Electron Devices", +page 996, reference #16. +@article{IEEEexample:article_typical, + author = "S. Zhang and C. Zhu and J. K. O. Sin and P. K. T. Mok", + title = "A Novel Ultrathin Elevated Channel Low-temperature + Poly-{Si} {TFT}", + journal = IEEE_J_EDL, + volume = "20", + month = nov, + year = "1999", + pages = "569-571" +} + + +journal article using et al. +The (five) authors are actually: F. Delorme, S. Slempkes, G. Alibert, +B. Rose, J. Brandon +The month (July) was not given here. +From the September 1998 issue of "IEEE Journal on Selected Areas in +Communications", page 1257, reference #28. +@article{IEEEexample:articleetal, + author = "F. Delorme and others", + title = "Butt-jointed {DBR} Laser With 15 {nm} Tunability Grown + in Three {MOVPE} Steps", + journal = "Electron. Lett.", + volume = "31", + number = "15", + year = "1995", + pages = "1244-1245" +} + + +a paper in a conference proceedings +"conference" can be used as an alias for "inproceedings" +From the June 2002 issue of "Journal of Microelectromechanical Systems", +page 205, reference #16. +@inproceedings{IEEEexample:conf_typical, + author = "R. K. Gupta and S. D. Senturia", + title = "Pull-in Time Dynamics as a Measure of Absolute Pressure", + booktitle = "Proc. {IEEE} International Workshop on + Microelectromechanical Systems ({MEMS}'97)", + address = "Nagoya, Japan", + month = jan, + year = "1997", + pages = "290-294" +} + + +a book +From the May 2002 issue of "IEEE Transactions on Magnetics", +page 1466, reference #4. +@book{IEEEexample:book_typical, + author = "B. D. Cullity", + title = "Introduction to Magnetic Materials", + publisher = "Addison-Wesley", + address = "Reading, MA", + year = "1972" +} + + + + +Other examples + +journal article with large page numbers, IEEE will divide numbers 5 digits +or longer into groups of three with small spaces between them. Page ranges +can be separated via either "-" or "--", IEEEtran.bst will automatically +convert the separator dash(es) to "--". +Authors and/or IEEE do not always provide/use the journal number, but it +was used in this case. IEEEtran.bst can be configured to ignore journal +numbers if desired. +From the August 2000 issue of "IEEE Photonics Technology Letters", +page 1039, reference #11. +@article{IEEEexample:articlelargepages, + author = "A. Castaldini and A. Cavallini and B. Fraboni + and P. Fernandez and J. Piqueras", + title = "Midgap Traps Related to Compensation Processes in + {CdTe} Alloys", + journal = "Phys. Rev. B.", + volume = "56", + number = "23", + year = "1997", + pages = "14897-14900" +} + + +journal article with dual months +use the BibTeX "#" concatenation operator +From the March 2002 issue of "IEEE Transactions on Mechatronics", +page 21, reference #8. +@article{IEEEexample:articledualmonths, + author = "Y. Okada and K. Dejima and T. Ohishi", + title = "Analysis and Comparison of {PM} Synchronous Motor and + Induction Motor Type Magnetic Bearings", + journal = IEEE_J_IA, + volume = "31", + month = sep # "/" # oct, + year = "1995", + pages = "1047-1053" +} + + +journal article to be published as a misc entry type +date information like month and year is optional +However, the article form like that below may be a better approach. +From the May 2002 issue of "IEEE Journal of Selected Areas in +Communication", page 725, reference #3. +@misc{IEEEexample:TBPmisc, + author = "M. Coates and A. Hero and R. Nowak and B. Yu", + title = "Internet Tomography", + howpublished = IEEE_M_SP, + month = may, + year = "2002", + note = "to be published" +} + + +journal article to be published as an article entry type +year is required, so if absent, use the year field to hold +the "submitted for publication" in order to avoid a warning for +the missing year field. +From the June 2002 issue of "IEEE Transactions on Information Theory", +page 1461, reference #21. +@article{IEEEexample:TBParticle, + author = "N. Kahale and R. Urbanke", + title = "On the Minimum Distance of Parallel and Serially + Concatenated Codes", + journal = IEEE_J_IT, + year = "submitted for publication" +} + + + + + +book with editor and no author +From the June 2002 issue of "IEEE Transactions on Information Theory", +page 1725, reference #1. +@book{IEEEexample:bookwitheditor, + editor = "J. C. Candy and G. C. Temes", + title = "Oversampling Delta-Sigma Data Converters Theory, + Design and Simulation", + publisher = "{IEEE} Press.", + address = "New York", + year = "1992" +} + + +book with edition, author and editor +Note that the standard BibTeX styles do not support book entries with both +author and editor fields, but IEEEtran.bst does. +The standard BibTeX way of specifying the edition is to use capitalized +ordinal words such as "First", "Second", etc. Most .bst files can convert +up to about "Fifth" into the format needed. IEEEtran.bst can convert up +to "Tenth" to the "Arabic ordinal" form IEEE uses (e.g., "10th"). For +editions over the tenth, it is best to use the "Arabic ordinal" form for +IEEE related work (e.g., "101st") +Note how "Jr." has to be entered. +From the May 2002 issue of "Journal of Lightwave Technology", page 856, +reference #17. +@book{IEEEexample:book, + author = "S. M. Metev and V. P. Veiko", + editor = "Osgood, Jr., R. M.", + title = "Laser Assisted Microtechnology", + edition = "Second", + publisher = "Springer-Verlag", + address = "Berlin, Germany", + year = "1998" +} + + +book with series and volume +From the January 2000 issue of "IEEE Transactions on Communications", +page 11, reference #31. +@book{IEEEexample:bookwithseriesvolume, + editor = "J. Breckling", + title = "The Analysis of Directional Time Series: Applications to + Wind Speed and Direction", + series = "Lecture Notes in Statistics", + publisher = "Springer", + address = "Berlin, Germany", + year = "1989", + volume = "61" +} + + +inbook with chapter number. The pages field could also have been given. +The chapter number could be changed to something else such as a section +number via the type field: type = "sec.". +From the May 2002 issue of "IEEE Transactions on Circuits and Systems---I: +Fundamental Applications and Theory", page 638, reference #22. +@inbook{IEEEexample:inbook, + author = "H. E. Rose", + title = "A Course in Number Theory", + publisher = "Oxford Univ. Press", + address = "New York, NY", + year = "1988", + chapter = "3" +} + + +inbook with pages and note. The language field is not set to Russian +because the title is presented here in its translated, English, form. +From the May 2002 issue of "IEEE Transactions on Magnetics", page 1533, +reference #5. +@inbook{IEEEexample:inbookpagesnote, + author = "B. K. Bul", + title = "Theory Principles and Design of Magnetic Circuits", + publisher = "Energia Press", + address = "Moscow", + year = "1964", + pages = "464", + note = "(in Russian)" +} + + + + + +incollection with author and editor +From the May 2002 issue of "Journal of Lightwave Technology", +page 807, reference #7. +@incollection{IEEEexample:incollection, + author = "W. V. Sorin", + editor = "D. Derickson", + title = "Optical Reflectometry for Component Characterization", + booktitle = "Fiber Optic Test and Measurement", + publisher = "Prentice-Hall", + address = "Englewood Cliffs, NJ", + year = "1998" +} + + +incollection with series +From the April 2000 issue of "IEEE Transactions on Communication", +page 609, reference #3. +@incollection{IEEEexample:incollectionwithseries, + author = "J. B. Anderson and K. Tepe", + title = "Properties of the Tailbiting {BCJR} Decoder", + booktitle = "Codes, Systems and Graphical Models", + series = "{IMA} Volumes in Mathematics and Its Applications", + publisher = "Springer-Verlag", + address = "New York", + year = "2000" + +} + + +incollection with author, editor, chapter and pages +From the January 2000 issue of "IEEE Transactions on Communications", +page 16, reference #9. +@incollection{IEEEexample:incollection_chpp, + author = "P. Hedelin and P. Knagenhjelm and M. Skoglund", + editor = "W. B. Kleijn and K. K. Paliwal", + title = "Theory for Transmission of Vector Quantization Data", + booktitle = "Speech Coding and Synthesis", + publisher = "Elsevier Science", + address = "Amsterdam, The Netherlands", + year = "1995", + chapter = "10", + pages = "347-396" +} + + +incollection with a large number of authors, some authors/journals will +use et al. for so many names. IEEEtran.bst can be configured to do this +if desired, or "R. M. A. Dawson and others" can be used instead. +Note that IEEE may not include the publisher for incollection entries - +IEEEtran.bst will not issue a warning if the publisher is missing for +incollections - but other .bst files often will. +From the June 2002 issue of "IEEE Transactions on Electron Devices", +page 996, reference #12. +@incollection{IEEEexample:incollectionmanyauthors, + author = "R. M. A. Dawson and Z. Shen and D. A. Furst and + S. Connor and J. Hsu and M. G. Kane and R. G. Stewart and + A. Ipri and C. N. King and P. J. Green and R. T. Flegal + and S. Pearson and W. A. Barrow and E. Dickey and K. Ping + and C. W. Tang and S. Van. Slyke and + F. Chen and J. Shi and J. C. Sturm and M. H. Lu", + title = "Design of an Improved Pixel for a Polysilicon + Active-Matrix Organic {LED} Display", + booktitle = "{SID} Tech. Dig.", + volume = "29", + year = "1998", + pages = "11-14" +} + + + + + +A Motorola data book as a manual +It is somewhat unusual to include the data book part number. +in the title. It might be more correct to put this information +in the howpublished field instead. +From the December 2000 issue of "IEEE Transactions on Communications", +page 1986, reference #10. +@manual{IEEEexample:motmanual, + title = "{FLEXChip} Signal Processor ({MC68175/D})", + organization = "Motorola", + year = "1996" +} + + +same reference, but using IEEEtran's howpublished extension +@manual{IEEEexample:motmanualhowpub, + title = "{FLEXChip} Signal Processor", + howpublished = "{MC68175/D}", + organization = "Motorola", + year = "1996" +} + + + + +conference paper with an address and days. Some journals capitalize the +letters in "Globecom", this one did not. +From the May 2002 issue of "IEEE Transactions on Communications", +page 697, reference #12. +@inproceedings{IEEEexample:confwithadddays, + author = "M. S. Yee and L. Hanzo", + title = "Radial Basis Function Decision Feedback Equaliser + Assisted Burst-by-burst Adaptive Modulation", + booktitle = "Proc. {IEEE} Globecom '99", + address = "Rio de Janeiro, Brazil", + month = dec # " 5--9,", + year = "1999", + pages = "2183-2187" +} + + +conference paper with volume number. A conference proceedings with a vol +number is a little uncommon, note that the vol number is placed +before the address in the formatted bibliography entry +From the April 2002 issue of "IEEE/ACM Transactions on Networking", +page 181, reference #26. +@inproceedings{IEEEexample:confwithvolume, + author = "M. Yajnik and S. B. Moon and J. Kurose and D. Towsley", + title = "Measurement and Modeling of the Temporal Dependence in + Packet Loss", + booktitle = "Proc. {IEEE} {INFOCOM}'99", + volume = "1", + address = "New York, NY", + month = mar, + year = "1999", + pages = "345-352" +} + + +conference paper with a paper number, the type field can be used to +override the word "paper", e.g., type = "postdeadline paper". A type +can be given even without a paper field. +Also, IEEEtran.bst can be configured to ignore paper numbers and types. +From the May 2002 issue of "Journal of Lightwave Technology", +page 807, reference #4. +@inproceedings{IEEEexample:confwithpaper, + author = "M. Wegmuller and J. P. von der Weid and P. Oberson + and N. Gisin", + title = "High Resolution Fiber Distributed Measurements With + Coherent {OFDR}", + booktitle = "Proc. {ECOC}'00", + year = "2000", + paper = "11.3.4", + pages = "109" +} + + +conference paper with a postdeadline type paper, the paper field is +optional. +From the August 2000 issue of "IEEE Photonics Technology Letters", +page 1087, reference #12. +@inproceedings{IEEEexample:confwithpapertype, + author = "B. Mikkelsen and G. Raybon and R.-J. Essiambre and + K. Dreyer and Y. Su. and L. E. Nelson and J. E. Johnson + and G. Shtengel and A. Bond and D. G. Moodie and + A. D. Ellis", + title = "160 {Gbit/s} Single-channel Transmission Over 300 km + Nonzero-dispersion Fiber With Semiconductor Based + Transmitter and Demultiplexer", + booktitle = "Proc. {ECOC}'99", + year = "1999", + paper = "2-3", + type = "postdeadline paper", + pages = "28-29" +} + + +presented at a conference +intype overrides the default "in" and causes the booktitle not to be +emphasized (rendered in italics). +From the February 2002 issue of "IEEE/ACM Transactions on Networking", +page 163, reference #6. +@inproceedings{IEEEexample:presentedatconf, + author = "S. G. Finn and M. M{\'e}dard and R. A. Barry", + title = "A Novel Approach to Automatic Protection Switching + Using Trees", + intype = "presented at the", + booktitle = "Proc. Int. Conf. Commun.", + year = "1997" +} + + + + + +master's thesis, often the University name will be abbreviated and the +state or country will be included in the address. The type field can +used to override the default type "Master's thesis" +From the June 2002 issue of "IEEE Transactions on Microelectromechanical +Systems", page 186, reference #11. +@mastersthesis{IEEEexample:masters, + author = "Nin C. Loh", + title = "High-Resolution Micromachined Interferometric + Accelerometer", + school = "Massachusetts Institute of Technology", + address = "Cambridge", + year = "1992" +} + + +master's thesis with a type field +From the August 2001 issue of "IEEE/ACM Transactions on Networking", +page 391, reference #12. +@mastersthesis{IEEEexample:masterstype, + author = "A. Karnik", + title = "Performance of {TCP} Congestion Control with Rate + Feedback: {TCP/ABR} and Rate Adaptive {TCP/IP}", + school = "Indian Institute of Science", + type = "M. Eng. thesis", + address = "Bangalore, India", + month = jan, + year = "1999" +} + + + + + +Ph.D. dissertation with a URL field, the university is abbreviated +From the October 2001 issue of "IEEE/ACM Transactions on Networking", +page 590, reference #11. +@phdthesis{IEEEexample:phdurl, + author = "Q. Li", + title = "Delay Characterization and Performance Control of + Wide-area Networks", + school = "Univ. of Delaware", + address = "Newark", + month = may, + year = "2000", + url = "http://www.ece.udel.edu/~qli" +} + + + + + +technical report +From the August 2001 issue of "IEEE/ACM Transactions on Networking", +page 490, reference #15. +@techreport{IEEEexample:techrep, + author = "R. Jain and K. K. Ramakrishnan and D. M. Chiu", + title = "Congestion Avoidance in Computer Networks with a + Connectionless Network Layer", + institution = "Digital Equipment Corporation", + address = "MA", + number = "DEC-TR-506", + month = aug, + year = "1987" +} + + +technical report with type +for those times when "Tech. Rep." needs to be modified +From the February 2001 issue of "IEEE/ACM Transactions on Networking", +page 46, reference #8. +@techreport{IEEEexample:techreptype, + author = "J. Padhye and V. Firoiu and D. Towsley", + title = "A Stochastic Model of {TCP} {R}eno Congestion Avoidance + and Control", + institution = "Univ. of Massachusetts", + address = "Amherst, MA", + type = "CMPSCI Tech. Rep.", + number = "99-02", + year = "1999" +} + + +technical report with type +for those times when "Tech. Rep." needs to be modified +This reference did not have an address. +From the January 2000 issue of "IEEE Transactions on Communications", +page 117, reference #6. +@techreport{IEEEexample:techreptypeii, + author = "D. Middleton and A. D. Spaulding", + title = "A Tutorial Review of Elements of Weak Signal Detection + in Non-{G}aussian {EMI} Environments", + institution = "National Telecommunications and Information + Administration ({NTIA}), U.S. Dept. of Commerce", + type = "NTIA Report", + number = "86-194", + month = may, + year = "1986" +} + + +technical report, standards submission report +From the June 2004 issue of "IEEE Journal of Selected Areas in Communications", +page 928, reference #9. +Note that some journals do not abbreviate the task group: "TGe" => "Task Group E" +@techreport{IEEEexample:techrepstdsub, + author = "S. Kandala", + title = "Changes to {A}nnex {D}", + institution = "{IEEE} 802.11 {TGe}", + number = "02/680r0", + month = oct, + year = "2002" +} + + + + +an unpublished work +for unpublished types, the note field is required. IEEE usually +just uses the word "unpublished" for the note. +From the August 2001 issue of "IEEE/ACM Transactions on Networking", +page 391, reference #16. +@unpublished{IEEEexample:unpublished, + author = "T. J. Ott and N. Aggarwal", + title = "{TCP} over {ATM}: {ABR} or {UBR}", + note = "Unpublished" +} + + + + + +electronic with a howpublished information field +From the August 2001 issue of "IEEE/ACM Transactions on Networking", +page 391, reference #7. +@electronic{IEEEexample:electronhowinfo, + author = "V. Jacobson", + title = "Modified {TCP} Congestion Avoidance Algorithm", + howpublished = "end2end-interest mailing list", + url = "ftp://ftp.isi.edu/end2end/end2end-interest-1990.mail", + month = apr, + year = "1990" +} + + +electronic with a howpublished information field +From the August 2001 issue of "IEEE/ACM Transactions on Networking", +page 418, reference #31. +@electronic{IEEEexample:electronhowinfo2, + author = "V. Valloppillil and K. W. Ross", + title = "Cache Array Routing Protocol v1.1", + howpublished = "Internet draft", + url = "http://ds1.internic.net/internet-drafts/draft-vinod-carp-v1-03.txt", + year = "1998" +} + + +electronic with an organization and address +From the February 2002 issue of "IEEE/ACM Transactions on Networking", +page 114, reference #15. +@electronic{IEEEexample:electronorgadd, + author = "D. H. Lorenz and A. Orda", + title = "Optimal Partition of {QoS} Requirements on Unicast + Paths and Multicast Trees", + organization = "Dept. Elect. Eng., Technion", + address = "Haifa, Israel", + url = "ftp://ftp.technion.ac.il/pub/supported/ee/Network/lor.mopq98.ps", + month = jul, + year = "1998" +} + + + + + +U.S. patent +Use the type field to override the patent type. e.g., +type = "Patent Application" +The address is that of the assignee. Note that IEEE does not +display the assignee, the address, and only displays one date. +(if year is not present, the filed dates are used.) However, this +information should be entered as other BibTeX styles may use it. +alternatively, nationality could be entered as "U.S." +From the April 2000 issue of "IEEE Transactions on Communications", +page 542, reference #6. +@patent{IEEEexample:uspat, + author = "Ronald E. Sorace and Victor S. Reinhardt and + Steven A. Vaughn", + assignee = "Hughes Aircraft Company", + address = "Los Angeles, CA", + title = "High-Speed Digital-to-{RF} Converter", + nationality = "United States", + number = "5668842", + dayfiled = "28", + monthfiled = feb, + yearfiled = "1995", + day = "16", + month = sep, + year = "1997" +} + + +Japanese Patent +From the April 2000 issue of "IEEE Transactions on Communications", +page 556, reference #6. +@patent{IEEEexample:jppat, + author = "U. Hideki", + title = "Quadrature Modulation Circuit", + nationality = "Japanese", + number = "152932/92", + day = "20", + month = may, + year = "1992" +} + + +French Patent request, the language field must be entered in lower case +as this is the option name Babel uses. The nationality field needs to be +capitalized. Because this is a patent request, the date filed fields are +used while the date fields are left empty/missing. In other countries, +the words "Patent Application", etc. are used instead. +From the April 2000 issue of "IEEE Transactions on Communications", +page 556, reference #9. +@patent{IEEEexample:frenchpatreq, + author = "F. Kowalik and M. Isard", + title = "Estimateur d'un D{\'e}faut de Fonctionnement + d'un Modulateur en Quadrature et {\'E}tage de Modulation + l'Utilisant", + language = "french", + nationality = "French", + type = "Patent Request", + number = "9500261", + dayfiled = "11", + monthfiled = jan, + yearfiled = "1995" +} + + + + + +a periodical +From the April 2001 issue of "IEEE/ACM Transactions on Networking", +page 160, reference #1. +sort key is needed for sorting styles +@periodical{IEEEexample:periodical, + title = IEEE_M_PCOM # ", Special Issue on Wireless {ATM}", + volume = "3", + month = aug, + year = "1996", + key = "IEEE" +} + + + + + +standard, IEEE does not use the address for standards, but it is good +to provide one for BibTeX styles that use it. +From the August 2001 issue of "IEEE/ACM Transactions on Networking", +page 451, reference #2. +@standard{IEEEexample:standard, + title = "Wireless {LAN} Medium Access Control {(MAC)} and + Physical Layer {(PHY)} Specification", + organization = "IEEE", + address = "Piscataway, NJ", + number = "802.11", + year = "1997" +} + + +standard with type and revision, the type overrides the word standard +(or std.). Here a standard number is not available and a revision number +is used. +From the August 2000 issue of "IEEE Photonics Technology Letters", +page 1048, reference #13. +@standard{IEEEexample:standardproposed, + title = "Fiber Channel Physical Interface ({FC-PI})", + institution = "NCITS", + address = "Washington, DC", + type = "Working Draft Proposed Standard", + revision = "5.2", + year = "1999" +} + + +standard draft as a misc with author +From the May 2002 issue of "IEEE Journal of Selected Areas in +Communication", page 725, reference #16. +@misc{IEEEexample:draftasmisc, + author = "I. Widjaja and A. Elwalid", + title = "{MATE}: {MPLS} Adaptive Traffic Engineering", + howpublished = "IETF Draft", + year = "1999" +} + + + + + +misc for a techreport like reference +techreport is not perfectly suitable because this entry lacks +an institution field +From the August 2001 issue of "IEEE/ACM Transactions on Networking", +page 490, reference #22. +@misc{IEEEexample:miscforum, + author = "L. Roberts", + title = "Enhanced Proportional Rate Control Algorithm {PRCA}", + howpublished = "{ATM} Forum Contribution 94-0735R1", + month = aug, + year = "1994" +} + + +misc for a white paper +From the August 2001 issue of "IEEE/ACM Transactions on Networking", +page 478, reference #4 - Note that the reference there (improperly?) +used the author field for "Cisco". +@misc{IEEEexample:whitepaper, + title = "Advanced {QoS} Services for the Intelligent Internet", + howpublished = "White Paper", + organization = "Cisco", + month = may, + year = "1997" +} + + +misc for a data sheet +From the November 2000 issue of "IEEE Photonics Technology Letters", +page 1551, reference #6. +@misc{IEEEexample:datasheet, + title = "{PDCA12-70} Data Sheet", + organization = "Opto Speed SA", + address = "Mezzovico, Switzerland" +} + + + + + +Other unusual references + +a private communication as a misc entry type +sometimes the designation "personal communication" is used instead +From the June 2002 issue of "IEEE Transactions on Information Theory", +page 1725, reference #16. +@misc{IEEEexample:private, + author = "S. Konyagin", + howpublished = "private communication", + year = "1998" +} + + +an internet request for comments (RFC) as a misc entry type +It would also be nice to add a URL to these types of things. +RFCs can also be handled as electronic references. +From the April 2002 issue of "IEEE/ACM Transactions on Networking", +page 181, reference #14. +@misc{IEEEexample:miscrfc, + author = "K. K. Ramakrishnan and S. Floyd", + title = "A Proposal to Add Explicit Congestion + Notification ({ECN}) to {IP}", + howpublished = "RFC 2481", + month = jan, + year = "1999" +} + + +a software package as a manual +From the June 2002 issue of "IEEE/ASME Journal of Microelectromechanical +Systems", page 205, reference #20. +Sometimes they put the version/release information in the title. +@manual{IEEEexample:softmanual, + title = "SaberDesigner Reference Manual", + organization = "Analogy, Inc.", + address = "Beaverton, OR", + year = "1998", + note = "Release 4.3" +} + + +a software package as an electronic reference +From the February 2003 issue of "IEEE/ACM Transactions on Networking", +page 46, reference #24. If there is no author or organization, a sorting +key is required for sorting styles. It might be a good idea to include +month and year fields as well. +@electronic{IEEEexample:softonline, + title = "Ucb/lbnl/vint Network Simulator---ns (Version 2)", + url = "http://www-mash.cs.berkeley.edu/ns/", + key = "ns" +} + + +misc for a German regulation +In German, the first letters of nouns are capitalized, so we do so here. +From the June 2002 issue of "IEEE Journal in Selected Areas in +Communication", page 892, reference #9. +@misc{IEEEexample:miscgermanreg, + title = "{M}essung von {S}t{\"o}rfeldern an {A}nlagen + und {L}eitungen der {T}elekommunikation im + {F}requenzbereich 9 {kHz} bis 3 {GHz}", + language = "german", + howpublished = "{M}e{\ss}vorschrift {R}eg {TP} {MV} 05", + organization = "Regulierungsbeh{\"o}rde f{\"u}r {T}elekommunikation und + {P}ost ({R}eg {TP})" +} + + + +Ways to handle things like CCSDS's Blue Books +journal article with a URL. However, this is not a very good approach +because the Blue Books are not really journals and the author field has +to be abused. +From the June 2002 issue of "IEEE Transactions on Information Theory", +page 1461, reference #7. +@article{IEEEexample:bluebookarticle, + author = "{Consulative Committee for Space Data Systems (CCSDS)}", + title = "Telemetry Channel Coding", + journal = "Blue Book", + number = "4", + year = "1999", + url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf" +} + + +CCSDS's Blue Book handled as a book +However, it is not a good idea to have to use the author field for +an organization (done here because the book entry type requires an +author field). +@book{IEEEexample:bluebookbook, + author = "{Consulative Committee for Space Data Systems (CCSDS)}", + title = "Telemetry Channel Coding", + series = "Blue Book", + number = "4", + publisher = "{CCSDS}", + address = "Newport Beach, {CA}", + year = "1999", + url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf" +} + + +CCSDS's Blue Book handled as a manual +This is a much better approach, but uses the howpublished field. +@manual{IEEEexample:bluebookmanual, + title = "Telemetry Channel Coding", + howpublished = "ser. Blue Book, No. 4", + organization = "Consulative Committee for Space Data Systems (CCSDS)", + address = "Newport Beach, CA", + year = "1999", + url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf" +} + + + +CCSDS's Blue Book handled as a standard +Probably the best approach for this particular case because the work +is standard related. Note that IEEE does not display the address for +standards. +@standard{IEEEexample:bluebookstandard, + title = "Telemetry Channel Coding", + howpublished = "ser. Blue Book, No. 4", + organization = "Consulative Committee for Space Data Systems (CCSDS)", + address = "Newport Beach, CA", + type = "Recommendation for Space Data System Standard", + number = "101.0-B-4", + month = May, + year = "1999", + url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf" +} + + + + + + + + +An example of a IEEEtran control entry which can change some IEEEtran.bst +settings. An entry like this must be cited via \bstctlcite{} command +before the first real \cite{}. The same entry key cannot be called twice +(just like multiple \cite{} of the same entry key place only one entry +in the bibliography.) +The available control fields are: + +CTLuse_article_number +"no" turns off the display of the number for articles. +"yes" enables + +CTLuse_paper +"no" turns off the display of the paper and type fields in inproceedings. +"yes" enables + +CTLuse_forced_etal +"no" turns off the forced use of "et al." +"yes" enables + +CTLmax_names_forced_etal +The maximum number of names that can be present beyond which an "et al." +usage is forced. Be sure that CTLnames_show_etal (below) +is not greater than this value! + +CTLnames_show_etal +The number of names that will be shown with a forced "et al.". +Must be less than or equal to CTLmax_names_forced_etal + +CTLuse_alt_spacing +"no" turns off the alternate interword spacing for entries with URLs. +"yes" enables + +CTLalt_stretch_factor +If alternate interword spacing for entries with URLs is enabled, this is +the interword spacing stretch factor that will be used. For example, the +default "4" here means that the interword spacing in entries with URLs can +stretch to four times normal. Does not have to be an integer. + +CTLdash_repeated_names +"no" turns off the "dashification" of repeated (i.e., identical to those +of the previous entry) names. IEEE normally does this. +"yes" enables + +CTLname_format_string +The name format control string as explained in the BibTeX style hacking +guide. +IEEE style "{f.~}{vv~}{ll}{, jj}" is the default, + +CTLname_latex_cmd +A LaTeX command that each name will be fed to (e.g., "\textsc"). +Leave empty if no special font is desired for the names. +The default is empty. + +CTLname_url_prefix +The prefix text used before URLs. +The default is "[Online]. Available:" A space will be inserted after this +text. If this space is not wanted, just use \relax at the end of the +prefix text. + + +Those fields that are not to be changed can be left out. +@IEEEtranBSTCTL{IEEEexample:BSTcontrol, + CTLuse_article_number = "yes", + CTLuse_paper = "yes", + CTLuse_forced_etal = "no", + CTLmax_names_forced_etal = "10", + CTLnames_show_etal = "1", + CTLuse_alt_spacing = "yes", + CTLalt_stretch_factor = "4", + CTLdash_repeated_names = "yes", + CTLname_format_string = "{f.~}{vv~}{ll}{, jj}", + CTLname_latex_cmd = "", + CTLname_url_prefix = "[Online]. Available:" +} + + diff -r 000000000000 -r 8319d82cab07 bibtex/IEEEfull.bib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bibtex/IEEEfull.bib Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,431 @@ + +IEEEfull.bib +V1.13 (2008/09/30) +Copyright (c) 2002-2008 by Michael Shell +See: http://www.michaelshell.org/ +for current contact information. + +BibTeX bibliography string definitions of the FULL titles of +IEEE journals and magazines and online publications. + +This file is designed for bibliography styles that require +full-length titles and is not for use in bibliographies that +abbreviate titles. + +Support sites: +http://www.michaelshell.org/tex/ieeetran/ +http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +and/or +http://www.ieee.org/ + +Special thanks to Laura Hyslop and ken Rawson of IEEE for their help +in obtaining the information needed to compile this file. Also, +Volker Kuhlmann and Moritz Borgmann kindly provided some corrections +and additions. + +************************************************************************* +Legal Notice: +This code is offered as-is without any warranty either expressed or +implied; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE! +User assumes all risk. +In no event shall IEEE or any contributor to this code be liable for +any damages or losses, including, but not limited to, incidental, +consequential, or any other damages, resulting from the use or misuse +of any information contained here. + +All comments are the opinions of their respective authors and are not +necessarily endorsed by the IEEE. + +This work is distributed under the LaTeX Project Public License (LPPL) +( http://www.latex-project.org/ ) version 1.3, and may be freely used, +distributed and modified. A copy of the LPPL, version 1.3, is included +in the base LaTeX documentation of all distributions of LaTeX released +2003/12/01 or later. +Retain all contribution notices and credits. +** Modified files should be clearly indicated as such, including ** +** renaming them and changing author support contact information. ** + +File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib, + IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst, + IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf +************************************************************************* + + +USAGE: + +\bibliographystyle{mybstfile} +\bibliography{IEEEfull,mybibfile} + +where the IEEE titles in the .bib database entries use the strings +defined here. e.g., + + + journal = IEEE_J_AC, + + +to yield "{IEEE} Transactions on Automatic Control" + + +WARNING: IEEE uses abbreviated journal titles in their bibliographies! +Because this file provides the full titles, you should NOT use this file +for work that is to be submitted to the IEEE. + +For IEEE work, you should use the abbreviated titles provided in the +companion file, IEEEabrv.bib. + + +** NOTES ** + + 1. Journals have been grouped according to subject in order to make it + easier to locate and extract the definitions for related journals - + as most works use references that are confined to a single topic. + Magazines are listed in straight alphabetical order. + + 2. String names are closely based on IEEE's own internal acronyms. + + 3. Older, out-of-print IEEE titles are included (but not including titles + dating prior to IEEE's formation from the IRE and AIEE in 1963). + + + + + + +IEEE Journals + + + +aerospace and military +@STRING{IEEE_J_AES = "{IEEE} Transactions on Aerospace and Electronic Systems"} +@STRING{IEEE_J_ANE = "{IEEE} Transactions on Aerospace and Navigational Electronics"} +@STRING{IEEE_J_ANNE = "{IEEE} Transactions on Aeronautical and Navigational Electronics"} +@STRING{IEEE_J_AS = "{IEEE} Transactions on Aerospace"} +@STRING{IEEE_J_AIRE = "{IEEE} Transactions on Airborne Electronics"} +@STRING{IEEE_J_MIL = "{IEEE} Transactions on Military Electronics"} + + + +autos, transportation and vehicles (non-aerospace) +@STRING{IEEE_J_ITS = "{IEEE} Transactions on Intelligent Transportation Systems"} +@STRING{IEEE_J_VT = "{IEEE} Transactions on Vehicular Technology"} +@STRING{IEEE_J_VC = "{IEEE} Transactions on Vehicular Communications"} + + + +circuits, signals, systems, audio and controls +@STRING{IEEE_J_SPL = "{IEEE} Signal Processing Letters"} +@STRING{IEEE_J_ASSP = "{IEEE} Transactions on Acoustics, Speech, and Signal Processing"} +@STRING{IEEE_J_AU = "{IEEE} Transactions on Audio"} +@STRING{IEEE_J_AUEA = "{IEEE} Transactions on Audio and Electroacoustics"} +@STRING{IEEE_J_AC = "{IEEE} Transactions on Automatic Control"} +@STRING{IEEE_J_CAS = "{IEEE} Transactions on Circuits and Systems"} +@STRING{IEEE_J_CASVT = "{IEEE} Transactions on Circuits and Systems for Video Technology"} +@STRING{IEEE_J_CASI = "{IEEE} Transactions on Circuits and Systems---Part {I}: Fundamental Theory and Applications"} +@STRING{IEEE_J_CASII = "{IEEE} Transactions on Circuits and Systems---Part {II}: Analog and Digital Signal Processing"} +in 2004 CASI and CASII renamed part title to CASI_RP and CASII_EB, respectively. +@STRING{IEEE_J_CASI_RP = "{IEEE} Transactions on Circuits and Systems---Part {I}: Regular Papers"} +@STRING{IEEE_J_CASII_EB = "{IEEE} Transactions on Circuits and Systems---Part {II}: Express Briefs"} +@STRING{IEEE_J_CT = "{IEEE} Transactions on Circuit Theory"} +@STRING{IEEE_J_CST = "{IEEE} Transactions on Control Systems Technology"} +@STRING{IEEE_J_SP = "{IEEE} Transactions on Signal Processing"} +@STRING{IEEE_J_SU = "{IEEE} Transactions on Sonics and Ultrasonics"} +@STRING{IEEE_J_SAP = "{IEEE} Transactions on Speech and Audio Processing"} +@STRING{IEEE_J_STSP = "{IEEE} Journal of Selected Topics in Signal Processing"} +@STRING{IEEE_J_SYST = "{IEEE} Systems Journal"} +@STRING{IEEE_J_UE = "{IEEE} Transactions on Ultrasonics Engineering"} +@STRING{IEEE_J_UFFC = "{IEEE} Transactions on Ultrasonics, Ferroelectrics, and Frequency Control"} + + + +communications +@STRING{IEEE_J_COML = "{IEEE} Communications Letters"} +@STRING{IEEE_J_JSAC = "{IEEE} Journal on Selected Areas in Communications"} +@STRING{IEEE_J_COM = "{IEEE} Transactions on Communications"} +@STRING{IEEE_J_COMT = "{IEEE} Transactions on Communication Technology"} +@STRING{IEEE_J_WCOM = "{IEEE} Transactions on Wireless Communications"} + + + +components, packaging and manufacturing +@STRING{IEEE_J_ADVP = "{IEEE} Transactions on Advanced Packaging"} +@STRING{IEEE_J_CHMT = "{IEEE} Transactions on Components, Hybrids and Manufacturing Technology"} +@STRING{IEEE_J_CPMTA = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology---Part {A}"} +@STRING{IEEE_J_CPMTB = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology---Part {B}: Advanced Packaging"} +@STRING{IEEE_J_CPMTC = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology---Part {C}: Manufacturing"} +@STRING{IEEE_J_CAPT = "{IEEE} Transactions on Components and Packaging Technology"} +@STRING{IEEE_J_CAPTS = "{IEEE} Transactions on Components and Packaging Technologies"} +@STRING{IEEE_J_CPART = "{IEEE} Transactions on Component Parts"} +@STRING{IEEE_J_EPM = "{IEEE} Transactions on Electronics Packaging Manufacturing"} +@STRING{IEEE_J_MFT = "{IEEE} Transactions on Manufacturing Technology"} +@STRING{IEEE_J_PHP = "{IEEE} Transactions on Parts, Hybrids and Packaging"} +@STRING{IEEE_J_PMP = "{IEEE} Transactions on Parts, Materials and Packaging"} + + + +CAD +@STRING{IEEE_J_TCAD = "{IEEE} Journal on Technology in Computer Aided Design"} +@STRING{IEEE_J_CAD = "{IEEE} Transactions on Computer-Aided Design of Integrated Circuits and Systems"} + + + +coding, data, information, knowledge +@STRING{IEEE_J_IT = "{IEEE} Transactions on Information Theory"} +@STRING{IEEE_J_KDE = "{IEEE} Transactions on Knowledge and Data Engineering"} + + + +computers, computation, networking and software +@STRING{IEEE_J_C = "{IEEE} Transactions on Computers"} +@STRING{IEEE_J_CAL = "{IEEE} Computer Architecture Letters"} +@STRING{IEEE_J_DSC = "{IEEE} Transactions on Dependable and Secure Computing"} +@STRING{IEEE_J_ECOMP = "{IEEE} Transactions on Electronic Computers"} +@STRING{IEEE_J_EVC = "{IEEE} Transactions on Evolutionary Computation"} +@STRING{IEEE_J_FUZZ = "{IEEE} Transactions on Fuzzy Systems"} +@STRING{IEEE_J_IFS = "{IEEE} Transactions on Information Forensics and Security"} +@STRING{IEEE_J_MC = "{IEEE} Transactions on Mobile Computing"} +@STRING{IEEE_J_NET = "{IEEE/ACM} Transactions on Networking"} +@STRING{IEEE_J_NN = "{IEEE} Transactions on Neural Networks"} +@STRING{IEEE_J_NSM = "{IEEE} Transactions on Network and Service Management"} +@STRING{IEEE_J_PDS = "{IEEE} Transactions on Parallel and Distributed Systems"} +@STRING{IEEE_J_SC = "{IEEE} Transactions on Services Computing"} +@STRING{IEEE_J_SE = "{IEEE} Transactions on Software Engineering"} + + + +computer graphics, imaging, and multimedia +@STRING{IEEE_J_JDT = "{IEEE/OSA} Journal of Display Technology"} +@STRING{IEEE_J_IP = "{IEEE} Transactions on Image Processing"} +@STRING{IEEE_J_MM = "{IEEE} Transactions on Multimedia"} +@STRING{IEEE_J_VCG = "{IEEE} Transactions on Visualization and Computer Graphics"} + + + +cybernetics, ergonomics, robots, man-machine, and automation +@STRING{IEEE_J_ASE = "{IEEE} Transactions on Automation Science and Engineering"} +@STRING{IEEE_J_JRA = "{IEEE} Journal of Robotics and Automation"} +@STRING{IEEE_J_H = "{IEEE} Transactions on Haptics"} +@STRING{IEEE_J_HFE = "{IEEE} Transactions on Human Factors in Electronics"} +@STRING{IEEE_J_MMS = "{IEEE} Transactions on Man-Machine Systems"} +@STRING{IEEE_J_PAMI = "{IEEE} Transactions on Pattern Analysis and Machine Intelligence"} +in 1989 JRA became RA +in August 2004, RA split into ASE and RO +@STRING{IEEE_J_RA = "{IEEE} Transactions on Robotics and Automation"} +@STRING{IEEE_J_RO = "{IEEE} Transactions on Robotics"} +@STRING{IEEE_J_SMC = "{IEEE} Transactions on Systems, Man, and Cybernetics"} +@STRING{IEEE_J_SMCA = "{IEEE} Transactions on Systems, Man, and Cybernetics---Part {A}: Systems and Humans"} +@STRING{IEEE_J_SMCB = "{IEEE} Transactions on Systems, Man, and Cybernetics---Part {B}: Cybernetics"} +@STRING{IEEE_J_SMCC = "{IEEE} Transactions on Systems, Man, and Cybernetics---Part {C}: Applications and Reviews"} +@STRING{IEEE_J_SSC = "{IEEE} Transactions on Systems Science and Cybernetics"} + + + +earth, wind, fire and water +@STRING{IEEE_J_GE = "{IEEE} Transactions on Geoscience Electronics"} +@STRING{IEEE_J_GRS = "{IEEE} Transactions on Geoscience and Remote Sensing"} +@STRING{IEEE_J_GRSL = "{IEEE} Geoscience and Remote Sensing Letters"} +@STRING{IEEE_J_OE = "{IEEE} Journal of Oceanic Engineering"} +@STRING{IEEE_J_STARS = "{IEEE} Journal of Selected Topics in Applied Earth Observations and Remote Sensing"} + + + +education, engineering, history, IEEE, professional +@STRING{IEEE_J_CJECE = "Canadian Journal of Electrical and Computer Engineering"} +@STRING{IEEE_J_PROC = "Proceedings of the {IEEE}"} +@STRING{IEEE_J_EDU = "{IEEE} Transactions on Education"} +@STRING{IEEE_J_EM = "{IEEE} Transactions on Engineering Management"} +@STRING{IEEE_J_EWS = "{IEEE} Transactions on Engineering Writing and Speech"} +@STRING{IEEE_J_LT = "{IEEE} Transactions on Learning Technologies"} +@STRING{IEEE_J_PC = "{IEEE} Transactions on Professional Communication"} + + + +electromagnetics, antennas, EMI, magnetics and microwave +@STRING{IEEE_J_AWPL = "{IEEE} Antennas and Wireless Propagation Letters"} +@STRING{IEEE_J_MGWL = "{IEEE} Microwave and Guided Wave Letters"} +@STRING{IEEE_J_MWCL = "{IEEE} Microwave and Wireless Components Letters"} +@STRING{IEEE_J_AP = "{IEEE} Transactions on Antennas and Propagation"} +@STRING{IEEE_J_EMC = "{IEEE} Transactions on Electromagnetic Compatibility"} +@STRING{IEEE_J_MAG = "{IEEE} Transactions on Magnetics"} +@STRING{IEEE_J_MTT = "{IEEE} Transactions on Microwave Theory and Techniques"} +@STRING{IEEE_J_RFI = "{IEEE} Transactions on Radio Frequency Interference"} +@STRING{IEEE_J_TJMJ = "{IEEE} Translation Journal on Magnetics in Japan"} + + + +energy and power +@STRING{IEEE_J_EC = "{IEEE} Transactions on Energy Conversion"} +@STRING{IEEE_J_PEL = "{IEEE} Power Electronics Letters"} +@STRING{IEEE_J_PWRAS = "{IEEE} Transactions on Power Apparatus and Systems"} +@STRING{IEEE_J_PWRD = "{IEEE} Transactions on Power Delivery"} +@STRING{IEEE_J_PWRE = "{IEEE} Transactions on Power Electronics"} +@STRING{IEEE_J_PWRS = "{IEEE} Transactions on Power Systems"} + + + +industrial, commercial and consumer +@STRING{IEEE_J_APPIND = "{IEEE} Transactions on Applications and Industry"} +@STRING{IEEE_J_BC = "{IEEE} Transactions on Broadcasting"} +@STRING{IEEE_J_BCTV = "{IEEE} Transactions on Broadcast and Television Receivers"} +@STRING{IEEE_J_CE = "{IEEE} Transactions on Consumer Electronics"} +@STRING{IEEE_J_IE = "{IEEE} Transactions on Industrial Electronics"} +@STRING{IEEE_J_IECI = "{IEEE} Transactions on Industrial Electronics and Control Instrumentation"} +@STRING{IEEE_J_IA = "{IEEE} Transactions on Industry Applications"} +@STRING{IEEE_J_IGA = "{IEEE} Transactions on Industry and General Applications"} +@STRING{IEEE_J_IINF = "{IEEE} Transactions on Industrial Informatics"} +@STRING{IEEE_J_PSE = "{IEEE} Journal of Product Safety Engineering"} + + + +instrumentation and measurement +@STRING{IEEE_J_IM = "{IEEE} Transactions on Instrumentation and Measurement"} + + + +insulation and materials +@STRING{IEEE_J_JEM = "{IEEE/TMS} Journal of Electronic Materials"} +@STRING{IEEE_J_DEI = "{IEEE} Transactions on Dielectrics and Electrical Insulation"} +@STRING{IEEE_J_EI = "{IEEE} Transactions on Electrical Insulation"} + + + +mechanical +@STRING{IEEE_J_MECH = "{IEEE/ASME} Transactions on Mechatronics"} +@STRING{IEEE_J_MEMS = "{IEEE/ASME} Journal of Microelectromechanical Systems"} + + + +medical and biological +@STRING{IEEE_J_BCAS = "{IEEE} Transactions on Biomedical Circuits and Systems"} +@STRING{IEEE_J_BME = "{IEEE} Transactions on Biomedical Engineering"} +Note: The B-ME journal later dropped the hyphen and became the BME. +@STRING{IEEE_J_B-ME = "{IEEE} Transactions on Bio-Medical Engineering"} +@STRING{IEEE_J_BMELC = "{IEEE} Transactions on Bio-Medical Electronics"} +@STRING{IEEE_J_CBB = "{IEEE/ACM} Transactions on Computational Biology and Bioinformatics"} +@STRING{IEEE_J_ITBM = "{IEEE} Transactions on Information Technology in Biomedicine"} +@STRING{IEEE_J_ME = "{IEEE} Transactions on Medical Electronics"} +@STRING{IEEE_J_MI = "{IEEE} Transactions on Medical Imaging"} +@STRING{IEEE_J_NB = "{IEEE} Transactions on NanoBioscience"} +@STRING{IEEE_J_NSRE = "{IEEE} Transactions on Neural Systems and Rehabilitation Engineering"} +@STRING{IEEE_J_RBME = "{IEEE} Reviews in Biomedical Engineering"} +@STRING{IEEE_J_RE = "{IEEE} Transactions on Rehabilitation Engineering"} + + + +optics, lightwave and photonics +@STRING{IEEE_J_PTL = "{IEEE} Photonics Technology Letters"} +@STRING{IEEE_J_JLT = "{IEEE/OSA} Journal of Lightwave Technology"} + + + +physics, electrons, nanotechnology, nuclear and quantum electronics +@STRING{IEEE_J_EDL = "{IEEE} Electron Device Letters"} +@STRING{IEEE_J_JQE = "{IEEE} Journal of Quantum Electronics"} +@STRING{IEEE_J_JSTQE = "{IEEE} Journal of Selected Topics in Quantum Electronics"} +@STRING{IEEE_J_ED = "{IEEE} Transactions on Electron Devices"} +@STRING{IEEE_J_NANO = "{IEEE} Transactions on Nanotechnology"} +@STRING{IEEE_J_NS = "{IEEE} Transactions on Nuclear Science"} +@STRING{IEEE_J_PS = "{IEEE} Transactions on Plasma Science"} + + + +reliability +@STRING{IEEE_J_DMR = "{IEEE} Transactions on Device and Materials Reliability"} +@STRING{IEEE_J_R = "{IEEE} Transactions on Reliability"} + + + +semiconductors, superconductors, electrochemical and solid state +@STRING{IEEE_J_ESSL = "{IEEE/ECS} Electrochemical and Solid-State Letters"} +@STRING{IEEE_J_JSSC = "{IEEE} Journal of Solid-State Circuits"} +@STRING{IEEE_J_ASC = "{IEEE} Transactions on Applied Superconductivity"} +@STRING{IEEE_J_SM = "{IEEE} Transactions on Semiconductor Manufacturing"} + + + +sensors +@STRING{IEEE_J_SENSOR = "{IEEE} Sensors Journal"} + + + +VLSI +@STRING{IEEE_J_VLSI = "{IEEE} Transactions on Very Large Scale Integration ({VLSI}) Systems"} + + + + + + +IEEE Magazines + + + +@STRING{IEEE_M_AES = "{IEEE} Aerospace and Electronics Systems Magazine"} +@STRING{IEEE_M_HIST = "{IEEE} Annals of the History of Computing"} +@STRING{IEEE_M_AP = "{IEEE} Antennas and Propagation Magazine"} +@STRING{IEEE_M_ASSP = "{IEEE} {ASSP} Magazine"} +@STRING{IEEE_M_CD = "{IEEE} Circuits and Devices Magazine"} +@STRING{IEEE_M_CAS = "{IEEE} Circuits and Systems Magazine"} +@STRING{IEEE_M_COM = "{IEEE} Communications Magazine"} +@STRING{IEEE_M_COMSOC = "{IEEE} Communications Society Magazine"} +@STRING{IEEE_M_CIM = "{IEEE} Computational Intelligence Magazine"} +CSEM changed to CSE in 1999 +@STRING{IEEE_M_CSE = "{IEEE} Computing in Science and Engineering"} +@STRING{IEEE_M_CSEM = "{IEEE} Computational Science and Engineering Magazine"} +@STRING{IEEE_M_C = "{IEEE} Computer"} +@STRING{IEEE_M_CAP = "{IEEE} Computer Applications in Power"} +@STRING{IEEE_M_CGA = "{IEEE} Computer Graphics and Applications"} +@STRING{IEEE_M_CONC = "{IEEE} Concurrency"} +@STRING{IEEE_M_CS = "{IEEE} Control Systems Magazine"} +@STRING{IEEE_M_DTC = "{IEEE} Design and Test of Computers"} +@STRING{IEEE_M_EI = "{IEEE} Electrical Insulation Magazine"} +@STRING{IEEE_M_ETR = "{IEEE} ElectroTechnology Review"} +@STRING{IEEE_M_EMB = "{IEEE} Engineering in Medicine and Biology Magazine"} +@STRING{IEEE_M_EMR = "{IEEE} Engineering Management Review"} +@STRING{IEEE_M_EXP = "{IEEE} Expert"} +@STRING{IEEE_M_IA = "{IEEE} Industry Applications Magazine"} +@STRING{IEEE_M_IE = "{IEEE} Industrial Electronics Magazine"} +@STRING{IEEE_M_IM = "{IEEE} Instrumentation and Measurement Magazine"} +@STRING{IEEE_M_IS = "{IEEE} Intelligent Systems"} +@STRING{IEEE_M_ITS = "{IEEE} Intelligent Transportation Systems Magazine"} +@STRING{IEEE_M_IC = "{IEEE} Internet Computing"} +@STRING{IEEE_M_ITP = "{IEEE} {IT} Professional"} +@STRING{IEEE_M_MICRO = "{IEEE} Micro"} +@STRING{IEEE_M_MW = "{IEEE} Microwave Magazine"} +@STRING{IEEE_M_MM = "{IEEE} Multimedia"} +@STRING{IEEE_M_NANO = "{IEEE} Nanotechnology Magazine"} +@STRING{IEEE_M_NET = "{IEEE} Network"} +@STRING{IEEE_M_PCOM = "{IEEE} Personal Communications Magazine"} +@STRING{IEEE_M_POT = "{IEEE} Potentials"} +CAP and PER merged to form PE in 2003 +@STRING{IEEE_M_PE = "{IEEE} Power and Energy Magazine"} +@STRING{IEEE_M_PER = "{IEEE} Power Engineering Review"} +@STRING{IEEE_M_PVC = "{IEEE} Pervasive Computing"} +@STRING{IEEE_M_RA = "{IEEE} Robotics and Automation Magazine"} +@STRING{IEEE_M_SAP = "{IEEE} Security and Privacy"} +@STRING{IEEE_M_SP = "{IEEE} Signal Processing Magazine"} +@STRING{IEEE_M_S = "{IEEE} Software"} +@STRING{IEEE_M_SPECT = "{IEEE} Spectrum"} +@STRING{IEEE_M_TS = "{IEEE} Technology and Society Magazine"} +@STRING{IEEE_M_VT = "{IEEE} Vehicular Technology Magazine"} +@STRING{IEEE_M_WC = "{IEEE} Wireless Communications Magazine"} +@STRING{IEEE_M_TODAY = "Today's Engineer"} + + + + + + +IEEE Online Publications + + + +@STRING{IEEE_O_CSTO = "{IEEE} Communications Surveys and Tutorials"} +@STRING{IEEE_O_DSO = "{IEEE} Distributed Systems Online"} + + + + + +-- +EOF diff -r 000000000000 -r 8319d82cab07 bibtex/IEEEtran.bst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bibtex/IEEEtran.bst Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,2425 @@ +%% +%% IEEEtran.bst +%% BibTeX Bibliography Style file for IEEE Journals and Conferences (unsorted) +%% Version 1.13 (2008/09/30) +%% +%% Copyright (c) 2003-2008 Michael Shell +%% +%% Original starting code base and algorithms obtained from the output of +%% Patrick W. Daly's makebst package as well as from prior versions of +%% IEEE BibTeX styles: +%% +%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988) +%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993) +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% and/or +%% http://www.ieee.org/ +%% +%% For use with BibTeX version 0.99a or later +%% +%% This is a numerical citation style. +%% +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%% +%% This work is distributed under the LaTeX Project Public License (LPPL) +%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, +%% distributed and modified. A copy of the LPPL, version 1.3, is included +%% in the base LaTeX documentation of all distributions of LaTeX released +%% 2003/12/01 or later. +%% Retain all contribution notices and credits. +%% ** Modified files should be clearly indicated as such, including ** +%% ** renaming them and changing author support contact information. ** +%% +%% File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib, +%% IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst, +%% IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf +%%************************************************************************* +% +% +% Changelog: +% +% 1.00 (2002/08/13) Initial release +% +% 1.10 (2002/09/27) +% 1. Corrected minor bug for improperly formed warning message when a +% book was not given a title. Thanks to Ming Kin Lai for reporting this. +% 2. Added support for CTLname_format_string and CTLname_latex_cmd fields +% in the BST control entry type. +% +% 1.11 (2003/04/02) +% 1. Fixed bug with URLs containing underscores when using url.sty. Thanks +% to Ming Kin Lai for reporting this. +% +% 1.12 (2007/01/11) +% 1. Fixed bug with unwanted comma before "et al." when an entry contained +% more than two author names. Thanks to Pallav Gupta for reporting this. +% 2. Fixed bug with anomalous closing quote in tech reports that have a +% type, but without a number or address. Thanks to Mehrdad Mirreza for +% reporting this. +% 3. Use braces in \providecommand in begin.bib to better support +% latex2html. TeX style length assignments OK with recent versions +% of latex2html - 1.71 (2002/2/1) or later is strongly recommended. +% Use of the language field still causes trouble with latex2html. +% Thanks to Federico Beffa for reporting this. +% 4. Added IEEEtran.bst ID and version comment string to .bbl output. +% 5. Provide a \BIBdecl hook that allows the user to execute commands +% just prior to the first entry. +% 6. Use default urlstyle (is using url.sty) of "same" rather than rm to +% better work with a wider variety of bibliography styles. +% 7. Changed month abbreviations from Sept., July and June to Sep., Jul., +% and Jun., respectively, as IEEE now does. Thanks to Moritz Borgmann +% for reporting this. +% 8. Control entry types should not be considered when calculating longest +% label width. +% 9. Added alias www for electronic/online. +% 10. Added CTLname_url_prefix control entry type. +% +% 1.13 (2008/09/30) +% 1. Fixed bug with edition number to ordinal conversion. Thanks to +% Michael Roland for reporting this and correcting the algorithm. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% These are the defaults for the user adjustable controls. The values used +% here can be overridden by the user via IEEEtranBSTCTL entry type. + +% NOTE: The recommended LaTeX command to invoke a control entry type is: +% +%\makeatletter +%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}} +%\def\@bstctlcite[#1]#2{\@bsphack +% \@for\@citeb:=#2\do{% +% \edef\@citeb{\expandafter\@firstofone\@citeb}% +% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}% +% \@esphack} +%\makeatother +% +% It is called at the start of the document, before the first \cite, like: +% \bstctlcite{IEEEexample:BSTcontrol} +% +% IEEEtran.cls V1.6 and later does provide this command. + + + +% #0 turns off the display of the number for articles. +% #1 enables +FUNCTION {default.is.use.number.for.article} { #1 } + + +% #0 turns off the display of the paper and type fields in @inproceedings. +% #1 enables +FUNCTION {default.is.use.paper} { #1 } + + +% #0 turns off the forced use of "et al." +% #1 enables +FUNCTION {default.is.forced.et.al} { #0 } + +% The maximum number of names that can be present beyond which an "et al." +% usage is forced. Be sure that num.names.shown.with.forced.et.al (below) +% is not greater than this value! +% Note: There are many instances of references in IEEE journals which have +% a very large number of authors as well as instances in which "et al." is +% used profusely. +FUNCTION {default.max.num.names.before.forced.et.al} { #10 } + +% The number of names that will be shown with a forced "et al.". +% Must be less than or equal to max.num.names.before.forced.et.al +FUNCTION {default.num.names.shown.with.forced.et.al} { #1 } + + +% #0 turns off the alternate interword spacing for entries with URLs. +% #1 enables +FUNCTION {default.is.use.alt.interword.spacing} { #1 } + +% If alternate interword spacing for entries with URLs is enabled, this is +% the interword spacing stretch factor that will be used. For example, the +% default "4" here means that the interword spacing in entries with URLs can +% stretch to four times normal. Does not have to be an integer. Note that +% the value specified here can be overridden by the user in their LaTeX +% code via a command such as: +% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to +% that via the IEEEtranBSTCTL entry type. +FUNCTION {default.ALTinterwordstretchfactor} { "4" } + + +% #0 turns off the "dashification" of repeated (i.e., identical to those +% of the previous entry) names. IEEE normally does this. +% #1 enables +FUNCTION {default.is.dash.repeated.names} { #1 } + + +% The default name format control string. +FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" } + + +% The default LaTeX font command for the names. +FUNCTION {default.name.latex.cmd}{ "" } + + +% The default URL prefix. +FUNCTION {default.name.url.prefix}{ "[Online]. Available:" } + + +% Other controls that cannot be accessed via IEEEtranBSTCTL entry type. + +% #0 turns off the terminal startup banner/completed message so as to +% operate more quietly. +% #1 enables +FUNCTION {is.print.banners.to.terminal} { #1 } + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% FILE VERSION AND BANNER %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION{bst.file.version} { "1.13" } +FUNCTION{bst.file.date} { "2008/09/30" } +FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" } + +FUNCTION {banner.message} +{ is.print.banners.to.terminal + { "-- IEEEtran.bst version" " " * bst.file.version * + " (" * bst.file.date * ") " * "by Michael Shell." * + top$ + "-- " bst.file.website * + top$ + "-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." * + top$ + } + { skip$ } + if$ +} + +FUNCTION {completed.message} +{ is.print.banners.to.terminal + { "" + top$ + "Done." + top$ + } + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING CONSTANTS %% +%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {bbl.and}{ "and" } +FUNCTION {bbl.etal}{ "et~al." } +FUNCTION {bbl.editors}{ "eds." } +FUNCTION {bbl.editor}{ "ed." } +FUNCTION {bbl.edition}{ "ed." } +FUNCTION {bbl.volume}{ "vol." } +FUNCTION {bbl.of}{ "of" } +FUNCTION {bbl.number}{ "no." } +FUNCTION {bbl.in}{ "in" } +FUNCTION {bbl.pages}{ "pp." } +FUNCTION {bbl.page}{ "p." } +FUNCTION {bbl.chapter}{ "ch." } +FUNCTION {bbl.paper}{ "paper" } +FUNCTION {bbl.part}{ "pt." } +FUNCTION {bbl.patent}{ "Patent" } +FUNCTION {bbl.patentUS}{ "U.S." } +FUNCTION {bbl.revision}{ "Rev." } +FUNCTION {bbl.series}{ "ser." } +FUNCTION {bbl.standard}{ "Std." } +FUNCTION {bbl.techrep}{ "Tech. Rep." } +FUNCTION {bbl.mthesis}{ "Master's thesis" } +FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" } +FUNCTION {bbl.st}{ "st" } +FUNCTION {bbl.nd}{ "nd" } +FUNCTION {bbl.rd}{ "rd" } +FUNCTION {bbl.th}{ "th" } + + +% This is the LaTeX spacer that is used when a larger than normal space +% is called for (such as just before the address:publisher). +FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " } + +% The LaTeX code for dashes that are used to represent repeated names. +% Note: Some older IEEE journals used something like +% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along +% the baseline. However, IEEE now uses a thinner, above baseline, +% six dash long sequence. +FUNCTION {repeated.name.dashes} { "------" } + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% PREDEFINED STRING MACROS %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +MACRO {jan} {"Jan."} +MACRO {feb} {"Feb."} +MACRO {mar} {"Mar."} +MACRO {apr} {"Apr."} +MACRO {may} {"May"} +MACRO {jun} {"Jun."} +MACRO {jul} {"Jul."} +MACRO {aug} {"Aug."} +MACRO {sep} {"Sep."} +MACRO {oct} {"Oct."} +MACRO {nov} {"Nov."} +MACRO {dec} {"Dec."} + + + +%%%%%%%%%%%%%%%%%% +%% ENTRY FIELDS %% +%%%%%%%%%%%%%%%%%% + +ENTRY + { address + assignee + author + booktitle + chapter + day + dayfiled + edition + editor + howpublished + institution + intype + journal + key + language + month + monthfiled + nationality + note + number + organization + pages + paper + publisher + school + series + revision + title + type + url + volume + year + yearfiled + CTLuse_article_number + CTLuse_paper + CTLuse_forced_etal + CTLmax_names_forced_etal + CTLnames_show_etal + CTLuse_alt_spacing + CTLalt_stretch_factor + CTLdash_repeated_names + CTLname_format_string + CTLname_latex_cmd + CTLname_url_prefix + } + {} + { label } + + + + +%%%%%%%%%%%%%%%%%%%%%%% +%% INTEGER VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%%% + +INTEGERS { prev.status.punct this.status.punct punct.std + punct.no punct.comma punct.period + prev.status.space this.status.space space.std + space.no space.normal space.large + prev.status.quote this.status.quote quote.std + quote.no quote.close + prev.status.nline this.status.nline nline.std + nline.no nline.newblock + status.cap cap.std + cap.no cap.yes} + +INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames } + +INTEGERS { is.use.number.for.article + is.use.paper + is.forced.et.al + max.num.names.before.forced.et.al + num.names.shown.with.forced.et.al + is.use.alt.interword.spacing + is.dash.repeated.names} + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%% + +STRINGS { bibinfo + longest.label + oldname + s + t + ALTinterwordstretchfactor + name.format.string + name.latex.cmd + name.url.prefix} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOW LEVEL FUNCTIONS %% +%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.controls} +{ default.is.use.number.for.article 'is.use.number.for.article := + default.is.use.paper 'is.use.paper := + default.is.forced.et.al 'is.forced.et.al := + default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al := + default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al := + default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing := + default.is.dash.repeated.names 'is.dash.repeated.names := + default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor := + default.name.format.string 'name.format.string := + default.name.latex.cmd 'name.latex.cmd := + default.name.url.prefix 'name.url.prefix := +} + + +% This IEEEtran.bst features a very powerful and flexible mechanism for +% controlling the capitalization, punctuation, spacing, quotation, and +% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need +% or use the newline/newblock feature, but it has been implemented for +% possible future use.) The output states of IEEEtran.bst consist of +% multiple independent attributes and, as such, can be thought of as being +% vectors, rather than the simple scalar values ("before.all", +% "mid.sentence", etc.) used in most other .bst files. +% +% The more flexible and complex design used here was motivated in part by +% IEEE's rather unusual bibliography style. For example, IEEE ends the +% previous field item with a period and large space prior to the publisher +% address; the @electronic entry types use periods as inter-item punctuation +% rather than the commas used by the other entry types; and URLs are never +% followed by periods even though they are the last item in the entry. +% Although it is possible to accommodate these features with the conventional +% output state system, the seemingly endless exceptions make for convoluted, +% unreliable and difficult to maintain code. +% +% IEEEtran.bst's output state system can be easily understood via a simple +% illustration of two most recently formatted entry fields (on the stack): +% +% CURRENT_ITEM +% "PREVIOUS_ITEM +% +% which, in this example, is to eventually appear in the bibliography as: +% +% "PREVIOUS_ITEM," CURRENT_ITEM +% +% It is the job of the output routine to take the previous item off of the +% stack (while leaving the current item at the top of the stack), apply its +% trailing punctuation (including closing quote marks) and spacing, and then +% to write the result to BibTeX's output buffer: +% +% "PREVIOUS_ITEM," +% +% Punctuation (and spacing) between items is often determined by both of the +% items rather than just the first one. The presence of quotation marks +% further complicates the situation because, in standard English, trailing +% punctuation marks are supposed to be contained within the quotes. +% +% IEEEtran.bst maintains two output state (aka "status") vectors which +% correspond to the previous and current (aka "this") items. Each vector +% consists of several independent attributes which track punctuation, +% spacing, quotation, and newlines. Capitalization status is handled by a +% separate scalar because the format routines, not the output routine, +% handle capitalization and, therefore, there is no need to maintain the +% capitalization attribute for both the "previous" and "this" items. +% +% When a format routine adds a new item, it copies the current output status +% vector to the previous output status vector and (usually) resets the +% current (this) output status vector to a "standard status" vector. Using a +% "standard status" vector in this way allows us to redefine what we mean by +% "standard status" at the start of each entry handler and reuse the same +% format routines under the various inter-item separation schemes. For +% example, the standard status vector for the @book entry type may use +% commas for item separators, while the @electronic type may use periods, +% yet both entry handlers exploit many of the exact same format routines. +% +% Because format routines have write access to the output status vector of +% the previous item, they can override the punctuation choices of the +% previous format routine! Therefore, it becomes trivial to implement rules +% such as "Always use a period and a large space before the publisher." By +% pushing the generation of the closing quote mark to the output routine, we +% avoid all the problems caused by having to close a quote before having all +% the information required to determine what the punctuation should be. +% +% The IEEEtran.bst output state system can easily be expanded if needed. +% For instance, it is easy to add a "space.tie" attribute value if the +% bibliography rules mandate that two items have to be joined with an +% unbreakable space. + +FUNCTION {initialize.status.constants} +{ #0 'punct.no := + #1 'punct.comma := + #2 'punct.period := + #0 'space.no := + #1 'space.normal := + #2 'space.large := + #0 'quote.no := + #1 'quote.close := + #0 'cap.no := + #1 'cap.yes := + #0 'nline.no := + #1 'nline.newblock := +} + +FUNCTION {std.status.using.comma} +{ punct.comma 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.no 'cap.std := +} + +FUNCTION {std.status.using.period} +{ punct.period 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.yes 'cap.std := +} + +FUNCTION {initialize.prev.this.status} +{ punct.no 'prev.status.punct := + space.no 'prev.status.space := + quote.no 'prev.status.quote := + nline.no 'prev.status.nline := + punct.no 'this.status.punct := + space.no 'this.status.space := + quote.no 'this.status.quote := + nline.no 'this.status.nline := + cap.yes 'status.cap := +} + +FUNCTION {this.status.std} +{ punct.std 'this.status.punct := + space.std 'this.status.space := + quote.std 'this.status.quote := + nline.std 'this.status.nline := +} + +FUNCTION {cap.status.std}{ cap.std 'status.cap := } + +FUNCTION {this.to.prev.status} +{ this.status.punct 'prev.status.punct := + this.status.space 'prev.status.space := + this.status.quote 'prev.status.quote := + this.status.nline 'prev.status.nline := +} + + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ { skip$ } + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + { skip$ } + if$ +} + + +% convert the strings "yes" or "no" to #1 or #0 respectively +FUNCTION {yes.no.to.int} +{ "l" change.case$ duplicate$ + "yes" = + { pop$ #1 } + { duplicate$ "no" = + { pop$ #0 } + { "unknown boolean " quote$ * swap$ * quote$ * + " in " * cite$ * warning$ + #0 + } + if$ + } + if$ +} + + +% pushes true if the single char string on the stack is in the +% range of "0" to "9" +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +% multiplies the integer on the stack by a factor of 10 +FUNCTION {bump.int.mag} +{ #0 'multiresult := + { duplicate$ #0 > } + { #1 - + multiresult #10 + + 'multiresult := + } + while$ +pop$ +multiresult +} + +% converts a single character string on the stack to an integer +FUNCTION {char.to.integer} +{ duplicate$ + is.num + { chr.to.int$ "0" chr.to.int$ - } + {"noninteger character " quote$ * swap$ * quote$ * + " in integer field of " * cite$ * warning$ + #0 + } + if$ +} + +% converts a string on the stack to an integer +FUNCTION {string.to.integer} +{ duplicate$ text.length$ 'namesleft := + #1 'nameptr := + #0 'numnames := + { nameptr namesleft > not } + { duplicate$ nameptr #1 substring$ + char.to.integer numnames bump.int.mag + + 'numnames := + nameptr #1 + + 'nameptr := + } + while$ +pop$ +numnames +} + + + + +% The output routines write out the *next* to the top (previous) item on the +% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains +% the output status for the top two items on the stack, these output +% routines have to consider the previous output status (which corresponds to +% the item that is being output). Full independent control of punctuation, +% closing quote marks, spacing, and newblock is provided. +% +% "output.nonnull" does not check for the presence of a previous empty +% item. +% +% "output" does check for the presence of a previous empty item and will +% remove an empty item rather than outputing it. +% +% "output.warn" is like "output", but will issue a warning if it detects +% an empty item. + +FUNCTION {output.nonnull} +{ swap$ + prev.status.punct punct.comma = + { "," * } + { skip$ } + if$ + prev.status.punct punct.period = + { add.period$ } + { skip$ } + if$ + prev.status.quote quote.close = + { "''" * } + { skip$ } + if$ + prev.status.space space.normal = + { " " * } + { skip$ } + if$ + prev.status.space space.large = + { large.space * } + { skip$ } + if$ + write$ + prev.status.nline nline.newblock = + { newline$ "\newblock " write$ } + { skip$ } + if$ +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.warn} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +% "fin.entry" is the output routine that handles the last item of the entry +% (which will be on the top of the stack when "fin.entry" is called). + +FUNCTION {fin.entry} +{ this.status.punct punct.no = + { skip$ } + { add.period$ } + if$ + this.status.quote quote.close = + { "''" * } + { skip$ } + if$ +write$ +newline$ +} + + +FUNCTION {is.last.char.not.punct} +{ duplicate$ + "}" * add.period$ + #-1 #1 substring$ "." = +} + +FUNCTION {is.multiple.pages} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ } + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {do.name.latex.cmd} +{ name.latex.cmd + empty$ + { skip$ } + { name.latex.cmd "{" * swap$ * "}" * } + if$ +} + +% IEEEtran.bst uses its own \BIBforeignlanguage command which directly +% invokes the TeX hyphenation patterns without the need of the Babel +% package. Babel does a lot more than switch hyphenation patterns and +% its loading can cause unintended effects in many class files (such as +% IEEEtran.cls). +FUNCTION {select.language} +{ duplicate$ empty$ 'pop$ + { language empty$ 'skip$ + { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * } + if$ + } + if$ +} + +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} + +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {space.word}{ " " swap$ * " " * } + + +% Field Conditioners, Converters, Checkers and External Interfaces + +FUNCTION {empty.field.to.null.string} +{ duplicate$ empty$ + { pop$ "" } + { skip$ } + if$ +} + +FUNCTION {either.or.check} +{ empty$ + { pop$ } + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {empty.entry.warn} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ url empty$ + and and and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + + +% The bibinfo system provides a way for the electronic parsing/acquisition +% of a bibliography's contents as is done by ReVTeX. For example, a field +% could be entered into the bibliography as: +% \bibinfo{volume}{2} +% Only the "2" would show up in the document, but the LaTeX \bibinfo command +% could do additional things with the information. IEEEtran.bst does provide +% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is +% currently not used as the bogus bibinfo functions defined here output the +% entry values directly without the \bibinfo wrapper. The bibinfo functions +% themselves (and the calls to them) are retained for possible future use. +% +% bibinfo.check avoids acting on missing fields while bibinfo.warn will +% issue a warning message if a missing field is detected. Prior to calling +% the bibinfo functions, the user should push the field value and then its +% name string, in that order. + +FUNCTION {bibinfo.check} +{ swap$ duplicate$ missing$ + { pop$ pop$ "" } + { duplicate$ empty$ + { swap$ pop$ } + { swap$ pop$ } + if$ + } + if$ +} + +FUNCTION {bibinfo.warn} +{ swap$ duplicate$ missing$ + { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" } + { duplicate$ empty$ + { swap$ "empty " swap$ * " in " * cite$ * warning$ } + { swap$ pop$ } + if$ + } + if$ +} + + +% IEEE separates large numbers with more than 4 digits into groups of +% three. IEEE uses a small space to separate these number groups. +% Typical applications include patent and page numbers. + +% number of consecutive digits required to trigger the group separation. +FUNCTION {large.number.trigger}{ #5 } + +% For numbers longer than the trigger, this is the blocksize of the groups. +% The blocksize must be less than the trigger threshold, and 2 * blocksize +% must be greater than the trigger threshold (can't do more than one +% separation on the initial trigger). +FUNCTION {large.number.blocksize}{ #3 } + +% What is actually inserted between the number groups. +FUNCTION {large.number.separator}{ "\," } + +% So as to save on integer variables by reusing existing ones, numnames +% holds the current number of consecutive digits read and nameptr holds +% the number that will trigger an inserted space. +FUNCTION {large.number.separate} +{ 't := + "" + #0 'numnames := + large.number.trigger 'nameptr := + { t empty$ not } + { t #-1 #1 substring$ is.num + { numnames #1 + 'numnames := } + { #0 'numnames := + large.number.trigger 'nameptr := + } + if$ + t #-1 #1 substring$ swap$ * + t #-2 global.max$ substring$ 't := + numnames nameptr = + { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$ + nameptr large.number.blocksize - #1 + global.max$ substring$ + large.number.separator swap$ * * + nameptr large.number.blocksize - 'numnames := + large.number.blocksize #1 + 'nameptr := + } + { skip$ } + if$ + } + while$ +} + +% Converts all single dashes "-" to double dashes "--". +FUNCTION {n.dashify} +{ large.number.separate + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + + +% This function detects entries with names that are identical to that of +% the previous entry and replaces the repeated names with dashes (if the +% "is.dash.repeated.names" user control is nonzero). +FUNCTION {name.or.dash} +{ 's := + oldname empty$ + { s 'oldname := s } + { s oldname = + { is.dash.repeated.names + { repeated.name.dashes } + { s 'oldname := s } + if$ + } + { s 'oldname := s } + if$ + } + if$ +} + +% Converts the number string on the top of the stack to +% "numerical ordinal form" (e.g., "7" to "7th"). There is +% no artificial limit to the upper bound of the numbers as the +% two least significant digits determine the ordinal form. +FUNCTION {num.to.ordinal} +{ duplicate$ #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ "1" = + { bbl.st * } + { duplicate$ #-1 #1 substring$ "2" = + { bbl.nd * } + { duplicate$ #-1 #1 substring$ "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +% If the string on the top of the stack begins with a number, +% (e.g., 11th) then replace the string with the leading number +% it contains. Otherwise retain the string as-is. s holds the +% extracted number, t holds the part of the string that remains +% to be scanned. +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +% Converts the word number string on the top of the stack to +% Arabic string form. Will be successful up to "tenth". +FUNCTION {word.to.num} +{ duplicate$ "l" change.case$ 's := + s "first" = + { pop$ "1" } + { skip$ } + if$ + s "second" = + { pop$ "2" } + { skip$ } + if$ + s "third" = + { pop$ "3" } + { skip$ } + if$ + s "fourth" = + { pop$ "4" } + { skip$ } + if$ + s "fifth" = + { pop$ "5" } + { skip$ } + if$ + s "sixth" = + { pop$ "6" } + { skip$ } + if$ + s "seventh" = + { pop$ "7" } + { skip$ } + if$ + s "eighth" = + { pop$ "8" } + { skip$ } + if$ + s "ninth" = + { pop$ "9" } + { skip$ } + if$ + s "tenth" = + { pop$ "10" } + { skip$ } + if$ +} + + +% Converts the string on the top of the stack to numerical +% ordinal (e.g., "11th") form. +FUNCTION {convert.edition} +{ duplicate$ empty$ 'skip$ + { duplicate$ #1 #1 substring$ is.num + { extract.num + num.to.ordinal + } + { word.to.num + duplicate$ #1 #1 substring$ is.num + { num.to.ordinal } + { "edition ordinal word " quote$ * edition * quote$ * + " may be too high (or improper) for conversion" * " in " * cite$ * warning$ + } + if$ + } + if$ + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LATEX BIBLIOGRAPHY CODE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {start.entry} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + initialize.prev.this.status +} + +% Here we write out all the LaTeX code that we will need. The most involved +% code sequences are those that control the alternate interword spacing and +% foreign language hyphenation patterns. The heavy use of \providecommand +% gives users a way to override the defaults. Special thanks to Javier Bezos, +% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all +% the other gurus on comp.text.tex for their help and advice on the topic of +% \selectlanguage, Babel and BibTeX. +FUNCTION {begin.bib} +{ "% Generated by IEEEtran.bst, version: " bst.file.version * " (" * bst.file.date * ")" * + write$ newline$ + preamble$ empty$ 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ + "\providecommand{\url}[1]{#1}" + write$ newline$ + "\csname url@samestyle\endcsname" + write$ newline$ + "\providecommand{\newblock}{\relax}" + write$ newline$ + "\providecommand{\bibinfo}[2]{#2}" + write$ newline$ + "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}" + write$ newline$ + "\providecommand{\BIBentryALTinterwordstretchfactor}{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus " + write$ newline$ + "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}" + write$ newline$ + "\providecommand{\BIBforeignlanguage}[2]{{%" + write$ newline$ + "\expandafter\ifx\csname l@#1\endcsname\relax" + write$ newline$ + "\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%" + write$ newline$ + "\typeout{** loaded for the language `#1'. Using the pattern for}%" + write$ newline$ + "\typeout{** the default language instead.}%" + write$ newline$ + "\else" + write$ newline$ + "\language=\csname l@#1\endcsname" + write$ newline$ + "\fi" + write$ newline$ + "#2}}" + write$ newline$ + "\providecommand{\BIBdecl}{\relax}" + write$ newline$ + "\BIBdecl" + write$ newline$ +} + +FUNCTION {end.bib} +{ newline$ "\end{thebibliography}" write$ newline$ } + +FUNCTION {if.url.alt.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + +FUNCTION {if.url.std.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%% +%% LONGEST LABEL PASS %% +%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ type$ "ieeetranbstctl" = + { skip$ } + { number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + { skip$ } + if$ + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%% +%% FORMAT HANDLERS %% +%%%%%%%%%%%%%%%%%%%%% + +%% Lower Level Formats (used by higher level formats) + +FUNCTION {format.address.org.or.pub.date} +{ 't := + "" + year empty$ + { "empty year in " cite$ * warning$ } + { skip$ } + if$ + address empty$ t empty$ and + year empty$ and month empty$ and + { skip$ } + { this.to.prev.status + this.status.std + cap.status.std + address "address" bibinfo.check * + t empty$ + { skip$ } + { punct.period 'prev.status.punct := + space.large 'prev.status.space := + address empty$ + { skip$ } + { ": " * } + if$ + t * + } + if$ + year empty$ month empty$ and + { skip$ } + { t empty$ address empty$ and + { skip$ } + { ", " * } + if$ + month empty$ + { year empty$ + { skip$ } + { year "year" bibinfo.check * } + if$ + } + { month "month" bibinfo.check * + year empty$ + { skip$ } + { " " * year "year" bibinfo.check * } + if$ + } + if$ + } + if$ + } + if$ +} + + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + this.to.prev.status + this.status.std + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + name.format.string + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { nameptr num.names.shown.with.forced.et.al #1 + = + numnames max.num.names.before.forced.et.al > + is.forced.et.al and and + { "others" 't := + #1 'namesleft := + } + { skip$ } + if$ + namesleft #1 > + { ", " * t do.name.latex.cmd * } + { s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { " " * bbl.etal emphasize * } + { numnames #2 > + { "," * } + { skip$ } + if$ + bbl.and + space.word * t do.name.latex.cmd * + } + if$ + } + if$ + } + { t do.name.latex.cmd } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + cap.status.std + } if$ +} + + + + +%% Higher Level Formats + +%% addresses/locations + +FUNCTION {format.address} +{ address duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% author/editor names + +FUNCTION {format.authors}{ author "author" format.names } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { ", " * + get.bbl.editor + capitalize + * + } + if$ +} + + + +%% date + +FUNCTION {format.date} +{ + month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { this.to.prev.status + this.status.std + cap.status.std + swap$ 'skip$ + { + swap$ + " " * swap$ + } + if$ + * + } + if$ +} + +FUNCTION {format.date.electronic} +{ month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ + { pop$ } + { "there's a month but no year in " cite$ * warning$ + pop$ ")" * "(" swap$ * + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ + } + { swap$ + { swap$ pop$ ")" * "(" swap$ * } + { "(" swap$ * ", " * swap$ * ")" * } + if$ + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ +} + + + +%% edition/title + +% Note: IEEE considers the edition to be closely associated with +% the title of a book. So, in IEEEtran.bst the edition is normally handled +% within the formatting of the title. The format.edition function is +% retained here for possible future use. +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + convert.edition + status.cap + { "t" } + { "l" } + if$ change.case$ + "edition" bibinfo.check + "~" * bbl.edition * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of a conference proceedings. +% Here we use the "intype" field to provide the user a way to +% override the word "in" (e.g., with things like "presented at") +% Use of intype stops the emphasis of the booktitle to indicate that +% we no longer mean the written conference proceedings, but the +% conference itself. +FUNCTION {format.in.booktitle} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + intype missing$ + { emphasize + bbl.in " " * + } + { intype " " * } + if$ + swap$ * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of collection. +% Here the "intype" field is not supported, but "edition" is. +FUNCTION {format.in.booktitle.edition} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + "l" change.case$ + * "~" * bbl.edition * + } + if$ + bbl.in " " * swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ 'skip$ + { quote.close 'this.status.quote := + is.last.char.not.punct + { punct.std 'this.status.punct := } + { punct.no 'this.status.punct := } + if$ + select.language + "``" swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title.electronic} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ + { skip$ } + { select.language } + if$ +} + +FUNCTION {format.book.title.edition} +{ title "title" bibinfo.check + duplicate$ empty$ + { "empty title in " cite$ * warning$ } + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + status.cap + { "t" } + { "l" } + if$ + change.case$ + * "~" * bbl.edition * + } + if$ + cap.status.std + } + if$ +} + +FUNCTION {format.book.title} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% journal + +FUNCTION {format.journal} +{ journal duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% how published + +FUNCTION {format.howpublished} +{ howpublished duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% institutions/organization/publishers/school + +FUNCTION {format.institution} +{ institution duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.organization} +{ organization duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.address.publisher.date} +{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date } + +FUNCTION {format.address.publisher.date.nowarn} +{ publisher "publisher" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.address.organization.date} +{ organization "organization" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.school} +{ school duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% volume/number/series/chapter/pages + +FUNCTION {format.volume} +{ volume empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + bbl.volume + status.cap + { capitalize } + { skip$ } + if$ + swap$ tie.or.space.prefix + "volume" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number} +{ number empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + status.cap + { bbl.number capitalize } + { bbl.number } + if$ + swap$ tie.or.space.prefix + "number" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number.if.use.for.article} +{ is.use.number.for.article + { format.number } + { "" } + if$ +} + +% IEEE does not seem to tie the series so closely with the volume +% and number as is done in other bibliography styles. Instead the +% series is treated somewhat like an extension of the title. +FUNCTION {format.series} +{ series empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.series " " * + series "series" bibinfo.check * + cap.status.std + } + if$ +} + + +FUNCTION {format.chapter} +{ chapter empty$ + { "" } + { this.to.prev.status + this.status.std + type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + cap.status.std + } + if$ +} + + +% The intended use of format.paper is for paper numbers of inproceedings. +% The paper type can be overridden via the type field. +% We allow the type to be displayed even if the paper number is absent +% for things like "postdeadline paper" +FUNCTION {format.paper} +{ is.use.paper + { paper empty$ + { type empty$ + { "" } + { this.to.prev.status + this.status.std + type "type" bibinfo.check + cap.status.std + } + if$ + } + { this.to.prev.status + this.status.std + type empty$ + { bbl.paper } + { type "type" bibinfo.check } + if$ + " " * paper + "paper" bibinfo.check + * + cap.status.std + } + if$ + } + { "" } + if$ +} + + +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + duplicate$ is.multiple.pages + { + bbl.pages swap$ + n.dashify + } + { + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + cap.status.std + } + if$ +} + + + +%% technical report number + +FUNCTION {format.tech.report.number} +{ number "number" bibinfo.check + this.to.prev.status + this.status.std + cap.status.std + type duplicate$ empty$ + { pop$ + bbl.techrep + } + { skip$ } + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ } + { tie.or.space.prefix * * } + if$ +} + + + +%% note + +FUNCTION {format.note} +{ note empty$ + { "" } + { this.to.prev.status + this.status.std + punct.period 'this.status.punct := + note #1 #1 substring$ + duplicate$ "{" = + { skip$ } + { status.cap + { "u" } + { "l" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + cap.yes 'status.cap := + } + if$ +} + + + +%% patent + +FUNCTION {format.patent.date} +{ this.to.prev.status + this.status.std + year empty$ + { monthfiled duplicate$ empty$ + { "monthfiled" bibinfo.check pop$ "" } + { "monthfiled" bibinfo.check } + if$ + dayfiled duplicate$ empty$ + { "dayfiled" bibinfo.check pop$ "" * } + { "dayfiled" bibinfo.check + monthfiled empty$ + { "dayfiled without a monthfiled in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + yearfiled empty$ + { "no year or yearfiled in " cite$ * warning$ } + { yearfiled "yearfiled" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + } + { month duplicate$ empty$ + { "month" bibinfo.check pop$ "" } + { "month" bibinfo.check } + if$ + day duplicate$ empty$ + { "day" bibinfo.check pop$ "" * } + { "day" bibinfo.check + month empty$ + { "day without a month in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + year "year" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + cap.status.std +} + +FUNCTION {format.patent.nationality.type.number} +{ this.to.prev.status + this.status.std + nationality duplicate$ empty$ + { "nationality" bibinfo.warn pop$ "" } + { "nationality" bibinfo.check + duplicate$ "l" change.case$ "united states" = + { pop$ bbl.patentUS } + { skip$ } + if$ + " " * + } + if$ + type empty$ + { bbl.patent "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.warn pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + + + +%% standard + +FUNCTION {format.organization.institution.standard.type.number} +{ this.to.prev.status + this.status.std + organization duplicate$ empty$ + { pop$ + institution duplicate$ empty$ + { "institution" bibinfo.warn } + { "institution" bibinfo.warn " " * } + if$ + } + { "organization" bibinfo.warn " " * } + if$ + type empty$ + { bbl.standard "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.check pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + +FUNCTION {format.revision} +{ revision empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.revision + revision tie.or.space.prefix + "revision" bibinfo.check + * * + cap.status.std + } + if$ +} + + +%% thesis + +FUNCTION {format.master.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.mthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + +FUNCTION {format.phd.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.phdthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + + + +%% URL + +FUNCTION {format.url} +{ url empty$ + { "" } + { this.to.prev.status + this.status.std + cap.yes 'status.cap := + name.url.prefix " " * + "\url{" * url * "}" * + punct.no 'this.status.punct := + punct.period 'prev.status.punct := + space.normal 'this.status.space := + space.normal 'prev.status.space := + quote.no 'this.status.quote := + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%% +%% ENTRY HANDLERS %% +%%%%%%%%%%%%%%%%%%%% + + +% Note: In many journals, IEEE (or the authors) tend not to show the number +% for articles, so the display of the number is controlled here by the +% switch "is.use.number.for.article" +FUNCTION {article} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.journal "journal" bibinfo.check "journal" output.warn + format.volume output + format.number.if.use.for.article output + format.pages output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {book} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + author empty$ + { skip$ } + { format.editors output } + if$ + format.address.publisher.date output + format.volume output + format.number output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {booklet} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {electronic} +{ std.status.using.period + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.date.electronic output + format.article.title.electronic output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {inbook} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + format.address.publisher.date output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {incollection} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle.edition "booktitle" output.warn + format.series output + format.editors output + format.address.publisher.date.nowarn output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {inproceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle "booktitle" output.warn + format.series output + format.editors output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.paper output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {manual} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title.edition "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {mastersthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.master.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {misc} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.pages output + format.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {patent} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.patent.nationality.type.number output + format.patent.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {periodical} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + format.organization "organization" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {phdthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.phd.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {proceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {standard} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization.institution.standard.type.number output + format.revision output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {techreport} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.institution "institution" bibinfo.warn output + format.address "address" bibinfo.check output + format.tech.report.number output.nonnull + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {unpublished} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.date output + format.note "note" output.warn + format.url output + fin.entry + if.url.std.interword.spacing +} + + +% The special entry type which provides the user interface to the +% BST controls +FUNCTION {IEEEtranBSTCTL} +{ is.print.banners.to.terminal + { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." * + top$ + } + { skip$ } + if$ + CTLuse_article_number + empty$ + { skip$ } + { CTLuse_article_number + yes.no.to.int + 'is.use.number.for.article := + } + if$ + CTLuse_paper + empty$ + { skip$ } + { CTLuse_paper + yes.no.to.int + 'is.use.paper := + } + if$ + CTLuse_forced_etal + empty$ + { skip$ } + { CTLuse_forced_etal + yes.no.to.int + 'is.forced.et.al := + } + if$ + CTLmax_names_forced_etal + empty$ + { skip$ } + { CTLmax_names_forced_etal + string.to.integer + 'max.num.names.before.forced.et.al := + } + if$ + CTLnames_show_etal + empty$ + { skip$ } + { CTLnames_show_etal + string.to.integer + 'num.names.shown.with.forced.et.al := + } + if$ + CTLuse_alt_spacing + empty$ + { skip$ } + { CTLuse_alt_spacing + yes.no.to.int + 'is.use.alt.interword.spacing := + } + if$ + CTLalt_stretch_factor + empty$ + { skip$ } + { CTLalt_stretch_factor + 'ALTinterwordstretchfactor := + "\renewcommand{\BIBentryALTinterwordstretchfactor}{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + } + if$ + CTLdash_repeated_names + empty$ + { skip$ } + { CTLdash_repeated_names + yes.no.to.int + 'is.dash.repeated.names := + } + if$ + CTLname_format_string + empty$ + { skip$ } + { CTLname_format_string + 'name.format.string := + } + if$ + CTLname_latex_cmd + empty$ + { skip$ } + { CTLname_latex_cmd + 'name.latex.cmd := + } + if$ + CTLname_url_prefix + missing$ + { skip$ } + { CTLname_url_prefix + 'name.url.prefix := + } + if$ + + + num.names.shown.with.forced.et.al max.num.names.before.forced.et.al > + { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$ + max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al := + } + { skip$ } + if$ +} + + +%%%%%%%%%%%%%%%%%%% +%% ENTRY ALIASES %% +%%%%%%%%%%%%%%%%%%% +FUNCTION {conference}{inproceedings} +FUNCTION {online}{electronic} +FUNCTION {internet}{electronic} +FUNCTION {webpage}{electronic} +FUNCTION {www}{electronic} +FUNCTION {default.type}{misc} + + + +%%%%%%%%%%%%%%%%%% +%% MAIN PROGRAM %% +%%%%%%%%%%%%%%%%%% + +READ + +EXECUTE {initialize.controls} +EXECUTE {initialize.status.constants} +EXECUTE {banner.message} + +EXECUTE {initialize.longest.label} +ITERATE {longest.label.pass} + +EXECUTE {begin.bib} +ITERATE {call.type$} +EXECUTE {end.bib} + +EXECUTE{completed.message} + + +%% That's all folks, mds. diff -r 000000000000 -r 8319d82cab07 bibtex/IEEEtranN.bst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bibtex/IEEEtranN.bst Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,2716 @@ +%% +%% IEEEtranN.bst +%% BibTeX Bibliography Style file +%% Natbib version of IEEEtran.bst +%% *** Not for normal IEEE work *** +%% Version 1.13 (2008/09/30) +%% +%% Copyright (c) 2003-2008 Michael Shell +%% +%% Original starting code base and algorithms obtained from the output of +%% Patrick W. Daly's makebst package as well as from prior versions of +%% IEEE BibTeX styles: +%% +%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988) +%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993) +%% +%% Added sorting and natbib code is from Patrick W Daly's unsrtnat.bst +%% +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% and/or +%% http://www.ieee.org/ +%% +%% For use with BibTeX version 0.99a or later +%% +%% This is a natbib compatible citation style. +%% +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%% +%% This work is distributed under the LaTeX Project Public License (LPPL) +%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, +%% distributed and modified. A copy of the LPPL, version 1.3, is included +%% in the base LaTeX documentation of all distributions of LaTeX released +%% 2003/12/01 or later. +%% Retain all contribution notices and credits. +%% ** Modified files should be clearly indicated as such, including ** +%% ** renaming them and changing author support contact information. ** +%% +%% File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib, +%% IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst, +%% IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf +%%************************************************************************* +% +% +% Changelog: +% +% 1.12 (2007/01/11) Initial release +% +% 1.13 (2008/09/30) +% 1. Fixed bug with edition number to ordinal conversion. Thanks to +% Michael Roland for reporting this and correcting the algorithm. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% These are the defaults for the user adjustable controls. The values used +% here can be overridden by the user via IEEEtranBSTCTL entry type. + +% NOTE: The recommended LaTeX command to invoke a control entry type is: +% +%\makeatletter +%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}} +%\def\@bstctlcite[#1]#2{\@bsphack +% \@for\@citeb:=#2\do{% +% \edef\@citeb{\expandafter\@firstofone\@citeb}% +% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}% +% \@esphack} +%\makeatother +% +% It is called at the start of the document, before the first \cite, like: +% \bstctlcite{IEEEexample:BSTcontrol} +% +% IEEEtran.cls V1.6 and later does provide this command. + + + +% #0 turns off the display of the number for articles. +% #1 enables +FUNCTION {default.is.use.number.for.article} { #1 } + + +% #0 turns off the display of the paper and type fields in @inproceedings. +% #1 enables +FUNCTION {default.is.use.paper} { #1 } + + +% #0 turns off the forced use of "et al." +% #1 enables +FUNCTION {default.is.forced.et.al} { #0 } + +% The maximum number of names that can be present beyond which an "et al." +% usage is forced. Be sure that num.names.shown.with.forced.et.al (below) +% is not greater than this value! +% Note: There are many instances of references in IEEE journals which have +% a very large number of authors as well as instances in which "et al." is +% used profusely. +FUNCTION {default.max.num.names.before.forced.et.al} { #10 } + +% The number of names that will be shown with a forced "et al.". +% Must be less than or equal to max.num.names.before.forced.et.al +FUNCTION {default.num.names.shown.with.forced.et.al} { #1 } + + +% #0 turns off the alternate interword spacing for entries with URLs. +% #1 enables +FUNCTION {default.is.use.alt.interword.spacing} { #1 } + +% If alternate interword spacing for entries with URLs is enabled, this is +% the interword spacing stretch factor that will be used. For example, the +% default "4" here means that the interword spacing in entries with URLs can +% stretch to four times normal. Does not have to be an integer. Note that +% the value specified here can be overridden by the user in their LaTeX +% code via a command such as: +% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to +% that via the IEEEtranBSTCTL entry type. +FUNCTION {default.ALTinterwordstretchfactor} { "4" } + + +% #0 turns off the "dashification" of repeated (i.e., identical to those +% of the previous entry) names. IEEE normally does this. +% #1 enables +FUNCTION {default.is.dash.repeated.names} { #1 } + + +% The default name format control string. +FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" } + + +% The default LaTeX font command for the names. +FUNCTION {default.name.latex.cmd}{ "" } + + +% The default URL prefix. +FUNCTION {default.name.url.prefix}{ "[Online]. Available:" } + + +% Other controls that cannot be accessed via IEEEtranBSTCTL entry type. + +% #0 turns off the terminal startup banner/completed message so as to +% operate more quietly. +% #1 enables +FUNCTION {is.print.banners.to.terminal} { #1 } + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% FILE VERSION AND BANNER %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION{bst.file.version} { "1.13" } +FUNCTION{bst.file.date} { "2008/09/30" } +FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" } + +FUNCTION {banner.message} +{ is.print.banners.to.terminal + { "-- IEEEtranN.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$ + "** Natbib version - not for normal IEEE work." + top$ + } + { skip$ } + if$ +} + +FUNCTION {completed.message} +{ is.print.banners.to.terminal + { "" + top$ + "Done." + top$ + } + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING CONSTANTS %% +%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {bbl.and}{ "and" } +FUNCTION {bbl.etal}{ "et~al." } +FUNCTION {bbl.editors}{ "eds." } +FUNCTION {bbl.editor}{ "ed." } +FUNCTION {bbl.edition}{ "ed." } +FUNCTION {bbl.volume}{ "vol." } +FUNCTION {bbl.of}{ "of" } +FUNCTION {bbl.number}{ "no." } +FUNCTION {bbl.in}{ "in" } +FUNCTION {bbl.pages}{ "pp." } +FUNCTION {bbl.page}{ "p." } +FUNCTION {bbl.chapter}{ "ch." } +FUNCTION {bbl.paper}{ "paper" } +FUNCTION {bbl.part}{ "pt." } +FUNCTION {bbl.patent}{ "Patent" } +FUNCTION {bbl.patentUS}{ "U.S." } +FUNCTION {bbl.revision}{ "Rev." } +FUNCTION {bbl.series}{ "ser." } +FUNCTION {bbl.standard}{ "Std." } +FUNCTION {bbl.techrep}{ "Tech. Rep." } +FUNCTION {bbl.mthesis}{ "Master's thesis" } +FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" } +FUNCTION {bbl.st}{ "st" } +FUNCTION {bbl.nd}{ "nd" } +FUNCTION {bbl.rd}{ "rd" } +FUNCTION {bbl.th}{ "th" } + + +% This is the LaTeX spacer that is used when a larger than normal space +% is called for (such as just before the address:publisher). +FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " } + +% The LaTeX code for dashes that are used to represent repeated names. +% Note: Some older IEEE journals used something like +% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along +% the baseline. However, IEEE now uses a thinner, above baseline, +% six dash long sequence. +FUNCTION {repeated.name.dashes} { "------" } + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% PREDEFINED STRING MACROS %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +MACRO {jan} {"Jan."} +MACRO {feb} {"Feb."} +MACRO {mar} {"Mar."} +MACRO {apr} {"Apr."} +MACRO {may} {"May"} +MACRO {jun} {"Jun."} +MACRO {jul} {"Jul."} +MACRO {aug} {"Aug."} +MACRO {sep} {"Sep."} +MACRO {oct} {"Oct."} +MACRO {nov} {"Nov."} +MACRO {dec} {"Dec."} + + + +%%%%%%%%%%%%%%%%%% +%% ENTRY FIELDS %% +%%%%%%%%%%%%%%%%%% + +ENTRY + { address + assignee + author + booktitle + chapter + day + dayfiled + edition + editor + howpublished + institution + intype + journal + key + language + month + monthfiled + nationality + note + number + organization + pages + paper + publisher + school + series + revision + title + type + url + volume + year + yearfiled + CTLuse_article_number + CTLuse_paper + CTLuse_forced_etal + CTLmax_names_forced_etal + CTLnames_show_etal + CTLuse_alt_spacing + CTLalt_stretch_factor + CTLdash_repeated_names + CTLname_format_string + CTLname_latex_cmd + CTLname_url_prefix + } + {} + { label extra.label sort.label short.list} + + + + +%%%%%%%%%%%%%%%%%%%%%%% +%% INTEGER VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%%% + +INTEGERS { prev.status.punct this.status.punct punct.std + punct.no punct.comma punct.period + prev.status.space this.status.space space.std + space.no space.normal space.large + prev.status.quote this.status.quote quote.std + quote.no quote.close + prev.status.nline this.status.nline nline.std + nline.no nline.newblock + status.cap cap.std + cap.no cap.yes} + +INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames } + +INTEGERS { is.use.number.for.article + is.use.paper + is.forced.et.al + max.num.names.before.forced.et.al + num.names.shown.with.forced.et.al + is.use.alt.interword.spacing + is.dash.repeated.names} + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%% + +STRINGS { bibinfo + longest.label + oldname + s + t + ALTinterwordstretchfactor + name.format.string + name.latex.cmd + name.url.prefix} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOW LEVEL FUNCTIONS %% +%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.controls} +{ default.is.use.number.for.article 'is.use.number.for.article := + default.is.use.paper 'is.use.paper := + default.is.forced.et.al 'is.forced.et.al := + default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al := + default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al := + default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing := + default.is.dash.repeated.names 'is.dash.repeated.names := + default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor := + default.name.format.string 'name.format.string := + default.name.latex.cmd 'name.latex.cmd := + default.name.url.prefix 'name.url.prefix := +} + + +% This IEEEtran.bst features a very powerful and flexible mechanism for +% controlling the capitalization, punctuation, spacing, quotation, and +% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need +% or use the newline/newblock feature, but it has been implemented for +% possible future use.) The output states of IEEEtran.bst consist of +% multiple independent attributes and, as such, can be thought of as being +% vectors, rather than the simple scalar values ("before.all", +% "mid.sentence", etc.) used in most other .bst files. +% +% The more flexible and complex design used here was motivated in part by +% IEEE's rather unusual bibliography style. For example, IEEE ends the +% previous field item with a period and large space prior to the publisher +% address; the @electronic entry types use periods as inter-item punctuation +% rather than the commas used by the other entry types; and URLs are never +% followed by periods even though they are the last item in the entry. +% Although it is possible to accommodate these features with the conventional +% output state system, the seemingly endless exceptions make for convoluted, +% unreliable and difficult to maintain code. +% +% IEEEtran.bst's output state system can be easily understood via a simple +% illustration of two most recently formatted entry fields (on the stack): +% +% CURRENT_ITEM +% "PREVIOUS_ITEM +% +% which, in this example, is to eventually appear in the bibliography as: +% +% "PREVIOUS_ITEM," CURRENT_ITEM +% +% It is the job of the output routine to take the previous item off of the +% stack (while leaving the current item at the top of the stack), apply its +% trailing punctuation (including closing quote marks) and spacing, and then +% to write the result to BibTeX's output buffer: +% +% "PREVIOUS_ITEM," +% +% Punctuation (and spacing) between items is often determined by both of the +% items rather than just the first one. The presence of quotation marks +% further complicates the situation because, in standard English, trailing +% punctuation marks are supposed to be contained within the quotes. +% +% IEEEtran.bst maintains two output state (aka "status") vectors which +% correspond to the previous and current (aka "this") items. Each vector +% consists of several independent attributes which track punctuation, +% spacing, quotation, and newlines. Capitalization status is handled by a +% separate scalar because the format routines, not the output routine, +% handle capitalization and, therefore, there is no need to maintain the +% capitalization attribute for both the "previous" and "this" items. +% +% When a format routine adds a new item, it copies the current output status +% vector to the previous output status vector and (usually) resets the +% current (this) output status vector to a "standard status" vector. Using a +% "standard status" vector in this way allows us to redefine what we mean by +% "standard status" at the start of each entry handler and reuse the same +% format routines under the various inter-item separation schemes. For +% example, the standard status vector for the @book entry type may use +% commas for item separators, while the @electronic type may use periods, +% yet both entry handlers exploit many of the exact same format routines. +% +% Because format routines have write access to the output status vector of +% the previous item, they can override the punctuation choices of the +% previous format routine! Therefore, it becomes trivial to implement rules +% such as "Always use a period and a large space before the publisher." By +% pushing the generation of the closing quote mark to the output routine, we +% avoid all the problems caused by having to close a quote before having all +% the information required to determine what the punctuation should be. +% +% The IEEEtran.bst output state system can easily be expanded if needed. +% For instance, it is easy to add a "space.tie" attribute value if the +% bibliography rules mandate that two items have to be joined with an +% unbreakable space. + +FUNCTION {initialize.status.constants} +{ #0 'punct.no := + #1 'punct.comma := + #2 'punct.period := + #0 'space.no := + #1 'space.normal := + #2 'space.large := + #0 'quote.no := + #1 'quote.close := + #0 'cap.no := + #1 'cap.yes := + #0 'nline.no := + #1 'nline.newblock := +} + +FUNCTION {std.status.using.comma} +{ punct.comma 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.no 'cap.std := +} + +FUNCTION {std.status.using.period} +{ punct.period 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.yes 'cap.std := +} + +FUNCTION {initialize.prev.this.status} +{ punct.no 'prev.status.punct := + space.no 'prev.status.space := + quote.no 'prev.status.quote := + nline.no 'prev.status.nline := + punct.no 'this.status.punct := + space.no 'this.status.space := + quote.no 'this.status.quote := + nline.no 'this.status.nline := + cap.yes 'status.cap := +} + +FUNCTION {this.status.std} +{ punct.std 'this.status.punct := + space.std 'this.status.space := + quote.std 'this.status.quote := + nline.std 'this.status.nline := +} + +FUNCTION {cap.status.std}{ cap.std 'status.cap := } + +FUNCTION {this.to.prev.status} +{ this.status.punct 'prev.status.punct := + this.status.space 'prev.status.space := + this.status.quote 'prev.status.quote := + this.status.nline 'prev.status.nline := +} + + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ { skip$ } + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + { skip$ } + if$ +} + + +% convert the strings "yes" or "no" to #1 or #0 respectively +FUNCTION {yes.no.to.int} +{ "l" change.case$ duplicate$ + "yes" = + { pop$ #1 } + { duplicate$ "no" = + { pop$ #0 } + { "unknown boolean " quote$ * swap$ * quote$ * + " in " * cite$ * warning$ + #0 + } + if$ + } + if$ +} + + +% pushes true if the single char string on the stack is in the +% range of "0" to "9" +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +% multiplies the integer on the stack by a factor of 10 +FUNCTION {bump.int.mag} +{ #0 'multiresult := + { duplicate$ #0 > } + { #1 - + multiresult #10 + + 'multiresult := + } + while$ +pop$ +multiresult +} + +% converts a single character string on the stack to an integer +FUNCTION {char.to.integer} +{ duplicate$ + is.num + { chr.to.int$ "0" chr.to.int$ - } + {"noninteger character " quote$ * swap$ * quote$ * + " in integer field of " * cite$ * warning$ + #0 + } + if$ +} + +% converts a string on the stack to an integer +FUNCTION {string.to.integer} +{ duplicate$ text.length$ 'namesleft := + #1 'nameptr := + #0 'numnames := + { nameptr namesleft > not } + { duplicate$ nameptr #1 substring$ + char.to.integer numnames bump.int.mag + + 'numnames := + nameptr #1 + + 'nameptr := + } + while$ +pop$ +numnames +} + + + + +% The output routines write out the *next* to the top (previous) item on the +% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains +% the output status for the top two items on the stack, these output +% routines have to consider the previous output status (which corresponds to +% the item that is being output). Full independent control of punctuation, +% closing quote marks, spacing, and newblock is provided. +% +% "output.nonnull" does not check for the presence of a previous empty +% item. +% +% "output" does check for the presence of a previous empty item and will +% remove an empty item rather than outputing it. +% +% "output.warn" is like "output", but will issue a warning if it detects +% an empty item. + +FUNCTION {output.nonnull} +{ swap$ + prev.status.punct punct.comma = + { "," * } + { skip$ } + if$ + prev.status.punct punct.period = + { add.period$ } + { skip$ } + if$ + prev.status.quote quote.close = + { "''" * } + { skip$ } + if$ + prev.status.space space.normal = + { " " * } + { skip$ } + if$ + prev.status.space space.large = + { large.space * } + { skip$ } + if$ + write$ + prev.status.nline nline.newblock = + { newline$ "\newblock " write$ } + { skip$ } + if$ +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.warn} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +% "fin.entry" is the output routine that handles the last item of the entry +% (which will be on the top of the stack when "fin.entry" is called). + +FUNCTION {fin.entry} +{ this.status.punct punct.no = + { skip$ } + { add.period$ } + if$ + this.status.quote quote.close = + { "''" * } + { skip$ } + if$ +write$ +newline$ +} + + +FUNCTION {is.last.char.not.punct} +{ duplicate$ + "}" * add.period$ + #-1 #1 substring$ "." = +} + +FUNCTION {is.multiple.pages} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ } + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {do.name.latex.cmd} +{ name.latex.cmd + empty$ + { skip$ } + { name.latex.cmd "{" * swap$ * "}" * } + if$ +} + +% IEEEtran.bst uses its own \BIBforeignlanguage command which directly +% invokes the TeX hyphenation patterns without the need of the Babel +% package. Babel does a lot more than switch hyphenation patterns and +% its loading can cause unintended effects in many class files (such as +% IEEEtran.cls). +FUNCTION {select.language} +{ duplicate$ empty$ 'pop$ + { language empty$ 'skip$ + { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * } + if$ + } + if$ +} + +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} + +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {space.word}{ " " swap$ * " " * } + + +% Field Conditioners, Converters, Checkers and External Interfaces + +FUNCTION {empty.field.to.null.string} +{ duplicate$ empty$ + { pop$ "" } + { skip$ } + if$ +} + +FUNCTION {either.or.check} +{ empty$ + { pop$ } + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {empty.entry.warn} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ url empty$ + and and and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + + +% The bibinfo system provides a way for the electronic parsing/acquisition +% of a bibliography's contents as is done by ReVTeX. For example, a field +% could be entered into the bibliography as: +% \bibinfo{volume}{2} +% Only the "2" would show up in the document, but the LaTeX \bibinfo command +% could do additional things with the information. IEEEtran.bst does provide +% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is +% currently not used as the bogus bibinfo functions defined here output the +% entry values directly without the \bibinfo wrapper. The bibinfo functions +% themselves (and the calls to them) are retained for possible future use. +% +% bibinfo.check avoids acting on missing fields while bibinfo.warn will +% issue a warning message if a missing field is detected. Prior to calling +% the bibinfo functions, the user should push the field value and then its +% name string, in that order. + +FUNCTION {bibinfo.check} +{ swap$ duplicate$ missing$ + { pop$ pop$ "" } + { duplicate$ empty$ + { swap$ pop$ } + { swap$ pop$ } + if$ + } + if$ +} + +FUNCTION {bibinfo.warn} +{ swap$ duplicate$ missing$ + { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" } + { duplicate$ empty$ + { swap$ "empty " swap$ * " in " * cite$ * warning$ } + { swap$ pop$ } + if$ + } + if$ +} + + +% IEEE separates large numbers with more than 4 digits into groups of +% three. IEEE uses a small space to separate these number groups. +% Typical applications include patent and page numbers. + +% number of consecutive digits required to trigger the group separation. +FUNCTION {large.number.trigger}{ #5 } + +% For numbers longer than the trigger, this is the blocksize of the groups. +% The blocksize must be less than the trigger threshold, and 2 * blocksize +% must be greater than the trigger threshold (can't do more than one +% separation on the initial trigger). +FUNCTION {large.number.blocksize}{ #3 } + +% What is actually inserted between the number groups. +FUNCTION {large.number.separator}{ "\," } + +% So as to save on integer variables by reusing existing ones, numnames +% holds the current number of consecutive digits read and nameptr holds +% the number that will trigger an inserted space. +FUNCTION {large.number.separate} +{ 't := + "" + #0 'numnames := + large.number.trigger 'nameptr := + { t empty$ not } + { t #-1 #1 substring$ is.num + { numnames #1 + 'numnames := } + { #0 'numnames := + large.number.trigger 'nameptr := + } + if$ + t #-1 #1 substring$ swap$ * + t #-2 global.max$ substring$ 't := + numnames nameptr = + { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$ + nameptr large.number.blocksize - #1 + global.max$ substring$ + large.number.separator swap$ * * + nameptr large.number.blocksize - 'numnames := + large.number.blocksize #1 + 'nameptr := + } + { skip$ } + if$ + } + while$ +} + +% Converts all single dashes "-" to double dashes "--". +FUNCTION {n.dashify} +{ large.number.separate + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + + +% This function detects entries with names that are identical to that of +% the previous entry and replaces the repeated names with dashes (if the +% "is.dash.repeated.names" user control is nonzero). +FUNCTION {name.or.dash} +{ 's := + oldname empty$ + { s 'oldname := s } + { s oldname = + { is.dash.repeated.names + { repeated.name.dashes } + { s 'oldname := s } + if$ + } + { s 'oldname := s } + if$ + } + if$ +} + +% Converts the number string on the top of the stack to +% "numerical ordinal form" (e.g., "7" to "7th"). There is +% no artificial limit to the upper bound of the numbers as the +% two least significant digits determine the ordinal form. +FUNCTION {num.to.ordinal} +{ duplicate$ #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ "1" = + { bbl.st * } + { duplicate$ #-1 #1 substring$ "2" = + { bbl.nd * } + { duplicate$ #-1 #1 substring$ "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +% If the string on the top of the stack begins with a number, +% (e.g., 11th) then replace the string with the leading number +% it contains. Otherwise retain the string as-is. s holds the +% extracted number, t holds the part of the string that remains +% to be scanned. +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +% Converts the word number string on the top of the stack to +% Arabic string form. Will be successful up to "tenth". +FUNCTION {word.to.num} +{ duplicate$ "l" change.case$ 's := + s "first" = + { pop$ "1" } + { skip$ } + if$ + s "second" = + { pop$ "2" } + { skip$ } + if$ + s "third" = + { pop$ "3" } + { skip$ } + if$ + s "fourth" = + { pop$ "4" } + { skip$ } + if$ + s "fifth" = + { pop$ "5" } + { skip$ } + if$ + s "sixth" = + { pop$ "6" } + { skip$ } + if$ + s "seventh" = + { pop$ "7" } + { skip$ } + if$ + s "eighth" = + { pop$ "8" } + { skip$ } + if$ + s "ninth" = + { pop$ "9" } + { skip$ } + if$ + s "tenth" = + { pop$ "10" } + { skip$ } + if$ +} + + +% Converts the string on the top of the stack to numerical +% ordinal (e.g., "11th") form. +FUNCTION {convert.edition} +{ duplicate$ empty$ 'skip$ + { duplicate$ #1 #1 substring$ is.num + { extract.num + num.to.ordinal + } + { word.to.num + duplicate$ #1 #1 substring$ is.num + { num.to.ordinal } + { "edition ordinal word " quote$ * edition * quote$ * + " may be too high (or improper) for conversion" * " in " * cite$ * warning$ + } + if$ + } + if$ + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LATEX BIBLIOGRAPHY CODE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% from plainnat.bst +FUNCTION {format.full.names} +{'s := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}" format.name$ 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.full} +{ author empty$ + { editor empty$ + { "" } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.full} +{ author empty$ + { "" } + { author format.full.names } + if$ +} + +FUNCTION {editor.full} +{ editor empty$ + { "" } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + { author.editor.full } + { type$ "proceedings" = + type$ "periodical" = + or + { editor.full } + { author.full } + if$ + } + if$ +} +% END from plainnat.bst + +FUNCTION {start.entry} +{ newline$ + "\bibitem[" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + initialize.prev.this.status +} + +% Here we write out all the LaTeX code that we will need. The most involved +% code sequences are those that control the alternate interword spacing and +% foreign language hyphenation patterns. The heavy use of \providecommand +% gives users a way to override the defaults. Special thanks to Javier Bezos, +% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all +% the other gurus on comp.text.tex for their help and advice on the topic of +% \selectlanguage, Babel and BibTeX. +FUNCTION {begin.bib} +{ "% Generated by IEEEtranN.bst, version: " bst.file.version * " (" * bst.file.date * ")" * + write$ newline$ + preamble$ empty$ 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + "\providecommand{\natexlab}[1]{#1}" + write$ newline$ + "\providecommand{\url}[1]{#1}" + write$ newline$ + "\csname url@samestyle\endcsname" + write$ newline$ + "\providecommand{\newblock}{\relax}" + write$ newline$ + "\providecommand{\bibinfo}[2]{#2}" + write$ newline$ + "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}" + write$ newline$ + "\providecommand{\BIBentryALTinterwordstretchfactor}{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus " + write$ newline$ + "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}" + write$ newline$ + "\providecommand{\BIBforeignlanguage}[2]{{%" + write$ newline$ + "\expandafter\ifx\csname l@#1\endcsname\relax" + write$ newline$ + "\typeout{** WARNING: IEEEtranN.bst: No hyphenation pattern has been}%" + write$ newline$ + "\typeout{** loaded for the language `#1'. Using the pattern for}%" + write$ newline$ + "\typeout{** the default language instead.}%" + write$ newline$ + "\else" + write$ newline$ + "\language=\csname l@#1\endcsname" + write$ newline$ + "\fi" + write$ newline$ + "#2}}" + write$ newline$ + "\providecommand{\BIBdecl}{\relax}" + write$ newline$ + "\BIBdecl" + write$ newline$ +} + +FUNCTION {end.bib} +{ newline$ "\end{thebibliography}" write$ newline$ } + +FUNCTION {if.url.alt.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + +FUNCTION {if.url.std.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%% +%% FORMAT HANDLERS %% +%%%%%%%%%%%%%%%%%%%%% + +%% Lower Level Formats (used by higher level formats) + +FUNCTION {format.address.org.or.pub.date} +{ 't := + "" + year empty$ + { "empty year in " cite$ * warning$ } + { skip$ } + if$ + address empty$ t empty$ and + year empty$ and month empty$ and + { skip$ } + { this.to.prev.status + this.status.std + cap.status.std + address "address" bibinfo.check * + t empty$ + { skip$ } + { punct.period 'prev.status.punct := + space.large 'prev.status.space := + address empty$ + { skip$ } + { ": " * } + if$ + t * + } + if$ + year empty$ month empty$ and + { skip$ } + { t empty$ address empty$ and + { skip$ } + { ", " * } + if$ + month empty$ + { year empty$ + { skip$ } + { year "year" bibinfo.check * } + if$ + } + { month "month" bibinfo.check * + year empty$ + { skip$ } + { " " * year "year" bibinfo.check * } + if$ + } + if$ + } + if$ + } + if$ +} + + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + this.to.prev.status + this.status.std + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + name.format.string + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { nameptr num.names.shown.with.forced.et.al #1 + = + numnames max.num.names.before.forced.et.al > + is.forced.et.al and and + { "others" 't := + #1 'namesleft := + } + { skip$ } + if$ + namesleft #1 > + { ", " * t do.name.latex.cmd * } + { s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { " " * bbl.etal emphasize * } + { numnames #2 > + { "," * } + { skip$ } + if$ + bbl.and + space.word * t do.name.latex.cmd * + } + if$ + } + if$ + } + { t do.name.latex.cmd } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + cap.status.std + } if$ +} + + + + +%% Higher Level Formats + +%% addresses/locations + +FUNCTION {format.address} +{ address duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% author/editor names + +FUNCTION {format.authors}{ author "author" format.names } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { ", " * + get.bbl.editor + capitalize + * + } + if$ +} + + + +%% date + +FUNCTION {format.date} +{ + month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { this.to.prev.status + this.status.std + cap.status.std + swap$ 'skip$ + { + swap$ + " " * swap$ + } + if$ + * + } + if$ +} + +FUNCTION {format.date.electronic} +{ month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ + { pop$ } + { "there's a month but no year in " cite$ * warning$ + pop$ ")" * "(" swap$ * + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ + } + { swap$ + { swap$ pop$ ")" * "(" swap$ * } + { "(" swap$ * ", " * swap$ * ")" * } + if$ + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ +} + + + +%% edition/title + +% Note: IEEE considers the edition to be closely associated with +% the title of a book. So, in IEEEtran.bst the edition is normally handled +% within the formatting of the title. The format.edition function is +% retained here for possible future use. +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + convert.edition + status.cap + { "t" } + { "l" } + if$ change.case$ + "edition" bibinfo.check + "~" * bbl.edition * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of a conference proceedings. +% Here we use the "intype" field to provide the user a way to +% override the word "in" (e.g., with things like "presented at") +% Use of intype stops the emphasis of the booktitle to indicate that +% we no longer mean the written conference proceedings, but the +% conference itself. +FUNCTION {format.in.booktitle} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + intype missing$ + { emphasize + bbl.in " " * + } + { intype " " * } + if$ + swap$ * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of collection. +% Here the "intype" field is not supported, but "edition" is. +FUNCTION {format.in.booktitle.edition} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + "l" change.case$ + * "~" * bbl.edition * + } + if$ + bbl.in " " * swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ 'skip$ + { quote.close 'this.status.quote := + is.last.char.not.punct + { punct.std 'this.status.punct := } + { punct.no 'this.status.punct := } + if$ + select.language + "``" swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title.electronic} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ + { skip$ } + { select.language } + if$ +} + +FUNCTION {format.book.title.edition} +{ title "title" bibinfo.check + duplicate$ empty$ + { "empty title in " cite$ * warning$ } + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + status.cap + { "t" } + { "l" } + if$ + change.case$ + * "~" * bbl.edition * + } + if$ + cap.status.std + } + if$ +} + +FUNCTION {format.book.title} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% journal + +FUNCTION {format.journal} +{ journal duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% how published + +FUNCTION {format.howpublished} +{ howpublished duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% institutions/organization/publishers/school + +FUNCTION {format.institution} +{ institution duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.organization} +{ organization duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.address.publisher.date} +{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date } + +FUNCTION {format.address.publisher.date.nowarn} +{ publisher "publisher" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.address.organization.date} +{ organization "organization" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.school} +{ school duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% volume/number/series/chapter/pages + +FUNCTION {format.volume} +{ volume empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + bbl.volume + status.cap + { capitalize } + { skip$ } + if$ + swap$ tie.or.space.prefix + "volume" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number} +{ number empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + status.cap + { bbl.number capitalize } + { bbl.number } + if$ + swap$ tie.or.space.prefix + "number" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number.if.use.for.article} +{ is.use.number.for.article + { format.number } + { "" } + if$ +} + +% IEEE does not seem to tie the series so closely with the volume +% and number as is done in other bibliography styles. Instead the +% series is treated somewhat like an extension of the title. +FUNCTION {format.series} +{ series empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.series " " * + series "series" bibinfo.check * + cap.status.std + } + if$ +} + + +FUNCTION {format.chapter} +{ chapter empty$ + { "" } + { this.to.prev.status + this.status.std + type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + cap.status.std + } + if$ +} + + +% The intended use of format.paper is for paper numbers of inproceedings. +% The paper type can be overridden via the type field. +% We allow the type to be displayed even if the paper number is absent +% for things like "postdeadline paper" +FUNCTION {format.paper} +{ is.use.paper + { paper empty$ + { type empty$ + { "" } + { this.to.prev.status + this.status.std + type "type" bibinfo.check + cap.status.std + } + if$ + } + { this.to.prev.status + this.status.std + type empty$ + { bbl.paper } + { type "type" bibinfo.check } + if$ + " " * paper + "paper" bibinfo.check + * + cap.status.std + } + if$ + } + { "" } + if$ +} + + +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + duplicate$ is.multiple.pages + { + bbl.pages swap$ + n.dashify + } + { + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + cap.status.std + } + if$ +} + + + +%% technical report number + +FUNCTION {format.tech.report.number} +{ number "number" bibinfo.check + this.to.prev.status + this.status.std + cap.status.std + type duplicate$ empty$ + { pop$ + bbl.techrep + } + { skip$ } + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ } + { tie.or.space.prefix * * } + if$ +} + + + +%% note + +FUNCTION {format.note} +{ note empty$ + { "" } + { this.to.prev.status + this.status.std + punct.period 'this.status.punct := + note #1 #1 substring$ + duplicate$ "{" = + { skip$ } + { status.cap + { "u" } + { "l" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + cap.yes 'status.cap := + } + if$ +} + + + +%% patent + +FUNCTION {format.patent.date} +{ this.to.prev.status + this.status.std + year empty$ + { monthfiled duplicate$ empty$ + { "monthfiled" bibinfo.check pop$ "" } + { "monthfiled" bibinfo.check } + if$ + dayfiled duplicate$ empty$ + { "dayfiled" bibinfo.check pop$ "" * } + { "dayfiled" bibinfo.check + monthfiled empty$ + { "dayfiled without a monthfiled in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + yearfiled empty$ + { "no year or yearfiled in " cite$ * warning$ } + { yearfiled "yearfiled" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + } + { month duplicate$ empty$ + { "month" bibinfo.check pop$ "" } + { "month" bibinfo.check } + if$ + day duplicate$ empty$ + { "day" bibinfo.check pop$ "" * } + { "day" bibinfo.check + month empty$ + { "day without a month in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + year "year" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + cap.status.std +} + +FUNCTION {format.patent.nationality.type.number} +{ this.to.prev.status + this.status.std + nationality duplicate$ empty$ + { "nationality" bibinfo.warn pop$ "" } + { "nationality" bibinfo.check + duplicate$ "l" change.case$ "united states" = + { pop$ bbl.patentUS } + { skip$ } + if$ + " " * + } + if$ + type empty$ + { bbl.patent "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.warn pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + + + +%% standard + +FUNCTION {format.organization.institution.standard.type.number} +{ this.to.prev.status + this.status.std + organization duplicate$ empty$ + { pop$ + institution duplicate$ empty$ + { "institution" bibinfo.warn } + { "institution" bibinfo.warn " " * } + if$ + } + { "organization" bibinfo.warn " " * } + if$ + type empty$ + { bbl.standard "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.check pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + +FUNCTION {format.revision} +{ revision empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.revision + revision tie.or.space.prefix + "revision" bibinfo.check + * * + cap.status.std + } + if$ +} + + +%% thesis + +FUNCTION {format.master.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.mthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + +FUNCTION {format.phd.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.phdthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + + + +%% URL + +FUNCTION {format.url} +{ url empty$ + { "" } + { this.to.prev.status + this.status.std + cap.yes 'status.cap := + name.url.prefix " " * + "\url{" * url * "}" * + punct.no 'this.status.punct := + punct.period 'prev.status.punct := + space.normal 'this.status.space := + space.normal 'prev.status.space := + quote.no 'this.status.quote := + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%% +%% ENTRY HANDLERS %% +%%%%%%%%%%%%%%%%%%%% + + +% Note: In many journals, IEEE (or the authors) tend not to show the number +% for articles, so the display of the number is controlled here by the +% switch "is.use.number.for.article" +FUNCTION {article} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.journal "journal" bibinfo.check "journal" output.warn + format.volume output + format.number.if.use.for.article output + format.pages output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {book} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + author empty$ + { skip$ } + { format.editors output } + if$ + format.address.publisher.date output + format.volume output + format.number output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {booklet} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {electronic} +{ std.status.using.period + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.date.electronic output + format.article.title.electronic output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {inbook} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + format.address.publisher.date output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {incollection} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle.edition "booktitle" output.warn + format.series output + format.editors output + format.address.publisher.date.nowarn output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {inproceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle "booktitle" output.warn + format.series output + format.editors output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.paper output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {manual} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title.edition "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {mastersthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.master.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {misc} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.pages output + format.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {patent} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.patent.nationality.type.number output + format.patent.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {periodical} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + format.organization "organization" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {phdthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.phd.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {proceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {standard} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization.institution.standard.type.number output + format.revision output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {techreport} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.institution "institution" bibinfo.warn output + format.address "address" bibinfo.check output + format.tech.report.number output.nonnull + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {unpublished} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.date output + format.note "note" output.warn + format.url output + fin.entry + if.url.std.interword.spacing +} + + +% The special entry type which provides the user interface to the +% BST controls +FUNCTION {IEEEtranBSTCTL} +{ is.print.banners.to.terminal + { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." * + top$ + } + { skip$ } + if$ + CTLuse_article_number + empty$ + { skip$ } + { CTLuse_article_number + yes.no.to.int + 'is.use.number.for.article := + } + if$ + CTLuse_paper + empty$ + { skip$ } + { CTLuse_paper + yes.no.to.int + 'is.use.paper := + } + if$ + CTLuse_forced_etal + empty$ + { skip$ } + { CTLuse_forced_etal + yes.no.to.int + 'is.forced.et.al := + } + if$ + CTLmax_names_forced_etal + empty$ + { skip$ } + { CTLmax_names_forced_etal + string.to.integer + 'max.num.names.before.forced.et.al := + } + if$ + CTLnames_show_etal + empty$ + { skip$ } + { CTLnames_show_etal + string.to.integer + 'num.names.shown.with.forced.et.al := + } + if$ + CTLuse_alt_spacing + empty$ + { skip$ } + { CTLuse_alt_spacing + yes.no.to.int + 'is.use.alt.interword.spacing := + } + if$ + CTLalt_stretch_factor + empty$ + { skip$ } + { CTLalt_stretch_factor + 'ALTinterwordstretchfactor := + "\renewcommand{\BIBentryALTinterwordstretchfactor}{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + } + if$ + CTLdash_repeated_names + empty$ + { skip$ } + { CTLdash_repeated_names + yes.no.to.int + 'is.dash.repeated.names := + } + if$ + CTLname_format_string + empty$ + { skip$ } + { CTLname_format_string + 'name.format.string := + } + if$ + CTLname_latex_cmd + empty$ + { skip$ } + { CTLname_latex_cmd + 'name.latex.cmd := + } + if$ + CTLname_url_prefix + missing$ + { skip$ } + { CTLname_url_prefix + 'name.url.prefix := + } + if$ + + + num.names.shown.with.forced.et.al max.num.names.before.forced.et.al > + { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$ + max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al := + } + { skip$ } + if$ +} + + +%%%%%%%%%%%%%%%%%%% +%% ENTRY ALIASES %% +%%%%%%%%%%%%%%%%%%% +FUNCTION {conference}{inproceedings} +FUNCTION {online}{electronic} +FUNCTION {internet}{electronic} +FUNCTION {webpage}{electronic} +FUNCTION {www}{electronic} +FUNCTION {default.type}{misc} + + + +%%%%%%%%%%%%%%%%%% +%% MAIN PROGRAM %% +%%%%%%%%%%%%%%%%%% + +READ + +EXECUTE {initialize.controls} +EXECUTE {initialize.status.constants} +EXECUTE {banner.message} + + + +% BEGIN sort code based on unsrtnat.bst +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + { s } + if$ +} + +STRINGS { last.label next.extra } + +INTEGERS { last.extra.num } + +FUNCTION {format.lab.names} +{ 's := + s #1 "{vv~}{ll}" format.name$ + s num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * s #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key } + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.institution.label} +{ author empty$ + { key empty$ + { organization empty$ + { institution empty$ + { cite$ #1 #3 substring$ } + { "The " #4 institution chop.word #3 text.prefix$ } + if$ + } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key } + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.label} +{ type$ "book" = + type$ "inbook" = + or + { author.editor.key.label } + { type$ "proceedings" = + type$ "periodical" = + or + { editor.key.organization.label } + { type$ "manual" = + type$ "electronic" = + type$ "misc" = + or or + { author.key.organization.label } + { type$ "standard" = + { author.key.organization.institution.label } + { author.key.label } + if$ + } + if$ + } + if$ + } + if$ + duplicate$ + 'short.list := + "(" + * + type$ "patent" = + { year empty$ + { yearfiled } + { year } + if$ + } + { year } + if$ + duplicate$ + empty$ + short.list key empty.field.to.null.string = or + { pop$ "" } + { skip$ } + if$ + * + 'label := +} + + +INTEGERS { seq.num } + +FUNCTION {init.seq} +{ #0 'seq.num :=} + + +FUNCTION {int.to.fix} +{ "000000000" swap$ int.to.str$ * + #-1 #10 substring$ +} + + +FUNCTION {presort} +{ type$ "ieeetranbstctl" = + { key empty$ + { "_" } + { key sortify } + if$ + " " + * + seq.num int.to.fix + } + { calc.label + label sortify + " " + * + seq.num #1 + 'seq.num := + seq.num int.to.fix + } + if$ + 'sort.label := + sort.label * + #1 entry.max$ substring$ + 'sort.key$ := +} + + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'last.extra.num := + #0 'number.label := +} + +FUNCTION {forward.pass} +{ type$ "ieeetranbstctl" = + { skip$ } + { last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := + } + if$ +} + +FUNCTION {reverse.pass} +{ type$ "ieeetranbstctl" = + { skip$ } + { next.extra "b" = + { "a" 'extra.label := } + { skip$ } + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + { skip$ } + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := + } + if$ +} + +FUNCTION {bib.sort.order} +{ sort.label 'sort.key$ := +} +% END sort code based on unsrtnat.bst + + + +EXECUTE {init.seq} + +ITERATE {presort} + +SORT + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} +REVERSE {reverse.pass} + +ITERATE {bib.sort.order} + +SORT + +EXECUTE {begin.bib} +ITERATE {call.type$} +EXECUTE {end.bib} + +EXECUTE{completed.message} + + +%% That's all folks, mds. diff -r 000000000000 -r 8319d82cab07 bibtex/IEEEtranS.bst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bibtex/IEEEtranS.bst Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,2615 @@ +%% +%% IEEEtranS.bst +%% BibTeX Bibliography Style file +%% Sorting version of IEEEtran.bst +%% *** Not for normal IEEE work *** +%% Version 1.13 (2008/09/30) +%% +%% Copyright (c) 2003-2008 Michael Shell +%% +%% Original starting code base and algorithms obtained from the output of +%% Patrick W. Daly's makebst package as well as from prior versions of +%% IEEE BibTeX styles: +%% +%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988) +%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993) +%% +%% Added sorting code is from plain.bst. +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% and/or +%% http://www.ieee.org/ +%% +%% For use with BibTeX version 0.99a or later +%% +%% This is a numerical citation style. +%% +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%% +%% This work is distributed under the LaTeX Project Public License (LPPL) +%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, +%% distributed and modified. A copy of the LPPL, version 1.3, is included +%% in the base LaTeX documentation of all distributions of LaTeX released +%% 2003/12/01 or later. +%% Retain all contribution notices and credits. +%% ** Modified files should be clearly indicated as such, including ** +%% ** renaming them and changing author support contact information. ** +%% +%% File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib, +%% IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst, +%% IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf +%%************************************************************************* +% +% +% Changelog: +% +% 1.10 (2002/09/27) Initial release +% +% 1.11 (2003/04/02) +% 1. Fixed bug with URLs containing underscores when using url.sty. Thanks +% to Ming Kin Lai for reporting this. +% +% 1.12 (2007/01/11) +% 1. Fixed bug with unwanted comma before "et al." when an entry contained +% more than two author names. Thanks to Pallav Gupta for reporting this. +% 2. Fixed bug with anomalous closing quote in tech reports that have a +% type, but without a number or address. Thanks to Mehrdad Mirreza for +% reporting this. +% 3. Use braces in \providecommand in begin.bib to better support +% latex2html. TeX style length assignments OK with recent versions +% of latex2html - 1.71 (2002/2/1) or later is strongly recommended. +% Use of the language field still causes trouble with latex2html. +% Thanks to Federico Beffa for reporting this. +% 4. Added IEEEtran.bst ID and version comment string to .bbl output. +% 5. Provide a \BIBdecl hook that allows the user to execute commands +% just prior to the first entry. +% 6. Use default urlstyle (is using url.sty) of "same" rather than rm to +% better work with a wider variety of bibliography styles. +% 7. Changed month abbreviations from Sept., July and June to Sep., Jul., +% and Jun., respectively, as IEEE now does. Thanks to Moritz Borgmann +% for reporting this. +% 8. Control entry types should not be considered when calculating longest +% label width. +% 9. Added alias www for electronic/online. +% 10. Added CTLname_url_prefix control entry type. +% +% 1.13 (2008/09/30) +% 1. Fixed bug with edition number to ordinal conversion. Thanks to +% Michael Roland for reporting this and correcting the algorithm. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% These are the defaults for the user adjustable controls. The values used +% here can be overridden by the user via IEEEtranBSTCTL entry type. + +% NOTE: The recommended LaTeX command to invoke a control entry type is: +% +%\makeatletter +%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}} +%\def\@bstctlcite[#1]#2{\@bsphack +% \@for\@citeb:=#2\do{% +% \edef\@citeb{\expandafter\@firstofone\@citeb}% +% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}% +% \@esphack} +%\makeatother +% +% It is called at the start of the document, before the first \cite, like: +% \bstctlcite{IEEEexample:BSTcontrol} +% +% IEEEtran.cls V1.6 and later does provide this command. + + + +% #0 turns off the display of the number for articles. +% #1 enables +FUNCTION {default.is.use.number.for.article} { #1 } + + +% #0 turns off the display of the paper and type fields in @inproceedings. +% #1 enables +FUNCTION {default.is.use.paper} { #1 } + + +% #0 turns off the forced use of "et al." +% #1 enables +FUNCTION {default.is.forced.et.al} { #0 } + +% The maximum number of names that can be present beyond which an "et al." +% usage is forced. Be sure that num.names.shown.with.forced.et.al (below) +% is not greater than this value! +% Note: There are many instances of references in IEEE journals which have +% a very large number of authors as well as instances in which "et al." is +% used profusely. +FUNCTION {default.max.num.names.before.forced.et.al} { #10 } + +% The number of names that will be shown with a forced "et al.". +% Must be less than or equal to max.num.names.before.forced.et.al +FUNCTION {default.num.names.shown.with.forced.et.al} { #1 } + + +% #0 turns off the alternate interword spacing for entries with URLs. +% #1 enables +FUNCTION {default.is.use.alt.interword.spacing} { #1 } + +% If alternate interword spacing for entries with URLs is enabled, this is +% the interword spacing stretch factor that will be used. For example, the +% default "4" here means that the interword spacing in entries with URLs can +% stretch to four times normal. Does not have to be an integer. Note that +% the value specified here can be overridden by the user in their LaTeX +% code via a command such as: +% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to +% that via the IEEEtranBSTCTL entry type. +FUNCTION {default.ALTinterwordstretchfactor} { "4" } + + +% #0 turns off the "dashification" of repeated (i.e., identical to those +% of the previous entry) names. IEEE normally does this. +% #1 enables +FUNCTION {default.is.dash.repeated.names} { #1 } + + +% The default name format control string. +FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" } + + +% The default LaTeX font command for the names. +FUNCTION {default.name.latex.cmd}{ "" } + + +% The default URL prefix. +FUNCTION {default.name.url.prefix}{ "[Online]. Available:" } + + +% Other controls that cannot be accessed via IEEEtranBSTCTL entry type. + +% #0 turns off the terminal startup banner/completed message so as to +% operate more quietly. +% #1 enables +FUNCTION {is.print.banners.to.terminal} { #1 } + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% FILE VERSION AND BANNER %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION{bst.file.version} { "1.13" } +FUNCTION{bst.file.date} { "2008/09/30" } +FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" } + +FUNCTION {banner.message} +{ is.print.banners.to.terminal + { "-- IEEEtranS.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$ + "** Sorting version - not for normal IEEE work." + top$ + } + { skip$ } + if$ +} + +FUNCTION {completed.message} +{ is.print.banners.to.terminal + { "" + top$ + "Done." + top$ + } + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING CONSTANTS %% +%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {bbl.and}{ "and" } +FUNCTION {bbl.etal}{ "et~al." } +FUNCTION {bbl.editors}{ "eds." } +FUNCTION {bbl.editor}{ "ed." } +FUNCTION {bbl.edition}{ "ed." } +FUNCTION {bbl.volume}{ "vol." } +FUNCTION {bbl.of}{ "of" } +FUNCTION {bbl.number}{ "no." } +FUNCTION {bbl.in}{ "in" } +FUNCTION {bbl.pages}{ "pp." } +FUNCTION {bbl.page}{ "p." } +FUNCTION {bbl.chapter}{ "ch." } +FUNCTION {bbl.paper}{ "paper" } +FUNCTION {bbl.part}{ "pt." } +FUNCTION {bbl.patent}{ "Patent" } +FUNCTION {bbl.patentUS}{ "U.S." } +FUNCTION {bbl.revision}{ "Rev." } +FUNCTION {bbl.series}{ "ser." } +FUNCTION {bbl.standard}{ "Std." } +FUNCTION {bbl.techrep}{ "Tech. Rep." } +FUNCTION {bbl.mthesis}{ "Master's thesis" } +FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" } +FUNCTION {bbl.st}{ "st" } +FUNCTION {bbl.nd}{ "nd" } +FUNCTION {bbl.rd}{ "rd" } +FUNCTION {bbl.th}{ "th" } + + +% This is the LaTeX spacer that is used when a larger than normal space +% is called for (such as just before the address:publisher). +FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " } + +% The LaTeX code for dashes that are used to represent repeated names. +% Note: Some older IEEE journals used something like +% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along +% the baseline. However, IEEE now uses a thinner, above baseline, +% six dash long sequence. +FUNCTION {repeated.name.dashes} { "------" } + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% PREDEFINED STRING MACROS %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +MACRO {jan} {"Jan."} +MACRO {feb} {"Feb."} +MACRO {mar} {"Mar."} +MACRO {apr} {"Apr."} +MACRO {may} {"May"} +MACRO {jun} {"Jun."} +MACRO {jul} {"Jul."} +MACRO {aug} {"Aug."} +MACRO {sep} {"Sep."} +MACRO {oct} {"Oct."} +MACRO {nov} {"Nov."} +MACRO {dec} {"Dec."} + + + +%%%%%%%%%%%%%%%%%% +%% ENTRY FIELDS %% +%%%%%%%%%%%%%%%%%% + +ENTRY + { address + assignee + author + booktitle + chapter + day + dayfiled + edition + editor + howpublished + institution + intype + journal + key + language + month + monthfiled + nationality + note + number + organization + pages + paper + publisher + school + series + revision + title + type + url + volume + year + yearfiled + CTLuse_article_number + CTLuse_paper + CTLuse_forced_etal + CTLmax_names_forced_etal + CTLnames_show_etal + CTLuse_alt_spacing + CTLalt_stretch_factor + CTLdash_repeated_names + CTLname_format_string + CTLname_latex_cmd + CTLname_url_prefix + } + {} + { label } + + + + +%%%%%%%%%%%%%%%%%%%%%%% +%% INTEGER VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%%% + +INTEGERS { prev.status.punct this.status.punct punct.std + punct.no punct.comma punct.period + prev.status.space this.status.space space.std + space.no space.normal space.large + prev.status.quote this.status.quote quote.std + quote.no quote.close + prev.status.nline this.status.nline nline.std + nline.no nline.newblock + status.cap cap.std + cap.no cap.yes} + +INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames } + +INTEGERS { is.use.number.for.article + is.use.paper + is.forced.et.al + max.num.names.before.forced.et.al + num.names.shown.with.forced.et.al + is.use.alt.interword.spacing + is.dash.repeated.names} + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%% + +STRINGS { bibinfo + longest.label + oldname + s + t + ALTinterwordstretchfactor + name.format.string + name.latex.cmd + name.url.prefix} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOW LEVEL FUNCTIONS %% +%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.controls} +{ default.is.use.number.for.article 'is.use.number.for.article := + default.is.use.paper 'is.use.paper := + default.is.forced.et.al 'is.forced.et.al := + default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al := + default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al := + default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing := + default.is.dash.repeated.names 'is.dash.repeated.names := + default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor := + default.name.format.string 'name.format.string := + default.name.latex.cmd 'name.latex.cmd := + default.name.url.prefix 'name.url.prefix := +} + + +% This IEEEtran.bst features a very powerful and flexible mechanism for +% controlling the capitalization, punctuation, spacing, quotation, and +% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need +% or use the newline/newblock feature, but it has been implemented for +% possible future use.) The output states of IEEEtran.bst consist of +% multiple independent attributes and, as such, can be thought of as being +% vectors, rather than the simple scalar values ("before.all", +% "mid.sentence", etc.) used in most other .bst files. +% +% The more flexible and complex design used here was motivated in part by +% IEEE's rather unusual bibliography style. For example, IEEE ends the +% previous field item with a period and large space prior to the publisher +% address; the @electronic entry types use periods as inter-item punctuation +% rather than the commas used by the other entry types; and URLs are never +% followed by periods even though they are the last item in the entry. +% Although it is possible to accommodate these features with the conventional +% output state system, the seemingly endless exceptions make for convoluted, +% unreliable and difficult to maintain code. +% +% IEEEtran.bst's output state system can be easily understood via a simple +% illustration of two most recently formatted entry fields (on the stack): +% +% CURRENT_ITEM +% "PREVIOUS_ITEM +% +% which, in this example, is to eventually appear in the bibliography as: +% +% "PREVIOUS_ITEM," CURRENT_ITEM +% +% It is the job of the output routine to take the previous item off of the +% stack (while leaving the current item at the top of the stack), apply its +% trailing punctuation (including closing quote marks) and spacing, and then +% to write the result to BibTeX's output buffer: +% +% "PREVIOUS_ITEM," +% +% Punctuation (and spacing) between items is often determined by both of the +% items rather than just the first one. The presence of quotation marks +% further complicates the situation because, in standard English, trailing +% punctuation marks are supposed to be contained within the quotes. +% +% IEEEtran.bst maintains two output state (aka "status") vectors which +% correspond to the previous and current (aka "this") items. Each vector +% consists of several independent attributes which track punctuation, +% spacing, quotation, and newlines. Capitalization status is handled by a +% separate scalar because the format routines, not the output routine, +% handle capitalization and, therefore, there is no need to maintain the +% capitalization attribute for both the "previous" and "this" items. +% +% When a format routine adds a new item, it copies the current output status +% vector to the previous output status vector and (usually) resets the +% current (this) output status vector to a "standard status" vector. Using a +% "standard status" vector in this way allows us to redefine what we mean by +% "standard status" at the start of each entry handler and reuse the same +% format routines under the various inter-item separation schemes. For +% example, the standard status vector for the @book entry type may use +% commas for item separators, while the @electronic type may use periods, +% yet both entry handlers exploit many of the exact same format routines. +% +% Because format routines have write access to the output status vector of +% the previous item, they can override the punctuation choices of the +% previous format routine! Therefore, it becomes trivial to implement rules +% such as "Always use a period and a large space before the publisher." By +% pushing the generation of the closing quote mark to the output routine, we +% avoid all the problems caused by having to close a quote before having all +% the information required to determine what the punctuation should be. +% +% The IEEEtran.bst output state system can easily be expanded if needed. +% For instance, it is easy to add a "space.tie" attribute value if the +% bibliography rules mandate that two items have to be joined with an +% unbreakable space. + +FUNCTION {initialize.status.constants} +{ #0 'punct.no := + #1 'punct.comma := + #2 'punct.period := + #0 'space.no := + #1 'space.normal := + #2 'space.large := + #0 'quote.no := + #1 'quote.close := + #0 'cap.no := + #1 'cap.yes := + #0 'nline.no := + #1 'nline.newblock := +} + +FUNCTION {std.status.using.comma} +{ punct.comma 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.no 'cap.std := +} + +FUNCTION {std.status.using.period} +{ punct.period 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.yes 'cap.std := +} + +FUNCTION {initialize.prev.this.status} +{ punct.no 'prev.status.punct := + space.no 'prev.status.space := + quote.no 'prev.status.quote := + nline.no 'prev.status.nline := + punct.no 'this.status.punct := + space.no 'this.status.space := + quote.no 'this.status.quote := + nline.no 'this.status.nline := + cap.yes 'status.cap := +} + +FUNCTION {this.status.std} +{ punct.std 'this.status.punct := + space.std 'this.status.space := + quote.std 'this.status.quote := + nline.std 'this.status.nline := +} + +FUNCTION {cap.status.std}{ cap.std 'status.cap := } + +FUNCTION {this.to.prev.status} +{ this.status.punct 'prev.status.punct := + this.status.space 'prev.status.space := + this.status.quote 'prev.status.quote := + this.status.nline 'prev.status.nline := +} + + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ { skip$ } + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + { skip$ } + if$ +} + + +% convert the strings "yes" or "no" to #1 or #0 respectively +FUNCTION {yes.no.to.int} +{ "l" change.case$ duplicate$ + "yes" = + { pop$ #1 } + { duplicate$ "no" = + { pop$ #0 } + { "unknown boolean " quote$ * swap$ * quote$ * + " in " * cite$ * warning$ + #0 + } + if$ + } + if$ +} + + +% pushes true if the single char string on the stack is in the +% range of "0" to "9" +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +% multiplies the integer on the stack by a factor of 10 +FUNCTION {bump.int.mag} +{ #0 'multiresult := + { duplicate$ #0 > } + { #1 - + multiresult #10 + + 'multiresult := + } + while$ +pop$ +multiresult +} + +% converts a single character string on the stack to an integer +FUNCTION {char.to.integer} +{ duplicate$ + is.num + { chr.to.int$ "0" chr.to.int$ - } + {"noninteger character " quote$ * swap$ * quote$ * + " in integer field of " * cite$ * warning$ + #0 + } + if$ +} + +% converts a string on the stack to an integer +FUNCTION {string.to.integer} +{ duplicate$ text.length$ 'namesleft := + #1 'nameptr := + #0 'numnames := + { nameptr namesleft > not } + { duplicate$ nameptr #1 substring$ + char.to.integer numnames bump.int.mag + + 'numnames := + nameptr #1 + + 'nameptr := + } + while$ +pop$ +numnames +} + + + + +% The output routines write out the *next* to the top (previous) item on the +% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains +% the output status for the top two items on the stack, these output +% routines have to consider the previous output status (which corresponds to +% the item that is being output). Full independent control of punctuation, +% closing quote marks, spacing, and newblock is provided. +% +% "output.nonnull" does not check for the presence of a previous empty +% item. +% +% "output" does check for the presence of a previous empty item and will +% remove an empty item rather than outputing it. +% +% "output.warn" is like "output", but will issue a warning if it detects +% an empty item. + +FUNCTION {output.nonnull} +{ swap$ + prev.status.punct punct.comma = + { "," * } + { skip$ } + if$ + prev.status.punct punct.period = + { add.period$ } + { skip$ } + if$ + prev.status.quote quote.close = + { "''" * } + { skip$ } + if$ + prev.status.space space.normal = + { " " * } + { skip$ } + if$ + prev.status.space space.large = + { large.space * } + { skip$ } + if$ + write$ + prev.status.nline nline.newblock = + { newline$ "\newblock " write$ } + { skip$ } + if$ +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.warn} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +% "fin.entry" is the output routine that handles the last item of the entry +% (which will be on the top of the stack when "fin.entry" is called). + +FUNCTION {fin.entry} +{ this.status.punct punct.no = + { skip$ } + { add.period$ } + if$ + this.status.quote quote.close = + { "''" * } + { skip$ } + if$ +write$ +newline$ +} + + +FUNCTION {is.last.char.not.punct} +{ duplicate$ + "}" * add.period$ + #-1 #1 substring$ "." = +} + +FUNCTION {is.multiple.pages} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ } + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {do.name.latex.cmd} +{ name.latex.cmd + empty$ + { skip$ } + { name.latex.cmd "{" * swap$ * "}" * } + if$ +} + +% IEEEtran.bst uses its own \BIBforeignlanguage command which directly +% invokes the TeX hyphenation patterns without the need of the Babel +% package. Babel does a lot more than switch hyphenation patterns and +% its loading can cause unintended effects in many class files (such as +% IEEEtran.cls). +FUNCTION {select.language} +{ duplicate$ empty$ 'pop$ + { language empty$ 'skip$ + { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * } + if$ + } + if$ +} + +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} + +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {space.word}{ " " swap$ * " " * } + + +% Field Conditioners, Converters, Checkers and External Interfaces + +FUNCTION {empty.field.to.null.string} +{ duplicate$ empty$ + { pop$ "" } + { skip$ } + if$ +} + +FUNCTION {either.or.check} +{ empty$ + { pop$ } + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {empty.entry.warn} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ url empty$ + and and and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + + +% The bibinfo system provides a way for the electronic parsing/acquisition +% of a bibliography's contents as is done by ReVTeX. For example, a field +% could be entered into the bibliography as: +% \bibinfo{volume}{2} +% Only the "2" would show up in the document, but the LaTeX \bibinfo command +% could do additional things with the information. IEEEtran.bst does provide +% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is +% currently not used as the bogus bibinfo functions defined here output the +% entry values directly without the \bibinfo wrapper. The bibinfo functions +% themselves (and the calls to them) are retained for possible future use. +% +% bibinfo.check avoids acting on missing fields while bibinfo.warn will +% issue a warning message if a missing field is detected. Prior to calling +% the bibinfo functions, the user should push the field value and then its +% name string, in that order. + +FUNCTION {bibinfo.check} +{ swap$ duplicate$ missing$ + { pop$ pop$ "" } + { duplicate$ empty$ + { swap$ pop$ } + { swap$ pop$ } + if$ + } + if$ +} + +FUNCTION {bibinfo.warn} +{ swap$ duplicate$ missing$ + { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" } + { duplicate$ empty$ + { swap$ "empty " swap$ * " in " * cite$ * warning$ } + { swap$ pop$ } + if$ + } + if$ +} + + +% IEEE separates large numbers with more than 4 digits into groups of +% three. IEEE uses a small space to separate these number groups. +% Typical applications include patent and page numbers. + +% number of consecutive digits required to trigger the group separation. +FUNCTION {large.number.trigger}{ #5 } + +% For numbers longer than the trigger, this is the blocksize of the groups. +% The blocksize must be less than the trigger threshold, and 2 * blocksize +% must be greater than the trigger threshold (can't do more than one +% separation on the initial trigger). +FUNCTION {large.number.blocksize}{ #3 } + +% What is actually inserted between the number groups. +FUNCTION {large.number.separator}{ "\," } + +% So as to save on integer variables by reusing existing ones, numnames +% holds the current number of consecutive digits read and nameptr holds +% the number that will trigger an inserted space. +FUNCTION {large.number.separate} +{ 't := + "" + #0 'numnames := + large.number.trigger 'nameptr := + { t empty$ not } + { t #-1 #1 substring$ is.num + { numnames #1 + 'numnames := } + { #0 'numnames := + large.number.trigger 'nameptr := + } + if$ + t #-1 #1 substring$ swap$ * + t #-2 global.max$ substring$ 't := + numnames nameptr = + { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$ + nameptr large.number.blocksize - #1 + global.max$ substring$ + large.number.separator swap$ * * + nameptr large.number.blocksize - 'numnames := + large.number.blocksize #1 + 'nameptr := + } + { skip$ } + if$ + } + while$ +} + +% Converts all single dashes "-" to double dashes "--". +FUNCTION {n.dashify} +{ large.number.separate + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + + +% This function detects entries with names that are identical to that of +% the previous entry and replaces the repeated names with dashes (if the +% "is.dash.repeated.names" user control is nonzero). +FUNCTION {name.or.dash} +{ 's := + oldname empty$ + { s 'oldname := s } + { s oldname = + { is.dash.repeated.names + { repeated.name.dashes } + { s 'oldname := s } + if$ + } + { s 'oldname := s } + if$ + } + if$ +} + +% Converts the number string on the top of the stack to +% "numerical ordinal form" (e.g., "7" to "7th"). There is +% no artificial limit to the upper bound of the numbers as the +% two least significant digits determine the ordinal form. +FUNCTION {num.to.ordinal} +{ duplicate$ #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ "1" = + { bbl.st * } + { duplicate$ #-1 #1 substring$ "2" = + { bbl.nd * } + { duplicate$ #-1 #1 substring$ "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +% If the string on the top of the stack begins with a number, +% (e.g., 11th) then replace the string with the leading number +% it contains. Otherwise retain the string as-is. s holds the +% extracted number, t holds the part of the string that remains +% to be scanned. +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +% Converts the word number string on the top of the stack to +% Arabic string form. Will be successful up to "tenth". +FUNCTION {word.to.num} +{ duplicate$ "l" change.case$ 's := + s "first" = + { pop$ "1" } + { skip$ } + if$ + s "second" = + { pop$ "2" } + { skip$ } + if$ + s "third" = + { pop$ "3" } + { skip$ } + if$ + s "fourth" = + { pop$ "4" } + { skip$ } + if$ + s "fifth" = + { pop$ "5" } + { skip$ } + if$ + s "sixth" = + { pop$ "6" } + { skip$ } + if$ + s "seventh" = + { pop$ "7" } + { skip$ } + if$ + s "eighth" = + { pop$ "8" } + { skip$ } + if$ + s "ninth" = + { pop$ "9" } + { skip$ } + if$ + s "tenth" = + { pop$ "10" } + { skip$ } + if$ +} + + +% Converts the string on the top of the stack to numerical +% ordinal (e.g., "11th") form. +FUNCTION {convert.edition} +{ duplicate$ empty$ 'skip$ + { duplicate$ #1 #1 substring$ is.num + { extract.num + num.to.ordinal + } + { word.to.num + duplicate$ #1 #1 substring$ is.num + { num.to.ordinal } + { "edition ordinal word " quote$ * edition * quote$ * + " may be too high (or improper) for conversion" * " in " * cite$ * warning$ + } + if$ + } + if$ + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LATEX BIBLIOGRAPHY CODE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {start.entry} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + initialize.prev.this.status +} + +% Here we write out all the LaTeX code that we will need. The most involved +% code sequences are those that control the alternate interword spacing and +% foreign language hyphenation patterns. The heavy use of \providecommand +% gives users a way to override the defaults. Special thanks to Javier Bezos, +% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all +% the other gurus on comp.text.tex for their help and advice on the topic of +% \selectlanguage, Babel and BibTeX. +FUNCTION {begin.bib} +{ "% Generated by IEEEtranS.bst, version: " bst.file.version * " (" * bst.file.date * ")" * + write$ newline$ + preamble$ empty$ 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ + "\providecommand{\url}[1]{#1}" + write$ newline$ + "\csname url@samestyle\endcsname" + write$ newline$ + "\providecommand{\newblock}{\relax}" + write$ newline$ + "\providecommand{\bibinfo}[2]{#2}" + write$ newline$ + "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}" + write$ newline$ + "\providecommand{\BIBentryALTinterwordstretchfactor}{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus " + write$ newline$ + "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}" + write$ newline$ + "\providecommand{\BIBforeignlanguage}[2]{{%" + write$ newline$ + "\expandafter\ifx\csname l@#1\endcsname\relax" + write$ newline$ + "\typeout{** WARNING: IEEEtranS.bst: No hyphenation pattern has been}%" + write$ newline$ + "\typeout{** loaded for the language `#1'. Using the pattern for}%" + write$ newline$ + "\typeout{** the default language instead.}%" + write$ newline$ + "\else" + write$ newline$ + "\language=\csname l@#1\endcsname" + write$ newline$ + "\fi" + write$ newline$ + "#2}}" + write$ newline$ + "\providecommand{\BIBdecl}{\relax}" + write$ newline$ + "\BIBdecl" + write$ newline$ +} + +FUNCTION {end.bib} +{ newline$ "\end{thebibliography}" write$ newline$ } + +FUNCTION {if.url.alt.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + +FUNCTION {if.url.std.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%% +%% LONGEST LABEL PASS %% +%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ type$ "ieeetranbstctl" = + { skip$ } + { number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + { skip$ } + if$ + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%% +%% FORMAT HANDLERS %% +%%%%%%%%%%%%%%%%%%%%% + +%% Lower Level Formats (used by higher level formats) + +FUNCTION {format.address.org.or.pub.date} +{ 't := + "" + year empty$ + { "empty year in " cite$ * warning$ } + { skip$ } + if$ + address empty$ t empty$ and + year empty$ and month empty$ and + { skip$ } + { this.to.prev.status + this.status.std + cap.status.std + address "address" bibinfo.check * + t empty$ + { skip$ } + { punct.period 'prev.status.punct := + space.large 'prev.status.space := + address empty$ + { skip$ } + { ": " * } + if$ + t * + } + if$ + year empty$ month empty$ and + { skip$ } + { t empty$ address empty$ and + { skip$ } + { ", " * } + if$ + month empty$ + { year empty$ + { skip$ } + { year "year" bibinfo.check * } + if$ + } + { month "month" bibinfo.check * + year empty$ + { skip$ } + { " " * year "year" bibinfo.check * } + if$ + } + if$ + } + if$ + } + if$ +} + + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + this.to.prev.status + this.status.std + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + name.format.string + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { nameptr num.names.shown.with.forced.et.al #1 + = + numnames max.num.names.before.forced.et.al > + is.forced.et.al and and + { "others" 't := + #1 'namesleft := + } + { skip$ } + if$ + namesleft #1 > + { ", " * t do.name.latex.cmd * } + { s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { " " * bbl.etal emphasize * } + { numnames #2 > + { "," * } + { skip$ } + if$ + bbl.and + space.word * t do.name.latex.cmd * + } + if$ + } + if$ + } + { t do.name.latex.cmd } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + cap.status.std + } if$ +} + + + + +%% Higher Level Formats + +%% addresses/locations + +FUNCTION {format.address} +{ address duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% author/editor names + +FUNCTION {format.authors}{ author "author" format.names } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { ", " * + get.bbl.editor + capitalize + * + } + if$ +} + + + +%% date + +FUNCTION {format.date} +{ + month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { this.to.prev.status + this.status.std + cap.status.std + swap$ 'skip$ + { + swap$ + " " * swap$ + } + if$ + * + } + if$ +} + +FUNCTION {format.date.electronic} +{ month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ + { pop$ } + { "there's a month but no year in " cite$ * warning$ + pop$ ")" * "(" swap$ * + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ + } + { swap$ + { swap$ pop$ ")" * "(" swap$ * } + { "(" swap$ * ", " * swap$ * ")" * } + if$ + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ +} + + + +%% edition/title + +% Note: IEEE considers the edition to be closely associated with +% the title of a book. So, in IEEEtran.bst the edition is normally handled +% within the formatting of the title. The format.edition function is +% retained here for possible future use. +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + convert.edition + status.cap + { "t" } + { "l" } + if$ change.case$ + "edition" bibinfo.check + "~" * bbl.edition * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of a conference proceedings. +% Here we use the "intype" field to provide the user a way to +% override the word "in" (e.g., with things like "presented at") +% Use of intype stops the emphasis of the booktitle to indicate that +% we no longer mean the written conference proceedings, but the +% conference itself. +FUNCTION {format.in.booktitle} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + intype missing$ + { emphasize + bbl.in " " * + } + { intype " " * } + if$ + swap$ * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of collection. +% Here the "intype" field is not supported, but "edition" is. +FUNCTION {format.in.booktitle.edition} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + "l" change.case$ + * "~" * bbl.edition * + } + if$ + bbl.in " " * swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ 'skip$ + { quote.close 'this.status.quote := + is.last.char.not.punct + { punct.std 'this.status.punct := } + { punct.no 'this.status.punct := } + if$ + select.language + "``" swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title.electronic} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ + { skip$ } + { select.language } + if$ +} + +FUNCTION {format.book.title.edition} +{ title "title" bibinfo.check + duplicate$ empty$ + { "empty title in " cite$ * warning$ } + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + status.cap + { "t" } + { "l" } + if$ + change.case$ + * "~" * bbl.edition * + } + if$ + cap.status.std + } + if$ +} + +FUNCTION {format.book.title} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% journal + +FUNCTION {format.journal} +{ journal duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% how published + +FUNCTION {format.howpublished} +{ howpublished duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% institutions/organization/publishers/school + +FUNCTION {format.institution} +{ institution duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.organization} +{ organization duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.address.publisher.date} +{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date } + +FUNCTION {format.address.publisher.date.nowarn} +{ publisher "publisher" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.address.organization.date} +{ organization "organization" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.school} +{ school duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% volume/number/series/chapter/pages + +FUNCTION {format.volume} +{ volume empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + bbl.volume + status.cap + { capitalize } + { skip$ } + if$ + swap$ tie.or.space.prefix + "volume" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number} +{ number empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + status.cap + { bbl.number capitalize } + { bbl.number } + if$ + swap$ tie.or.space.prefix + "number" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number.if.use.for.article} +{ is.use.number.for.article + { format.number } + { "" } + if$ +} + +% IEEE does not seem to tie the series so closely with the volume +% and number as is done in other bibliography styles. Instead the +% series is treated somewhat like an extension of the title. +FUNCTION {format.series} +{ series empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.series " " * + series "series" bibinfo.check * + cap.status.std + } + if$ +} + + +FUNCTION {format.chapter} +{ chapter empty$ + { "" } + { this.to.prev.status + this.status.std + type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + cap.status.std + } + if$ +} + + +% The intended use of format.paper is for paper numbers of inproceedings. +% The paper type can be overridden via the type field. +% We allow the type to be displayed even if the paper number is absent +% for things like "postdeadline paper" +FUNCTION {format.paper} +{ is.use.paper + { paper empty$ + { type empty$ + { "" } + { this.to.prev.status + this.status.std + type "type" bibinfo.check + cap.status.std + } + if$ + } + { this.to.prev.status + this.status.std + type empty$ + { bbl.paper } + { type "type" bibinfo.check } + if$ + " " * paper + "paper" bibinfo.check + * + cap.status.std + } + if$ + } + { "" } + if$ +} + + +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + duplicate$ is.multiple.pages + { + bbl.pages swap$ + n.dashify + } + { + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + cap.status.std + } + if$ +} + + + +%% technical report number + +FUNCTION {format.tech.report.number} +{ number "number" bibinfo.check + this.to.prev.status + this.status.std + cap.status.std + type duplicate$ empty$ + { pop$ + bbl.techrep + } + { skip$ } + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ } + { tie.or.space.prefix * * } + if$ +} + + + +%% note + +FUNCTION {format.note} +{ note empty$ + { "" } + { this.to.prev.status + this.status.std + punct.period 'this.status.punct := + note #1 #1 substring$ + duplicate$ "{" = + { skip$ } + { status.cap + { "u" } + { "l" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + cap.yes 'status.cap := + } + if$ +} + + + +%% patent + +FUNCTION {format.patent.date} +{ this.to.prev.status + this.status.std + year empty$ + { monthfiled duplicate$ empty$ + { "monthfiled" bibinfo.check pop$ "" } + { "monthfiled" bibinfo.check } + if$ + dayfiled duplicate$ empty$ + { "dayfiled" bibinfo.check pop$ "" * } + { "dayfiled" bibinfo.check + monthfiled empty$ + { "dayfiled without a monthfiled in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + yearfiled empty$ + { "no year or yearfiled in " cite$ * warning$ } + { yearfiled "yearfiled" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + } + { month duplicate$ empty$ + { "month" bibinfo.check pop$ "" } + { "month" bibinfo.check } + if$ + day duplicate$ empty$ + { "day" bibinfo.check pop$ "" * } + { "day" bibinfo.check + month empty$ + { "day without a month in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + year "year" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + cap.status.std +} + +FUNCTION {format.patent.nationality.type.number} +{ this.to.prev.status + this.status.std + nationality duplicate$ empty$ + { "nationality" bibinfo.warn pop$ "" } + { "nationality" bibinfo.check + duplicate$ "l" change.case$ "united states" = + { pop$ bbl.patentUS } + { skip$ } + if$ + " " * + } + if$ + type empty$ + { bbl.patent "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.warn pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + + + +%% standard + +FUNCTION {format.organization.institution.standard.type.number} +{ this.to.prev.status + this.status.std + organization duplicate$ empty$ + { pop$ + institution duplicate$ empty$ + { "institution" bibinfo.warn } + { "institution" bibinfo.warn " " * } + if$ + } + { "organization" bibinfo.warn " " * } + if$ + type empty$ + { bbl.standard "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.check pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + +FUNCTION {format.revision} +{ revision empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.revision + revision tie.or.space.prefix + "revision" bibinfo.check + * * + cap.status.std + } + if$ +} + + +%% thesis + +FUNCTION {format.master.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.mthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + +FUNCTION {format.phd.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.phdthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + + + +%% URL + +FUNCTION {format.url} +{ url empty$ + { "" } + { this.to.prev.status + this.status.std + cap.yes 'status.cap := + name.url.prefix " " * + "\url{" * url * "}" * + punct.no 'this.status.punct := + punct.period 'prev.status.punct := + space.normal 'this.status.space := + space.normal 'prev.status.space := + quote.no 'this.status.quote := + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%% +%% ENTRY HANDLERS %% +%%%%%%%%%%%%%%%%%%%% + + +% Note: In many journals, IEEE (or the authors) tend not to show the number +% for articles, so the display of the number is controlled here by the +% switch "is.use.number.for.article" +FUNCTION {article} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.journal "journal" bibinfo.check "journal" output.warn + format.volume output + format.number.if.use.for.article output + format.pages output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {book} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + author empty$ + { skip$ } + { format.editors output } + if$ + format.address.publisher.date output + format.volume output + format.number output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {booklet} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {electronic} +{ std.status.using.period + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.date.electronic output + format.article.title.electronic output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {inbook} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + format.address.publisher.date output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {incollection} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle.edition "booktitle" output.warn + format.series output + format.editors output + format.address.publisher.date.nowarn output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {inproceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle "booktitle" output.warn + format.series output + format.editors output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.paper output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {manual} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title.edition "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {mastersthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.master.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {misc} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.pages output + format.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {patent} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.patent.nationality.type.number output + format.patent.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {periodical} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + format.organization "organization" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {phdthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.phd.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {proceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {standard} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization.institution.standard.type.number output + format.revision output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {techreport} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.institution "institution" bibinfo.warn output + format.address "address" bibinfo.check output + format.tech.report.number output.nonnull + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {unpublished} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.date output + format.note "note" output.warn + format.url output + fin.entry + if.url.std.interword.spacing +} + + +% The special entry type which provides the user interface to the +% BST controls +FUNCTION {IEEEtranBSTCTL} +{ is.print.banners.to.terminal + { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." * + top$ + } + { skip$ } + if$ + CTLuse_article_number + empty$ + { skip$ } + { CTLuse_article_number + yes.no.to.int + 'is.use.number.for.article := + } + if$ + CTLuse_paper + empty$ + { skip$ } + { CTLuse_paper + yes.no.to.int + 'is.use.paper := + } + if$ + CTLuse_forced_etal + empty$ + { skip$ } + { CTLuse_forced_etal + yes.no.to.int + 'is.forced.et.al := + } + if$ + CTLmax_names_forced_etal + empty$ + { skip$ } + { CTLmax_names_forced_etal + string.to.integer + 'max.num.names.before.forced.et.al := + } + if$ + CTLnames_show_etal + empty$ + { skip$ } + { CTLnames_show_etal + string.to.integer + 'num.names.shown.with.forced.et.al := + } + if$ + CTLuse_alt_spacing + empty$ + { skip$ } + { CTLuse_alt_spacing + yes.no.to.int + 'is.use.alt.interword.spacing := + } + if$ + CTLalt_stretch_factor + empty$ + { skip$ } + { CTLalt_stretch_factor + 'ALTinterwordstretchfactor := + "\renewcommand{\BIBentryALTinterwordstretchfactor}{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + } + if$ + CTLdash_repeated_names + empty$ + { skip$ } + { CTLdash_repeated_names + yes.no.to.int + 'is.dash.repeated.names := + } + if$ + CTLname_format_string + empty$ + { skip$ } + { CTLname_format_string + 'name.format.string := + } + if$ + CTLname_latex_cmd + empty$ + { skip$ } + { CTLname_latex_cmd + 'name.latex.cmd := + } + if$ + CTLname_url_prefix + missing$ + { skip$ } + { CTLname_url_prefix + 'name.url.prefix := + } + if$ + + + num.names.shown.with.forced.et.al max.num.names.before.forced.et.al > + { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$ + max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al := + } + { skip$ } + if$ +} + + +%%%%%%%%%%%%%%%%%%% +%% ENTRY ALIASES %% +%%%%%%%%%%%%%%%%%%% +FUNCTION {conference}{inproceedings} +FUNCTION {online}{electronic} +FUNCTION {internet}{electronic} +FUNCTION {webpage}{electronic} +FUNCTION {www}{electronic} +FUNCTION {default.type}{misc} + + + +%%%%%%%%%%%%%%%%%% +%% MAIN PROGRAM %% +%%%%%%%%%%%%%%%%%% + +READ + +EXECUTE {initialize.controls} +EXECUTE {initialize.status.constants} +EXECUTE {banner.message} + + + +% BEGIN sort code based on that of plain.bst + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + { s } + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + { skip$ } + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {author.organization.institution.sort} +{ author empty$ + { organization empty$ + { institution empty$ + { key empty$ + { "to sort, need author, organization, institution or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { "The " #4 institution chop.word sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + + +FUNCTION {presort} +{ type$ "ieeetranbstctl" = + { key empty$ + { "_" } + { key sortify } + if$ + } + { type$ "book" = + type$ "inbook" = + or + { author.editor.sort } + { type$ "proceedings" = + type$ "periodical" = + or + { editor.organization.sort } + { type$ "manual" = + type$ "electronic" = + type$ "misc" = + or or + { author.organization.sort } + { type$ "standard" = + { author.organization.institution.sort } + { author.sort } + if$ + } + if$ + } + if$ + } + if$ + " " + * + type$ "patent" = + { year empty$ + { yearfiled } + { year } + if$ + } + { year } + if$ + empty.field.to.null.string sortify + * + " " + * + title empty.field.to.null.string + sort.format.title + * + } + if$ + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +% END sort code based on that of plain.bst + + + +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 -r 000000000000 -r 8319d82cab07 bibtex/IEEEtranSA.bst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bibtex/IEEEtranSA.bst Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,2785 @@ +%% +%% IEEEtranSA.bst +%% BibTeX Bibliography Style file +%% Sorting alpha version of IEEEtran.bst +%% *** Not for normal IEEE work *** +%% Version 1.13 (2008/09/30) +%% +%% Copyright (c) 2003-2008 Michael Shell +%% +%% Original starting code base and algorithms obtained from the output of +%% Patrick W. Daly's makebst package as well as from prior versions of +%% IEEE BibTeX styles: +%% +%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988) +%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993) +%% +%% Added sorting code is from plain.bst, alpha code is from alpha.bst. +%% +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% and/or +%% http://www.ieee.org/ +%% +%% For use with BibTeX version 0.99a or later +%% +%% This is an alpha citation style. +%% +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%% +%% This work is distributed under the LaTeX Project Public License (LPPL) +%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, +%% distributed and modified. A copy of the LPPL, version 1.3, is included +%% in the base LaTeX documentation of all distributions of LaTeX released +%% 2003/12/01 or later. +%% Retain all contribution notices and credits. +%% ** Modified files should be clearly indicated as such, including ** +%% ** renaming them and changing author support contact information. ** +%% +%% File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib, +%% IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst, +%% IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf +%%************************************************************************* +% +% +% Changelog: +% +% 1.12 (2007/01/11) Initial release +% +% 1.13 (2008/09/30) +% 1. Fixed bug with edition number to ordinal conversion. Thanks to +% Michael Roland for reporting this and correcting the algorithm. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% These are the defaults for the user adjustable controls. The values used +% here can be overridden by the user via IEEEtranBSTCTL entry type. + +% NOTE: The recommended LaTeX command to invoke a control entry type is: +% +%\makeatletter +%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}} +%\def\@bstctlcite[#1]#2{\@bsphack +% \@for\@citeb:=#2\do{% +% \edef\@citeb{\expandafter\@firstofone\@citeb}% +% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}% +% \@esphack} +%\makeatother +% +% It is called at the start of the document, before the first \cite, like: +% \bstctlcite{IEEEexample:BSTcontrol} +% +% IEEEtran.cls V1.6 and later does provide this command. + + + +% #0 turns off the display of the number for articles. +% #1 enables +FUNCTION {default.is.use.number.for.article} { #1 } + + +% #0 turns off the display of the paper and type fields in @inproceedings. +% #1 enables +FUNCTION {default.is.use.paper} { #1 } + + +% #0 turns off the forced use of "et al." +% #1 enables +FUNCTION {default.is.forced.et.al} { #0 } + +% The maximum number of names that can be present beyond which an "et al." +% usage is forced. Be sure that num.names.shown.with.forced.et.al (below) +% is not greater than this value! +% Note: There are many instances of references in IEEE journals which have +% a very large number of authors as well as instances in which "et al." is +% used profusely. +FUNCTION {default.max.num.names.before.forced.et.al} { #10 } + +% The number of names that will be shown with a forced "et al.". +% Must be less than or equal to max.num.names.before.forced.et.al +FUNCTION {default.num.names.shown.with.forced.et.al} { #1 } + + +% #0 turns off the alternate interword spacing for entries with URLs. +% #1 enables +FUNCTION {default.is.use.alt.interword.spacing} { #1 } + +% If alternate interword spacing for entries with URLs is enabled, this is +% the interword spacing stretch factor that will be used. For example, the +% default "4" here means that the interword spacing in entries with URLs can +% stretch to four times normal. Does not have to be an integer. Note that +% the value specified here can be overridden by the user in their LaTeX +% code via a command such as: +% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to +% that via the IEEEtranBSTCTL entry type. +FUNCTION {default.ALTinterwordstretchfactor} { "4" } + + +% #0 turns off the "dashification" of repeated (i.e., identical to those +% of the previous entry) names. IEEE normally does this. +% #1 enables +FUNCTION {default.is.dash.repeated.names} { #1 } + + +% The default name format control string. +FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" } + + +% The default LaTeX font command for the names. +FUNCTION {default.name.latex.cmd}{ "" } + + +% The default URL prefix. +FUNCTION {default.name.url.prefix}{ "[Online]. Available:" } + + +% Other controls that cannot be accessed via IEEEtranBSTCTL entry type. + +% #0 turns off the terminal startup banner/completed message so as to +% operate more quietly. +% #1 enables +FUNCTION {is.print.banners.to.terminal} { #1 } + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% FILE VERSION AND BANNER %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION{bst.file.version} { "1.13" } +FUNCTION{bst.file.date} { "2008/09/30" } +FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" } + +FUNCTION {banner.message} +{ is.print.banners.to.terminal + { "-- IEEEtranSA.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$ + "** Sorting Alpha version - not for normal IEEE work." + top$ + } + { skip$ } + if$ +} + +FUNCTION {completed.message} +{ is.print.banners.to.terminal + { "" + top$ + "Done." + top$ + } + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING CONSTANTS %% +%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {bbl.and}{ "and" } +FUNCTION {bbl.etal}{ "et~al." } +FUNCTION {bbl.editors}{ "eds." } +FUNCTION {bbl.editor}{ "ed." } +FUNCTION {bbl.edition}{ "ed." } +FUNCTION {bbl.volume}{ "vol." } +FUNCTION {bbl.of}{ "of" } +FUNCTION {bbl.number}{ "no." } +FUNCTION {bbl.in}{ "in" } +FUNCTION {bbl.pages}{ "pp." } +FUNCTION {bbl.page}{ "p." } +FUNCTION {bbl.chapter}{ "ch." } +FUNCTION {bbl.paper}{ "paper" } +FUNCTION {bbl.part}{ "pt." } +FUNCTION {bbl.patent}{ "Patent" } +FUNCTION {bbl.patentUS}{ "U.S." } +FUNCTION {bbl.revision}{ "Rev." } +FUNCTION {bbl.series}{ "ser." } +FUNCTION {bbl.standard}{ "Std." } +FUNCTION {bbl.techrep}{ "Tech. Rep." } +FUNCTION {bbl.mthesis}{ "Master's thesis" } +FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" } +FUNCTION {bbl.st}{ "st" } +FUNCTION {bbl.nd}{ "nd" } +FUNCTION {bbl.rd}{ "rd" } +FUNCTION {bbl.th}{ "th" } + + +% This is the LaTeX spacer that is used when a larger than normal space +% is called for (such as just before the address:publisher). +FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " } + +% The LaTeX code for dashes that are used to represent repeated names. +% Note: Some older IEEE journals used something like +% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along +% the baseline. However, IEEE now uses a thinner, above baseline, +% six dash long sequence. +FUNCTION {repeated.name.dashes} { "------" } + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% PREDEFINED STRING MACROS %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +MACRO {jan} {"Jan."} +MACRO {feb} {"Feb."} +MACRO {mar} {"Mar."} +MACRO {apr} {"Apr."} +MACRO {may} {"May"} +MACRO {jun} {"Jun."} +MACRO {jul} {"Jul."} +MACRO {aug} {"Aug."} +MACRO {sep} {"Sep."} +MACRO {oct} {"Oct."} +MACRO {nov} {"Nov."} +MACRO {dec} {"Dec."} + + + +%%%%%%%%%%%%%%%%%% +%% ENTRY FIELDS %% +%%%%%%%%%%%%%%%%%% + +ENTRY + { address + assignee + author + booktitle + chapter + day + dayfiled + edition + editor + howpublished + institution + intype + journal + key + language + month + monthfiled + nationality + note + number + organization + pages + paper + publisher + school + series + revision + title + type + url + volume + year + yearfiled + CTLuse_article_number + CTLuse_paper + CTLuse_forced_etal + CTLmax_names_forced_etal + CTLnames_show_etal + CTLuse_alt_spacing + CTLalt_stretch_factor + CTLdash_repeated_names + CTLname_format_string + CTLname_latex_cmd + CTLname_url_prefix + } + {} + { label extra.label sort.label } + + + + +%%%%%%%%%%%%%%%%%%%%%%% +%% INTEGER VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%%% + +INTEGERS { prev.status.punct this.status.punct punct.std + punct.no punct.comma punct.period + prev.status.space this.status.space space.std + space.no space.normal space.large + prev.status.quote this.status.quote quote.std + quote.no quote.close + prev.status.nline this.status.nline nline.std + nline.no nline.newblock + status.cap cap.std + cap.no cap.yes} + +INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames } + +INTEGERS { is.use.number.for.article + is.use.paper + is.forced.et.al + max.num.names.before.forced.et.al + num.names.shown.with.forced.et.al + is.use.alt.interword.spacing + is.dash.repeated.names} + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%% + +STRINGS { bibinfo + longest.label + oldname + s + t + ALTinterwordstretchfactor + name.format.string + name.latex.cmd + name.url.prefix} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOW LEVEL FUNCTIONS %% +%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.controls} +{ default.is.use.number.for.article 'is.use.number.for.article := + default.is.use.paper 'is.use.paper := + default.is.forced.et.al 'is.forced.et.al := + default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al := + default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al := + default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing := + default.is.dash.repeated.names 'is.dash.repeated.names := + default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor := + default.name.format.string 'name.format.string := + default.name.latex.cmd 'name.latex.cmd := + default.name.url.prefix 'name.url.prefix := +} + + +% This IEEEtran.bst features a very powerful and flexible mechanism for +% controlling the capitalization, punctuation, spacing, quotation, and +% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need +% or use the newline/newblock feature, but it has been implemented for +% possible future use.) The output states of IEEEtran.bst consist of +% multiple independent attributes and, as such, can be thought of as being +% vectors, rather than the simple scalar values ("before.all", +% "mid.sentence", etc.) used in most other .bst files. +% +% The more flexible and complex design used here was motivated in part by +% IEEE's rather unusual bibliography style. For example, IEEE ends the +% previous field item with a period and large space prior to the publisher +% address; the @electronic entry types use periods as inter-item punctuation +% rather than the commas used by the other entry types; and URLs are never +% followed by periods even though they are the last item in the entry. +% Although it is possible to accommodate these features with the conventional +% output state system, the seemingly endless exceptions make for convoluted, +% unreliable and difficult to maintain code. +% +% IEEEtran.bst's output state system can be easily understood via a simple +% illustration of two most recently formatted entry fields (on the stack): +% +% CURRENT_ITEM +% "PREVIOUS_ITEM +% +% which, in this example, is to eventually appear in the bibliography as: +% +% "PREVIOUS_ITEM," CURRENT_ITEM +% +% It is the job of the output routine to take the previous item off of the +% stack (while leaving the current item at the top of the stack), apply its +% trailing punctuation (including closing quote marks) and spacing, and then +% to write the result to BibTeX's output buffer: +% +% "PREVIOUS_ITEM," +% +% Punctuation (and spacing) between items is often determined by both of the +% items rather than just the first one. The presence of quotation marks +% further complicates the situation because, in standard English, trailing +% punctuation marks are supposed to be contained within the quotes. +% +% IEEEtran.bst maintains two output state (aka "status") vectors which +% correspond to the previous and current (aka "this") items. Each vector +% consists of several independent attributes which track punctuation, +% spacing, quotation, and newlines. Capitalization status is handled by a +% separate scalar because the format routines, not the output routine, +% handle capitalization and, therefore, there is no need to maintain the +% capitalization attribute for both the "previous" and "this" items. +% +% When a format routine adds a new item, it copies the current output status +% vector to the previous output status vector and (usually) resets the +% current (this) output status vector to a "standard status" vector. Using a +% "standard status" vector in this way allows us to redefine what we mean by +% "standard status" at the start of each entry handler and reuse the same +% format routines under the various inter-item separation schemes. For +% example, the standard status vector for the @book entry type may use +% commas for item separators, while the @electronic type may use periods, +% yet both entry handlers exploit many of the exact same format routines. +% +% Because format routines have write access to the output status vector of +% the previous item, they can override the punctuation choices of the +% previous format routine! Therefore, it becomes trivial to implement rules +% such as "Always use a period and a large space before the publisher." By +% pushing the generation of the closing quote mark to the output routine, we +% avoid all the problems caused by having to close a quote before having all +% the information required to determine what the punctuation should be. +% +% The IEEEtran.bst output state system can easily be expanded if needed. +% For instance, it is easy to add a "space.tie" attribute value if the +% bibliography rules mandate that two items have to be joined with an +% unbreakable space. + +FUNCTION {initialize.status.constants} +{ #0 'punct.no := + #1 'punct.comma := + #2 'punct.period := + #0 'space.no := + #1 'space.normal := + #2 'space.large := + #0 'quote.no := + #1 'quote.close := + #0 'cap.no := + #1 'cap.yes := + #0 'nline.no := + #1 'nline.newblock := +} + +FUNCTION {std.status.using.comma} +{ punct.comma 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.no 'cap.std := +} + +FUNCTION {std.status.using.period} +{ punct.period 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.yes 'cap.std := +} + +FUNCTION {initialize.prev.this.status} +{ punct.no 'prev.status.punct := + space.no 'prev.status.space := + quote.no 'prev.status.quote := + nline.no 'prev.status.nline := + punct.no 'this.status.punct := + space.no 'this.status.space := + quote.no 'this.status.quote := + nline.no 'this.status.nline := + cap.yes 'status.cap := +} + +FUNCTION {this.status.std} +{ punct.std 'this.status.punct := + space.std 'this.status.space := + quote.std 'this.status.quote := + nline.std 'this.status.nline := +} + +FUNCTION {cap.status.std}{ cap.std 'status.cap := } + +FUNCTION {this.to.prev.status} +{ this.status.punct 'prev.status.punct := + this.status.space 'prev.status.space := + this.status.quote 'prev.status.quote := + this.status.nline 'prev.status.nline := +} + + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ { skip$ } + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + { skip$ } + if$ +} + + +% convert the strings "yes" or "no" to #1 or #0 respectively +FUNCTION {yes.no.to.int} +{ "l" change.case$ duplicate$ + "yes" = + { pop$ #1 } + { duplicate$ "no" = + { pop$ #0 } + { "unknown boolean " quote$ * swap$ * quote$ * + " in " * cite$ * warning$ + #0 + } + if$ + } + if$ +} + + +% pushes true if the single char string on the stack is in the +% range of "0" to "9" +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +% multiplies the integer on the stack by a factor of 10 +FUNCTION {bump.int.mag} +{ #0 'multiresult := + { duplicate$ #0 > } + { #1 - + multiresult #10 + + 'multiresult := + } + while$ +pop$ +multiresult +} + +% converts a single character string on the stack to an integer +FUNCTION {char.to.integer} +{ duplicate$ + is.num + { chr.to.int$ "0" chr.to.int$ - } + {"noninteger character " quote$ * swap$ * quote$ * + " in integer field of " * cite$ * warning$ + #0 + } + if$ +} + +% converts a string on the stack to an integer +FUNCTION {string.to.integer} +{ duplicate$ text.length$ 'namesleft := + #1 'nameptr := + #0 'numnames := + { nameptr namesleft > not } + { duplicate$ nameptr #1 substring$ + char.to.integer numnames bump.int.mag + + 'numnames := + nameptr #1 + + 'nameptr := + } + while$ +pop$ +numnames +} + + + + +% The output routines write out the *next* to the top (previous) item on the +% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains +% the output status for the top two items on the stack, these output +% routines have to consider the previous output status (which corresponds to +% the item that is being output). Full independent control of punctuation, +% closing quote marks, spacing, and newblock is provided. +% +% "output.nonnull" does not check for the presence of a previous empty +% item. +% +% "output" does check for the presence of a previous empty item and will +% remove an empty item rather than outputing it. +% +% "output.warn" is like "output", but will issue a warning if it detects +% an empty item. + +FUNCTION {output.nonnull} +{ swap$ + prev.status.punct punct.comma = + { "," * } + { skip$ } + if$ + prev.status.punct punct.period = + { add.period$ } + { skip$ } + if$ + prev.status.quote quote.close = + { "''" * } + { skip$ } + if$ + prev.status.space space.normal = + { " " * } + { skip$ } + if$ + prev.status.space space.large = + { large.space * } + { skip$ } + if$ + write$ + prev.status.nline nline.newblock = + { newline$ "\newblock " write$ } + { skip$ } + if$ +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.warn} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +% "fin.entry" is the output routine that handles the last item of the entry +% (which will be on the top of the stack when "fin.entry" is called). + +FUNCTION {fin.entry} +{ this.status.punct punct.no = + { skip$ } + { add.period$ } + if$ + this.status.quote quote.close = + { "''" * } + { skip$ } + if$ +write$ +newline$ +} + + +FUNCTION {is.last.char.not.punct} +{ duplicate$ + "}" * add.period$ + #-1 #1 substring$ "." = +} + +FUNCTION {is.multiple.pages} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ } + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {do.name.latex.cmd} +{ name.latex.cmd + empty$ + { skip$ } + { name.latex.cmd "{" * swap$ * "}" * } + if$ +} + +% IEEEtran.bst uses its own \BIBforeignlanguage command which directly +% invokes the TeX hyphenation patterns without the need of the Babel +% package. Babel does a lot more than switch hyphenation patterns and +% its loading can cause unintended effects in many class files (such as +% IEEEtran.cls). +FUNCTION {select.language} +{ duplicate$ empty$ 'pop$ + { language empty$ 'skip$ + { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * } + if$ + } + if$ +} + +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} + +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {space.word}{ " " swap$ * " " * } + + +% Field Conditioners, Converters, Checkers and External Interfaces + +FUNCTION {empty.field.to.null.string} +{ duplicate$ empty$ + { pop$ "" } + { skip$ } + if$ +} + +FUNCTION {either.or.check} +{ empty$ + { pop$ } + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {empty.entry.warn} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ url empty$ + and and and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + + +% The bibinfo system provides a way for the electronic parsing/acquisition +% of a bibliography's contents as is done by ReVTeX. For example, a field +% could be entered into the bibliography as: +% \bibinfo{volume}{2} +% Only the "2" would show up in the document, but the LaTeX \bibinfo command +% could do additional things with the information. IEEEtran.bst does provide +% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is +% currently not used as the bogus bibinfo functions defined here output the +% entry values directly without the \bibinfo wrapper. The bibinfo functions +% themselves (and the calls to them) are retained for possible future use. +% +% bibinfo.check avoids acting on missing fields while bibinfo.warn will +% issue a warning message if a missing field is detected. Prior to calling +% the bibinfo functions, the user should push the field value and then its +% name string, in that order. + +FUNCTION {bibinfo.check} +{ swap$ duplicate$ missing$ + { pop$ pop$ "" } + { duplicate$ empty$ + { swap$ pop$ } + { swap$ pop$ } + if$ + } + if$ +} + +FUNCTION {bibinfo.warn} +{ swap$ duplicate$ missing$ + { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" } + { duplicate$ empty$ + { swap$ "empty " swap$ * " in " * cite$ * warning$ } + { swap$ pop$ } + if$ + } + if$ +} + + +% IEEE separates large numbers with more than 4 digits into groups of +% three. IEEE uses a small space to separate these number groups. +% Typical applications include patent and page numbers. + +% number of consecutive digits required to trigger the group separation. +FUNCTION {large.number.trigger}{ #5 } + +% For numbers longer than the trigger, this is the blocksize of the groups. +% The blocksize must be less than the trigger threshold, and 2 * blocksize +% must be greater than the trigger threshold (can't do more than one +% separation on the initial trigger). +FUNCTION {large.number.blocksize}{ #3 } + +% What is actually inserted between the number groups. +FUNCTION {large.number.separator}{ "\," } + +% So as to save on integer variables by reusing existing ones, numnames +% holds the current number of consecutive digits read and nameptr holds +% the number that will trigger an inserted space. +FUNCTION {large.number.separate} +{ 't := + "" + #0 'numnames := + large.number.trigger 'nameptr := + { t empty$ not } + { t #-1 #1 substring$ is.num + { numnames #1 + 'numnames := } + { #0 'numnames := + large.number.trigger 'nameptr := + } + if$ + t #-1 #1 substring$ swap$ * + t #-2 global.max$ substring$ 't := + numnames nameptr = + { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$ + nameptr large.number.blocksize - #1 + global.max$ substring$ + large.number.separator swap$ * * + nameptr large.number.blocksize - 'numnames := + large.number.blocksize #1 + 'nameptr := + } + { skip$ } + if$ + } + while$ +} + +% Converts all single dashes "-" to double dashes "--". +FUNCTION {n.dashify} +{ large.number.separate + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + + +% This function detects entries with names that are identical to that of +% the previous entry and replaces the repeated names with dashes (if the +% "is.dash.repeated.names" user control is nonzero). +FUNCTION {name.or.dash} +{ 's := + oldname empty$ + { s 'oldname := s } + { s oldname = + { is.dash.repeated.names + { repeated.name.dashes } + { s 'oldname := s } + if$ + } + { s 'oldname := s } + if$ + } + if$ +} + +% Converts the number string on the top of the stack to +% "numerical ordinal form" (e.g., "7" to "7th"). There is +% no artificial limit to the upper bound of the numbers as the +% two least significant digits determine the ordinal form. +FUNCTION {num.to.ordinal} +{ duplicate$ #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ "1" = + { bbl.st * } + { duplicate$ #-1 #1 substring$ "2" = + { bbl.nd * } + { duplicate$ #-1 #1 substring$ "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +% If the string on the top of the stack begins with a number, +% (e.g., 11th) then replace the string with the leading number +% it contains. Otherwise retain the string as-is. s holds the +% extracted number, t holds the part of the string that remains +% to be scanned. +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +% Converts the word number string on the top of the stack to +% Arabic string form. Will be successful up to "tenth". +FUNCTION {word.to.num} +{ duplicate$ "l" change.case$ 's := + s "first" = + { pop$ "1" } + { skip$ } + if$ + s "second" = + { pop$ "2" } + { skip$ } + if$ + s "third" = + { pop$ "3" } + { skip$ } + if$ + s "fourth" = + { pop$ "4" } + { skip$ } + if$ + s "fifth" = + { pop$ "5" } + { skip$ } + if$ + s "sixth" = + { pop$ "6" } + { skip$ } + if$ + s "seventh" = + { pop$ "7" } + { skip$ } + if$ + s "eighth" = + { pop$ "8" } + { skip$ } + if$ + s "ninth" = + { pop$ "9" } + { skip$ } + if$ + s "tenth" = + { pop$ "10" } + { skip$ } + if$ +} + + +% Converts the string on the top of the stack to numerical +% ordinal (e.g., "11th") form. +FUNCTION {convert.edition} +{ duplicate$ empty$ 'skip$ + { duplicate$ #1 #1 substring$ is.num + { extract.num + num.to.ordinal + } + { word.to.num + duplicate$ #1 #1 substring$ is.num + { num.to.ordinal } + { "edition ordinal word " quote$ * edition * quote$ * + " may be too high (or improper) for conversion" * " in " * cite$ * warning$ + } + if$ + } + if$ + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LATEX BIBLIOGRAPHY CODE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {start.entry} +{ newline$ + "\bibitem[" write$ + label write$ + "]{" write$ + cite$ write$ + "}" write$ + newline$ + "" + initialize.prev.this.status +} + +% Here we write out all the LaTeX code that we will need. The most involved +% code sequences are those that control the alternate interword spacing and +% foreign language hyphenation patterns. The heavy use of \providecommand +% gives users a way to override the defaults. Special thanks to Javier Bezos, +% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all +% the other gurus on comp.text.tex for their help and advice on the topic of +% \selectlanguage, Babel and BibTeX. +FUNCTION {begin.bib} +{ "% Generated by IEEEtranSA.bst, version: " bst.file.version * " (" * bst.file.date * ")" * + write$ newline$ + "\providecommand{\etalchar}[1]{$^{#1}$}" + write$ newline$ + preamble$ empty$ 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ + "\providecommand{\url}[1]{#1}" + write$ newline$ + "\csname url@samestyle\endcsname" + write$ newline$ + "\providecommand{\newblock}{\relax}" + write$ newline$ + "\providecommand{\bibinfo}[2]{#2}" + write$ newline$ + "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}" + write$ newline$ + "\providecommand{\BIBentryALTinterwordstretchfactor}{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus " + write$ newline$ + "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}" + write$ newline$ + "\providecommand{\BIBforeignlanguage}[2]{{%" + write$ newline$ + "\expandafter\ifx\csname l@#1\endcsname\relax" + write$ newline$ + "\typeout{** WARNING: IEEEtranSA.bst: No hyphenation pattern has been}%" + write$ newline$ + "\typeout{** loaded for the language `#1'. Using the pattern for}%" + write$ newline$ + "\typeout{** the default language instead.}%" + write$ newline$ + "\else" + write$ newline$ + "\language=\csname l@#1\endcsname" + write$ newline$ + "\fi" + write$ newline$ + "#2}}" + write$ newline$ + "\providecommand{\BIBdecl}{\relax}" + write$ newline$ + "\BIBdecl" + write$ newline$ +} + +FUNCTION {end.bib} +{ newline$ "\end{thebibliography}" write$ newline$ } + +FUNCTION {if.url.alt.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + +FUNCTION {if.url.std.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%% +%% FORMAT HANDLERS %% +%%%%%%%%%%%%%%%%%%%%% + +%% Lower Level Formats (used by higher level formats) + +FUNCTION {format.address.org.or.pub.date} +{ 't := + "" + year empty$ + { "empty year in " cite$ * warning$ } + { skip$ } + if$ + address empty$ t empty$ and + year empty$ and month empty$ and + { skip$ } + { this.to.prev.status + this.status.std + cap.status.std + address "address" bibinfo.check * + t empty$ + { skip$ } + { punct.period 'prev.status.punct := + space.large 'prev.status.space := + address empty$ + { skip$ } + { ": " * } + if$ + t * + } + if$ + year empty$ month empty$ and + { skip$ } + { t empty$ address empty$ and + { skip$ } + { ", " * } + if$ + month empty$ + { year empty$ + { skip$ } + { year "year" bibinfo.check * } + if$ + } + { month "month" bibinfo.check * + year empty$ + { skip$ } + { " " * year "year" bibinfo.check * } + if$ + } + if$ + } + if$ + } + if$ +} + + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + this.to.prev.status + this.status.std + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + name.format.string + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { nameptr num.names.shown.with.forced.et.al #1 + = + numnames max.num.names.before.forced.et.al > + is.forced.et.al and and + { "others" 't := + #1 'namesleft := + } + { skip$ } + if$ + namesleft #1 > + { ", " * t do.name.latex.cmd * } + { s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { " " * bbl.etal emphasize * } + { numnames #2 > + { "," * } + { skip$ } + if$ + bbl.and + space.word * t do.name.latex.cmd * + } + if$ + } + if$ + } + { t do.name.latex.cmd } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + cap.status.std + } if$ +} + + + + +%% Higher Level Formats + +%% addresses/locations + +FUNCTION {format.address} +{ address duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% author/editor names + +FUNCTION {format.authors}{ author "author" format.names } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { ", " * + get.bbl.editor + capitalize + * + } + if$ +} + + + +%% date + +FUNCTION {format.date} +{ + month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { this.to.prev.status + this.status.std + cap.status.std + swap$ 'skip$ + { + swap$ + " " * swap$ + } + if$ + * + } + if$ +} + +FUNCTION {format.date.electronic} +{ month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ + { pop$ } + { "there's a month but no year in " cite$ * warning$ + pop$ ")" * "(" swap$ * + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ + } + { swap$ + { swap$ pop$ ")" * "(" swap$ * } + { "(" swap$ * ", " * swap$ * ")" * } + if$ + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ +} + + + +%% edition/title + +% Note: IEEE considers the edition to be closely associated with +% the title of a book. So, in IEEEtran.bst the edition is normally handled +% within the formatting of the title. The format.edition function is +% retained here for possible future use. +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + convert.edition + status.cap + { "t" } + { "l" } + if$ change.case$ + "edition" bibinfo.check + "~" * bbl.edition * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of a conference proceedings. +% Here we use the "intype" field to provide the user a way to +% override the word "in" (e.g., with things like "presented at") +% Use of intype stops the emphasis of the booktitle to indicate that +% we no longer mean the written conference proceedings, but the +% conference itself. +FUNCTION {format.in.booktitle} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + intype missing$ + { emphasize + bbl.in " " * + } + { intype " " * } + if$ + swap$ * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of collection. +% Here the "intype" field is not supported, but "edition" is. +FUNCTION {format.in.booktitle.edition} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + "l" change.case$ + * "~" * bbl.edition * + } + if$ + bbl.in " " * swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ 'skip$ + { quote.close 'this.status.quote := + is.last.char.not.punct + { punct.std 'this.status.punct := } + { punct.no 'this.status.punct := } + if$ + select.language + "``" swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title.electronic} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ + { skip$ } + { select.language } + if$ +} + +FUNCTION {format.book.title.edition} +{ title "title" bibinfo.check + duplicate$ empty$ + { "empty title in " cite$ * warning$ } + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + status.cap + { "t" } + { "l" } + if$ + change.case$ + * "~" * bbl.edition * + } + if$ + cap.status.std + } + if$ +} + +FUNCTION {format.book.title} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% journal + +FUNCTION {format.journal} +{ journal duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% how published + +FUNCTION {format.howpublished} +{ howpublished duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% institutions/organization/publishers/school + +FUNCTION {format.institution} +{ institution duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.organization} +{ organization duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.address.publisher.date} +{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date } + +FUNCTION {format.address.publisher.date.nowarn} +{ publisher "publisher" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.address.organization.date} +{ organization "organization" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.school} +{ school duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% volume/number/series/chapter/pages + +FUNCTION {format.volume} +{ volume empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + bbl.volume + status.cap + { capitalize } + { skip$ } + if$ + swap$ tie.or.space.prefix + "volume" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number} +{ number empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + status.cap + { bbl.number capitalize } + { bbl.number } + if$ + swap$ tie.or.space.prefix + "number" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number.if.use.for.article} +{ is.use.number.for.article + { format.number } + { "" } + if$ +} + +% IEEE does not seem to tie the series so closely with the volume +% and number as is done in other bibliography styles. Instead the +% series is treated somewhat like an extension of the title. +FUNCTION {format.series} +{ series empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.series " " * + series "series" bibinfo.check * + cap.status.std + } + if$ +} + + +FUNCTION {format.chapter} +{ chapter empty$ + { "" } + { this.to.prev.status + this.status.std + type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + cap.status.std + } + if$ +} + + +% The intended use of format.paper is for paper numbers of inproceedings. +% The paper type can be overridden via the type field. +% We allow the type to be displayed even if the paper number is absent +% for things like "postdeadline paper" +FUNCTION {format.paper} +{ is.use.paper + { paper empty$ + { type empty$ + { "" } + { this.to.prev.status + this.status.std + type "type" bibinfo.check + cap.status.std + } + if$ + } + { this.to.prev.status + this.status.std + type empty$ + { bbl.paper } + { type "type" bibinfo.check } + if$ + " " * paper + "paper" bibinfo.check + * + cap.status.std + } + if$ + } + { "" } + if$ +} + + +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + duplicate$ is.multiple.pages + { + bbl.pages swap$ + n.dashify + } + { + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + cap.status.std + } + if$ +} + + + +%% technical report number + +FUNCTION {format.tech.report.number} +{ number "number" bibinfo.check + this.to.prev.status + this.status.std + cap.status.std + type duplicate$ empty$ + { pop$ + bbl.techrep + } + { skip$ } + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ } + { tie.or.space.prefix * * } + if$ +} + + + +%% note + +FUNCTION {format.note} +{ note empty$ + { "" } + { this.to.prev.status + this.status.std + punct.period 'this.status.punct := + note #1 #1 substring$ + duplicate$ "{" = + { skip$ } + { status.cap + { "u" } + { "l" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + cap.yes 'status.cap := + } + if$ +} + + + +%% patent + +FUNCTION {format.patent.date} +{ this.to.prev.status + this.status.std + year empty$ + { monthfiled duplicate$ empty$ + { "monthfiled" bibinfo.check pop$ "" } + { "monthfiled" bibinfo.check } + if$ + dayfiled duplicate$ empty$ + { "dayfiled" bibinfo.check pop$ "" * } + { "dayfiled" bibinfo.check + monthfiled empty$ + { "dayfiled without a monthfiled in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + yearfiled empty$ + { "no year or yearfiled in " cite$ * warning$ } + { yearfiled "yearfiled" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + } + { month duplicate$ empty$ + { "month" bibinfo.check pop$ "" } + { "month" bibinfo.check } + if$ + day duplicate$ empty$ + { "day" bibinfo.check pop$ "" * } + { "day" bibinfo.check + month empty$ + { "day without a month in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + year "year" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + cap.status.std +} + +FUNCTION {format.patent.nationality.type.number} +{ this.to.prev.status + this.status.std + nationality duplicate$ empty$ + { "nationality" bibinfo.warn pop$ "" } + { "nationality" bibinfo.check + duplicate$ "l" change.case$ "united states" = + { pop$ bbl.patentUS } + { skip$ } + if$ + " " * + } + if$ + type empty$ + { bbl.patent "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.warn pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + + + +%% standard + +FUNCTION {format.organization.institution.standard.type.number} +{ this.to.prev.status + this.status.std + organization duplicate$ empty$ + { pop$ + institution duplicate$ empty$ + { "institution" bibinfo.warn } + { "institution" bibinfo.warn " " * } + if$ + } + { "organization" bibinfo.warn " " * } + if$ + type empty$ + { bbl.standard "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.check pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + +FUNCTION {format.revision} +{ revision empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.revision + revision tie.or.space.prefix + "revision" bibinfo.check + * * + cap.status.std + } + if$ +} + + +%% thesis + +FUNCTION {format.master.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.mthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + +FUNCTION {format.phd.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.phdthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + + + +%% URL + +FUNCTION {format.url} +{ url empty$ + { "" } + { this.to.prev.status + this.status.std + cap.yes 'status.cap := + name.url.prefix " " * + "\url{" * url * "}" * + punct.no 'this.status.punct := + punct.period 'prev.status.punct := + space.normal 'this.status.space := + space.normal 'prev.status.space := + quote.no 'this.status.quote := + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%% +%% ENTRY HANDLERS %% +%%%%%%%%%%%%%%%%%%%% + + +% Note: In many journals, IEEE (or the authors) tend not to show the number +% for articles, so the display of the number is controlled here by the +% switch "is.use.number.for.article" +FUNCTION {article} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.journal "journal" bibinfo.check "journal" output.warn + format.volume output + format.number.if.use.for.article output + format.pages output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {book} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + author empty$ + { skip$ } + { format.editors output } + if$ + format.address.publisher.date output + format.volume output + format.number output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {booklet} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {electronic} +{ std.status.using.period + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.date.electronic output + format.article.title.electronic output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {inbook} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + format.address.publisher.date output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {incollection} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle.edition "booktitle" output.warn + format.series output + format.editors output + format.address.publisher.date.nowarn output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {inproceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle "booktitle" output.warn + format.series output + format.editors output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.paper output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {manual} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title.edition "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {mastersthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.master.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {misc} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.pages output + format.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {patent} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.patent.nationality.type.number output + format.patent.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {periodical} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + format.organization "organization" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {phdthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.phd.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {proceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {standard} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization.institution.standard.type.number output + format.revision output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {techreport} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.institution "institution" bibinfo.warn output + format.address "address" bibinfo.check output + format.tech.report.number output.nonnull + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {unpublished} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.date output + format.note "note" output.warn + format.url output + fin.entry + if.url.std.interword.spacing +} + + +% The special entry type which provides the user interface to the +% BST controls +FUNCTION {IEEEtranBSTCTL} +{ is.print.banners.to.terminal + { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." * + top$ + } + { skip$ } + if$ + CTLuse_article_number + empty$ + { skip$ } + { CTLuse_article_number + yes.no.to.int + 'is.use.number.for.article := + } + if$ + CTLuse_paper + empty$ + { skip$ } + { CTLuse_paper + yes.no.to.int + 'is.use.paper := + } + if$ + CTLuse_forced_etal + empty$ + { skip$ } + { CTLuse_forced_etal + yes.no.to.int + 'is.forced.et.al := + } + if$ + CTLmax_names_forced_etal + empty$ + { skip$ } + { CTLmax_names_forced_etal + string.to.integer + 'max.num.names.before.forced.et.al := + } + if$ + CTLnames_show_etal + empty$ + { skip$ } + { CTLnames_show_etal + string.to.integer + 'num.names.shown.with.forced.et.al := + } + if$ + CTLuse_alt_spacing + empty$ + { skip$ } + { CTLuse_alt_spacing + yes.no.to.int + 'is.use.alt.interword.spacing := + } + if$ + CTLalt_stretch_factor + empty$ + { skip$ } + { CTLalt_stretch_factor + 'ALTinterwordstretchfactor := + "\renewcommand{\BIBentryALTinterwordstretchfactor}{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + } + if$ + CTLdash_repeated_names + empty$ + { skip$ } + { CTLdash_repeated_names + yes.no.to.int + 'is.dash.repeated.names := + } + if$ + CTLname_format_string + empty$ + { skip$ } + { CTLname_format_string + 'name.format.string := + } + if$ + CTLname_latex_cmd + empty$ + { skip$ } + { CTLname_latex_cmd + 'name.latex.cmd := + } + if$ + CTLname_url_prefix + missing$ + { skip$ } + { CTLname_url_prefix + 'name.url.prefix := + } + if$ + + + num.names.shown.with.forced.et.al max.num.names.before.forced.et.al > + { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$ + max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al := + } + { skip$ } + if$ +} + + +%%%%%%%%%%%%%%%%%%% +%% ENTRY ALIASES %% +%%%%%%%%%%%%%%%%%%% +FUNCTION {conference}{inproceedings} +FUNCTION {online}{electronic} +FUNCTION {internet}{electronic} +FUNCTION {webpage}{electronic} +FUNCTION {www}{electronic} +FUNCTION {default.type}{misc} + + + +%%%%%%%%%%%%%%%%%% +%% MAIN PROGRAM %% +%%%%%%%%%%%%%%%%%% + +READ + +EXECUTE {initialize.controls} +EXECUTE {initialize.status.constants} +EXECUTE {banner.message} + + + +% BEGIN sort code based on that of plain.bst + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + { s } + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + { skip$ } + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {author.organization.institution.sort} +{ author empty$ + { organization empty$ + { institution empty$ + { key empty$ + { "to sort, need author, organization, institution or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { "The " #4 institution chop.word sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + + +% END sort code based on that of plain.bst + + + +% alpha.bst code +STRINGS { last.sort.label next.extra } + +INTEGERS { last.extra.num } + +FUNCTION {format.lab.names} +{ 's := + s num.names$ 'numnames := + numnames #1 > + { numnames #4 > + { #3 'namesleft := } + { numnames 'namesleft := } + if$ + #1 'nameptr := + "" + { namesleft #0 > } + { nameptr numnames = + { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { "{\etalchar{+}}" * } + { s nameptr "{v{}}{l{}}" format.name$ * } + if$ + } + { s nameptr "{v{}}{l{}}" format.name$ * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + numnames #4 > + { "{\etalchar{+}}" * } + 'skip$ + if$ + } + { s #1 "{v{}}{l{}}" format.name$ + duplicate$ text.length$ #2 < + { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } + 'skip$ + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.institution.label} +{ author empty$ + { key empty$ + { organization empty$ + { institution empty$ + { cite$ #1 #3 substring$ } + { "The " #4 institution chop.word #3 text.prefix$ } + if$ + } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.label} +{ type$ "book" = + type$ "inbook" = + or + { author.editor.key.label } + { type$ "proceedings" = + type$ "periodical" = + or + { editor.key.organization.label } + { type$ "manual" = + type$ "electronic" = + type$ "misc" = + or or + { author.key.organization.label } + { type$ "standard" = + { author.key.organization.institution.label } + { author.key.label } + if$ + } + if$ + } + if$ + } + if$ + duplicate$ + type$ "patent" = + { year empty$ + { yearfiled } + { year } + if$ + } + { year } + if$ + empty.field.to.null.string purify$ #-1 #2 substring$ + * + 'label := + type$ "patent" = + { year empty$ + { yearfiled } + { year } + if$ + } + { year } + if$ + empty.field.to.null.string purify$ #-1 #4 substring$ + * + sortify 'sort.label := +} + + +FUNCTION {presort} +{ type$ "ieeetranbstctl" = + { key empty$ + { "_" } + { key sortify } + if$ + } + { calc.label + sort.label + " " + * + type$ "book" = + type$ "inbook" = + or + { author.editor.sort } + { type$ "proceedings" = + type$ "periodical" = + or + { editor.organization.sort } + { type$ "manual" = + type$ "electronic" = + type$ "misc" = + or or + { author.organization.sort } + { type$ "standard" = + { author.organization.institution.sort } + { author.sort } + if$ + } + if$ + } + if$ + } + if$ + * + " " + * + type$ "patent" = + { year empty$ + { yearfiled } + { year } + if$ + } + { year } + if$ + empty.field.to.null.string sortify + * + " " + * + title empty.field.to.null.string + sort.format.title + * + } + if$ + #1 entry.max$ substring$ + 'sort.key$ := +} + + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.sort.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'last.extra.num := +} + +FUNCTION {forward.pass} +{ type$ "ieeetranbstctl" = + { skip$ } + { last.sort.label sort.label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + sort.label 'last.sort.label := + } + if$ + } + if$ +} + +FUNCTION {reverse.pass} +{ type$ "ieeetranbstctl" = + { skip$ } + { next.extra "b" = + { "a" 'extra.label := } + { skip$ } + if$ + label extra.label * 'label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + { skip$ } + if$ + extra.label 'next.extra := + } + if$ +} + +% End alpha.bst code + + +ITERATE {presort} + +SORT + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} +REVERSE {reverse.pass} + +EXECUTE {begin.bib} +ITERATE {call.type$} +EXECUTE {end.bib} + +EXECUTE{completed.message} + + +%% That's all folks, mds. diff -r 000000000000 -r 8319d82cab07 bibtex/IEEEtranSN.bst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bibtex/IEEEtranSN.bst Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,2857 @@ +%% +%% IEEEtranSN.bst +%% BibTeX Bibliography Style file +%% Sorting Natbib version of IEEEtran.bst +%% *** Not for normal IEEE work *** +%% Version 1.13 (2008/09/30) +%% +%% Copyright (c) 2003-2008 Michael Shell +%% +%% Original starting code base and algorithms obtained from the output of +%% Patrick W. Daly's makebst package as well as from prior versions of +%% IEEE BibTeX styles: +%% +%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988) +%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993) +%% +%% Added sorting and natbib code is from Patrick W Daly's plainnat.bst +%% and Oren Patashnik's plain.bst. +%% +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% and/or +%% http://www.ieee.org/ +%% +%% For use with BibTeX version 0.99a or later +%% +%% This is a natbib compatible citation style. +%% +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%% +%% This work is distributed under the LaTeX Project Public License (LPPL) +%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, +%% distributed and modified. A copy of the LPPL, version 1.3, is included +%% in the base LaTeX documentation of all distributions of LaTeX released +%% 2003/12/01 or later. +%% Retain all contribution notices and credits. +%% ** Modified files should be clearly indicated as such, including ** +%% ** renaming them and changing author support contact information. ** +%% +%% File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib, +%% IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst, +%% IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf +%%************************************************************************* +% +% +% Changelog: +% +% 1.12 (2007/01/11) Initial release +% +% 1.13 (2008/09/30) +% 1. Fixed bug with edition number to ordinal conversion. Thanks to +% Michael Roland for reporting this and correcting the algorithm. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% These are the defaults for the user adjustable controls. The values used +% here can be overridden by the user via IEEEtranBSTCTL entry type. + +% NOTE: The recommended LaTeX command to invoke a control entry type is: +% +%\makeatletter +%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}} +%\def\@bstctlcite[#1]#2{\@bsphack +% \@for\@citeb:=#2\do{% +% \edef\@citeb{\expandafter\@firstofone\@citeb}% +% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}% +% \@esphack} +%\makeatother +% +% It is called at the start of the document, before the first \cite, like: +% \bstctlcite{IEEEexample:BSTcontrol} +% +% IEEEtran.cls V1.6 and later does provide this command. + + + +% #0 turns off the display of the number for articles. +% #1 enables +FUNCTION {default.is.use.number.for.article} { #1 } + + +% #0 turns off the display of the paper and type fields in @inproceedings. +% #1 enables +FUNCTION {default.is.use.paper} { #1 } + + +% #0 turns off the forced use of "et al." +% #1 enables +FUNCTION {default.is.forced.et.al} { #0 } + +% The maximum number of names that can be present beyond which an "et al." +% usage is forced. Be sure that num.names.shown.with.forced.et.al (below) +% is not greater than this value! +% Note: There are many instances of references in IEEE journals which have +% a very large number of authors as well as instances in which "et al." is +% used profusely. +FUNCTION {default.max.num.names.before.forced.et.al} { #10 } + +% The number of names that will be shown with a forced "et al.". +% Must be less than or equal to max.num.names.before.forced.et.al +FUNCTION {default.num.names.shown.with.forced.et.al} { #1 } + + +% #0 turns off the alternate interword spacing for entries with URLs. +% #1 enables +FUNCTION {default.is.use.alt.interword.spacing} { #1 } + +% If alternate interword spacing for entries with URLs is enabled, this is +% the interword spacing stretch factor that will be used. For example, the +% default "4" here means that the interword spacing in entries with URLs can +% stretch to four times normal. Does not have to be an integer. Note that +% the value specified here can be overridden by the user in their LaTeX +% code via a command such as: +% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to +% that via the IEEEtranBSTCTL entry type. +FUNCTION {default.ALTinterwordstretchfactor} { "4" } + + +% #0 turns off the "dashification" of repeated (i.e., identical to those +% of the previous entry) names. IEEE normally does this. +% #1 enables +FUNCTION {default.is.dash.repeated.names} { #1 } + + +% The default name format control string. +FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" } + + +% The default LaTeX font command for the names. +FUNCTION {default.name.latex.cmd}{ "" } + + +% The default URL prefix. +FUNCTION {default.name.url.prefix}{ "[Online]. Available:" } + + +% Other controls that cannot be accessed via IEEEtranBSTCTL entry type. + +% #0 turns off the terminal startup banner/completed message so as to +% operate more quietly. +% #1 enables +FUNCTION {is.print.banners.to.terminal} { #1 } + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% FILE VERSION AND BANNER %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION{bst.file.version} { "1.13" } +FUNCTION{bst.file.date} { "2008/09/30" } +FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" } + +FUNCTION {banner.message} +{ is.print.banners.to.terminal + { "-- IEEEtranSN.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$ + "** Sorting Natbib version - not for normal IEEE work." + top$ + } + { skip$ } + if$ +} + +FUNCTION {completed.message} +{ is.print.banners.to.terminal + { "" + top$ + "Done." + top$ + } + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING CONSTANTS %% +%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {bbl.and}{ "and" } +FUNCTION {bbl.etal}{ "et~al." } +FUNCTION {bbl.editors}{ "eds." } +FUNCTION {bbl.editor}{ "ed." } +FUNCTION {bbl.edition}{ "ed." } +FUNCTION {bbl.volume}{ "vol." } +FUNCTION {bbl.of}{ "of" } +FUNCTION {bbl.number}{ "no." } +FUNCTION {bbl.in}{ "in" } +FUNCTION {bbl.pages}{ "pp." } +FUNCTION {bbl.page}{ "p." } +FUNCTION {bbl.chapter}{ "ch." } +FUNCTION {bbl.paper}{ "paper" } +FUNCTION {bbl.part}{ "pt." } +FUNCTION {bbl.patent}{ "Patent" } +FUNCTION {bbl.patentUS}{ "U.S." } +FUNCTION {bbl.revision}{ "Rev." } +FUNCTION {bbl.series}{ "ser." } +FUNCTION {bbl.standard}{ "Std." } +FUNCTION {bbl.techrep}{ "Tech. Rep." } +FUNCTION {bbl.mthesis}{ "Master's thesis" } +FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" } +FUNCTION {bbl.st}{ "st" } +FUNCTION {bbl.nd}{ "nd" } +FUNCTION {bbl.rd}{ "rd" } +FUNCTION {bbl.th}{ "th" } + + +% This is the LaTeX spacer that is used when a larger than normal space +% is called for (such as just before the address:publisher). +FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " } + +% The LaTeX code for dashes that are used to represent repeated names. +% Note: Some older IEEE journals used something like +% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along +% the baseline. However, IEEE now uses a thinner, above baseline, +% six dash long sequence. +FUNCTION {repeated.name.dashes} { "------" } + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% PREDEFINED STRING MACROS %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +MACRO {jan} {"Jan."} +MACRO {feb} {"Feb."} +MACRO {mar} {"Mar."} +MACRO {apr} {"Apr."} +MACRO {may} {"May"} +MACRO {jun} {"Jun."} +MACRO {jul} {"Jul."} +MACRO {aug} {"Aug."} +MACRO {sep} {"Sep."} +MACRO {oct} {"Oct."} +MACRO {nov} {"Nov."} +MACRO {dec} {"Dec."} + + + +%%%%%%%%%%%%%%%%%% +%% ENTRY FIELDS %% +%%%%%%%%%%%%%%%%%% + +ENTRY + { address + assignee + author + booktitle + chapter + day + dayfiled + edition + editor + howpublished + institution + intype + journal + key + language + month + monthfiled + nationality + note + number + organization + pages + paper + publisher + school + series + revision + title + type + url + volume + year + yearfiled + CTLuse_article_number + CTLuse_paper + CTLuse_forced_etal + CTLmax_names_forced_etal + CTLnames_show_etal + CTLuse_alt_spacing + CTLalt_stretch_factor + CTLdash_repeated_names + CTLname_format_string + CTLname_latex_cmd + CTLname_url_prefix + } + {} + { label extra.label sort.label short.list} + + + + +%%%%%%%%%%%%%%%%%%%%%%% +%% INTEGER VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%%% + +INTEGERS { prev.status.punct this.status.punct punct.std + punct.no punct.comma punct.period + prev.status.space this.status.space space.std + space.no space.normal space.large + prev.status.quote this.status.quote quote.std + quote.no quote.close + prev.status.nline this.status.nline nline.std + nline.no nline.newblock + status.cap cap.std + cap.no cap.yes} + +INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames } + +INTEGERS { is.use.number.for.article + is.use.paper + is.forced.et.al + max.num.names.before.forced.et.al + num.names.shown.with.forced.et.al + is.use.alt.interword.spacing + is.dash.repeated.names} + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%% + +STRINGS { bibinfo + longest.label + oldname + s + t + ALTinterwordstretchfactor + name.format.string + name.latex.cmd + name.url.prefix} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOW LEVEL FUNCTIONS %% +%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.controls} +{ default.is.use.number.for.article 'is.use.number.for.article := + default.is.use.paper 'is.use.paper := + default.is.forced.et.al 'is.forced.et.al := + default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al := + default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al := + default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing := + default.is.dash.repeated.names 'is.dash.repeated.names := + default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor := + default.name.format.string 'name.format.string := + default.name.latex.cmd 'name.latex.cmd := + default.name.url.prefix 'name.url.prefix := +} + + +% This IEEEtran.bst features a very powerful and flexible mechanism for +% controlling the capitalization, punctuation, spacing, quotation, and +% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need +% or use the newline/newblock feature, but it has been implemented for +% possible future use.) The output states of IEEEtran.bst consist of +% multiple independent attributes and, as such, can be thought of as being +% vectors, rather than the simple scalar values ("before.all", +% "mid.sentence", etc.) used in most other .bst files. +% +% The more flexible and complex design used here was motivated in part by +% IEEE's rather unusual bibliography style. For example, IEEE ends the +% previous field item with a period and large space prior to the publisher +% address; the @electronic entry types use periods as inter-item punctuation +% rather than the commas used by the other entry types; and URLs are never +% followed by periods even though they are the last item in the entry. +% Although it is possible to accommodate these features with the conventional +% output state system, the seemingly endless exceptions make for convoluted, +% unreliable and difficult to maintain code. +% +% IEEEtran.bst's output state system can be easily understood via a simple +% illustration of two most recently formatted entry fields (on the stack): +% +% CURRENT_ITEM +% "PREVIOUS_ITEM +% +% which, in this example, is to eventually appear in the bibliography as: +% +% "PREVIOUS_ITEM," CURRENT_ITEM +% +% It is the job of the output routine to take the previous item off of the +% stack (while leaving the current item at the top of the stack), apply its +% trailing punctuation (including closing quote marks) and spacing, and then +% to write the result to BibTeX's output buffer: +% +% "PREVIOUS_ITEM," +% +% Punctuation (and spacing) between items is often determined by both of the +% items rather than just the first one. The presence of quotation marks +% further complicates the situation because, in standard English, trailing +% punctuation marks are supposed to be contained within the quotes. +% +% IEEEtran.bst maintains two output state (aka "status") vectors which +% correspond to the previous and current (aka "this") items. Each vector +% consists of several independent attributes which track punctuation, +% spacing, quotation, and newlines. Capitalization status is handled by a +% separate scalar because the format routines, not the output routine, +% handle capitalization and, therefore, there is no need to maintain the +% capitalization attribute for both the "previous" and "this" items. +% +% When a format routine adds a new item, it copies the current output status +% vector to the previous output status vector and (usually) resets the +% current (this) output status vector to a "standard status" vector. Using a +% "standard status" vector in this way allows us to redefine what we mean by +% "standard status" at the start of each entry handler and reuse the same +% format routines under the various inter-item separation schemes. For +% example, the standard status vector for the @book entry type may use +% commas for item separators, while the @electronic type may use periods, +% yet both entry handlers exploit many of the exact same format routines. +% +% Because format routines have write access to the output status vector of +% the previous item, they can override the punctuation choices of the +% previous format routine! Therefore, it becomes trivial to implement rules +% such as "Always use a period and a large space before the publisher." By +% pushing the generation of the closing quote mark to the output routine, we +% avoid all the problems caused by having to close a quote before having all +% the information required to determine what the punctuation should be. +% +% The IEEEtran.bst output state system can easily be expanded if needed. +% For instance, it is easy to add a "space.tie" attribute value if the +% bibliography rules mandate that two items have to be joined with an +% unbreakable space. + +FUNCTION {initialize.status.constants} +{ #0 'punct.no := + #1 'punct.comma := + #2 'punct.period := + #0 'space.no := + #1 'space.normal := + #2 'space.large := + #0 'quote.no := + #1 'quote.close := + #0 'cap.no := + #1 'cap.yes := + #0 'nline.no := + #1 'nline.newblock := +} + +FUNCTION {std.status.using.comma} +{ punct.comma 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.no 'cap.std := +} + +FUNCTION {std.status.using.period} +{ punct.period 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.yes 'cap.std := +} + +FUNCTION {initialize.prev.this.status} +{ punct.no 'prev.status.punct := + space.no 'prev.status.space := + quote.no 'prev.status.quote := + nline.no 'prev.status.nline := + punct.no 'this.status.punct := + space.no 'this.status.space := + quote.no 'this.status.quote := + nline.no 'this.status.nline := + cap.yes 'status.cap := +} + +FUNCTION {this.status.std} +{ punct.std 'this.status.punct := + space.std 'this.status.space := + quote.std 'this.status.quote := + nline.std 'this.status.nline := +} + +FUNCTION {cap.status.std}{ cap.std 'status.cap := } + +FUNCTION {this.to.prev.status} +{ this.status.punct 'prev.status.punct := + this.status.space 'prev.status.space := + this.status.quote 'prev.status.quote := + this.status.nline 'prev.status.nline := +} + + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ { skip$ } + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + { skip$ } + if$ +} + + +% convert the strings "yes" or "no" to #1 or #0 respectively +FUNCTION {yes.no.to.int} +{ "l" change.case$ duplicate$ + "yes" = + { pop$ #1 } + { duplicate$ "no" = + { pop$ #0 } + { "unknown boolean " quote$ * swap$ * quote$ * + " in " * cite$ * warning$ + #0 + } + if$ + } + if$ +} + + +% pushes true if the single char string on the stack is in the +% range of "0" to "9" +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +% multiplies the integer on the stack by a factor of 10 +FUNCTION {bump.int.mag} +{ #0 'multiresult := + { duplicate$ #0 > } + { #1 - + multiresult #10 + + 'multiresult := + } + while$ +pop$ +multiresult +} + +% converts a single character string on the stack to an integer +FUNCTION {char.to.integer} +{ duplicate$ + is.num + { chr.to.int$ "0" chr.to.int$ - } + {"noninteger character " quote$ * swap$ * quote$ * + " in integer field of " * cite$ * warning$ + #0 + } + if$ +} + +% converts a string on the stack to an integer +FUNCTION {string.to.integer} +{ duplicate$ text.length$ 'namesleft := + #1 'nameptr := + #0 'numnames := + { nameptr namesleft > not } + { duplicate$ nameptr #1 substring$ + char.to.integer numnames bump.int.mag + + 'numnames := + nameptr #1 + + 'nameptr := + } + while$ +pop$ +numnames +} + + + + +% The output routines write out the *next* to the top (previous) item on the +% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains +% the output status for the top two items on the stack, these output +% routines have to consider the previous output status (which corresponds to +% the item that is being output). Full independent control of punctuation, +% closing quote marks, spacing, and newblock is provided. +% +% "output.nonnull" does not check for the presence of a previous empty +% item. +% +% "output" does check for the presence of a previous empty item and will +% remove an empty item rather than outputing it. +% +% "output.warn" is like "output", but will issue a warning if it detects +% an empty item. + +FUNCTION {output.nonnull} +{ swap$ + prev.status.punct punct.comma = + { "," * } + { skip$ } + if$ + prev.status.punct punct.period = + { add.period$ } + { skip$ } + if$ + prev.status.quote quote.close = + { "''" * } + { skip$ } + if$ + prev.status.space space.normal = + { " " * } + { skip$ } + if$ + prev.status.space space.large = + { large.space * } + { skip$ } + if$ + write$ + prev.status.nline nline.newblock = + { newline$ "\newblock " write$ } + { skip$ } + if$ +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.warn} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +% "fin.entry" is the output routine that handles the last item of the entry +% (which will be on the top of the stack when "fin.entry" is called). + +FUNCTION {fin.entry} +{ this.status.punct punct.no = + { skip$ } + { add.period$ } + if$ + this.status.quote quote.close = + { "''" * } + { skip$ } + if$ +write$ +newline$ +} + + +FUNCTION {is.last.char.not.punct} +{ duplicate$ + "}" * add.period$ + #-1 #1 substring$ "." = +} + +FUNCTION {is.multiple.pages} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ } + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {do.name.latex.cmd} +{ name.latex.cmd + empty$ + { skip$ } + { name.latex.cmd "{" * swap$ * "}" * } + if$ +} + +% IEEEtran.bst uses its own \BIBforeignlanguage command which directly +% invokes the TeX hyphenation patterns without the need of the Babel +% package. Babel does a lot more than switch hyphenation patterns and +% its loading can cause unintended effects in many class files (such as +% IEEEtran.cls). +FUNCTION {select.language} +{ duplicate$ empty$ 'pop$ + { language empty$ 'skip$ + { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * } + if$ + } + if$ +} + +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} + +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {space.word}{ " " swap$ * " " * } + + +% Field Conditioners, Converters, Checkers and External Interfaces + +FUNCTION {empty.field.to.null.string} +{ duplicate$ empty$ + { pop$ "" } + { skip$ } + if$ +} + +FUNCTION {either.or.check} +{ empty$ + { pop$ } + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {empty.entry.warn} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ url empty$ + and and and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + + +% The bibinfo system provides a way for the electronic parsing/acquisition +% of a bibliography's contents as is done by ReVTeX. For example, a field +% could be entered into the bibliography as: +% \bibinfo{volume}{2} +% Only the "2" would show up in the document, but the LaTeX \bibinfo command +% could do additional things with the information. IEEEtran.bst does provide +% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is +% currently not used as the bogus bibinfo functions defined here output the +% entry values directly without the \bibinfo wrapper. The bibinfo functions +% themselves (and the calls to them) are retained for possible future use. +% +% bibinfo.check avoids acting on missing fields while bibinfo.warn will +% issue a warning message if a missing field is detected. Prior to calling +% the bibinfo functions, the user should push the field value and then its +% name string, in that order. + +FUNCTION {bibinfo.check} +{ swap$ duplicate$ missing$ + { pop$ pop$ "" } + { duplicate$ empty$ + { swap$ pop$ } + { swap$ pop$ } + if$ + } + if$ +} + +FUNCTION {bibinfo.warn} +{ swap$ duplicate$ missing$ + { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" } + { duplicate$ empty$ + { swap$ "empty " swap$ * " in " * cite$ * warning$ } + { swap$ pop$ } + if$ + } + if$ +} + + +% IEEE separates large numbers with more than 4 digits into groups of +% three. IEEE uses a small space to separate these number groups. +% Typical applications include patent and page numbers. + +% number of consecutive digits required to trigger the group separation. +FUNCTION {large.number.trigger}{ #5 } + +% For numbers longer than the trigger, this is the blocksize of the groups. +% The blocksize must be less than the trigger threshold, and 2 * blocksize +% must be greater than the trigger threshold (can't do more than one +% separation on the initial trigger). +FUNCTION {large.number.blocksize}{ #3 } + +% What is actually inserted between the number groups. +FUNCTION {large.number.separator}{ "\," } + +% So as to save on integer variables by reusing existing ones, numnames +% holds the current number of consecutive digits read and nameptr holds +% the number that will trigger an inserted space. +FUNCTION {large.number.separate} +{ 't := + "" + #0 'numnames := + large.number.trigger 'nameptr := + { t empty$ not } + { t #-1 #1 substring$ is.num + { numnames #1 + 'numnames := } + { #0 'numnames := + large.number.trigger 'nameptr := + } + if$ + t #-1 #1 substring$ swap$ * + t #-2 global.max$ substring$ 't := + numnames nameptr = + { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$ + nameptr large.number.blocksize - #1 + global.max$ substring$ + large.number.separator swap$ * * + nameptr large.number.blocksize - 'numnames := + large.number.blocksize #1 + 'nameptr := + } + { skip$ } + if$ + } + while$ +} + +% Converts all single dashes "-" to double dashes "--". +FUNCTION {n.dashify} +{ large.number.separate + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + + +% This function detects entries with names that are identical to that of +% the previous entry and replaces the repeated names with dashes (if the +% "is.dash.repeated.names" user control is nonzero). +FUNCTION {name.or.dash} +{ 's := + oldname empty$ + { s 'oldname := s } + { s oldname = + { is.dash.repeated.names + { repeated.name.dashes } + { s 'oldname := s } + if$ + } + { s 'oldname := s } + if$ + } + if$ +} + +% Converts the number string on the top of the stack to +% "numerical ordinal form" (e.g., "7" to "7th"). There is +% no artificial limit to the upper bound of the numbers as the +% two least significant digits determine the ordinal form. +FUNCTION {num.to.ordinal} +{ duplicate$ #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ "1" = + { bbl.st * } + { duplicate$ #-1 #1 substring$ "2" = + { bbl.nd * } + { duplicate$ #-1 #1 substring$ "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +% If the string on the top of the stack begins with a number, +% (e.g., 11th) then replace the string with the leading number +% it contains. Otherwise retain the string as-is. s holds the +% extracted number, t holds the part of the string that remains +% to be scanned. +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +% Converts the word number string on the top of the stack to +% Arabic string form. Will be successful up to "tenth". +FUNCTION {word.to.num} +{ duplicate$ "l" change.case$ 's := + s "first" = + { pop$ "1" } + { skip$ } + if$ + s "second" = + { pop$ "2" } + { skip$ } + if$ + s "third" = + { pop$ "3" } + { skip$ } + if$ + s "fourth" = + { pop$ "4" } + { skip$ } + if$ + s "fifth" = + { pop$ "5" } + { skip$ } + if$ + s "sixth" = + { pop$ "6" } + { skip$ } + if$ + s "seventh" = + { pop$ "7" } + { skip$ } + if$ + s "eighth" = + { pop$ "8" } + { skip$ } + if$ + s "ninth" = + { pop$ "9" } + { skip$ } + if$ + s "tenth" = + { pop$ "10" } + { skip$ } + if$ +} + + +% Converts the string on the top of the stack to numerical +% ordinal (e.g., "11th") form. +FUNCTION {convert.edition} +{ duplicate$ empty$ 'skip$ + { duplicate$ #1 #1 substring$ is.num + { extract.num + num.to.ordinal + } + { word.to.num + duplicate$ #1 #1 substring$ is.num + { num.to.ordinal } + { "edition ordinal word " quote$ * edition * quote$ * + " may be too high (or improper) for conversion" * " in " * cite$ * warning$ + } + if$ + } + if$ + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LATEX BIBLIOGRAPHY CODE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% from plainnat.bst +FUNCTION {format.full.names} +{'s := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}" format.name$ 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.full} +{ author empty$ + { editor empty$ + { "" } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.full} +{ author empty$ + { "" } + { author format.full.names } + if$ +} + +FUNCTION {editor.full} +{ editor empty$ + { "" } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + { author.editor.full } + { type$ "proceedings" = + type$ "periodical" = + or + { editor.full } + { author.full } + if$ + } + if$ +} +% END from plainnat.bst + +FUNCTION {start.entry} +{ newline$ + "\bibitem[" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + initialize.prev.this.status +} + +% Here we write out all the LaTeX code that we will need. The most involved +% code sequences are those that control the alternate interword spacing and +% foreign language hyphenation patterns. The heavy use of \providecommand +% gives users a way to override the defaults. Special thanks to Javier Bezos, +% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all +% the other gurus on comp.text.tex for their help and advice on the topic of +% \selectlanguage, Babel and BibTeX. +FUNCTION {begin.bib} +{ "% Generated by IEEEtranSN.bst, version: " bst.file.version * " (" * bst.file.date * ")" * + write$ newline$ + preamble$ empty$ 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + "\providecommand{\natexlab}[1]{#1}" + write$ newline$ + "\providecommand{\url}[1]{#1}" + write$ newline$ + "\csname url@samestyle\endcsname" + write$ newline$ + "\providecommand{\newblock}{\relax}" + write$ newline$ + "\providecommand{\bibinfo}[2]{#2}" + write$ newline$ + "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}" + write$ newline$ + "\providecommand{\BIBentryALTinterwordstretchfactor}{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus " + write$ newline$ + "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}" + write$ newline$ + "\providecommand{\BIBforeignlanguage}[2]{{%" + write$ newline$ + "\expandafter\ifx\csname l@#1\endcsname\relax" + write$ newline$ + "\typeout{** WARNING: IEEEtranSN.bst: No hyphenation pattern has been}%" + write$ newline$ + "\typeout{** loaded for the language `#1'. Using the pattern for}%" + write$ newline$ + "\typeout{** the default language instead.}%" + write$ newline$ + "\else" + write$ newline$ + "\language=\csname l@#1\endcsname" + write$ newline$ + "\fi" + write$ newline$ + "#2}}" + write$ newline$ + "\providecommand{\BIBdecl}{\relax}" + write$ newline$ + "\BIBdecl" + write$ newline$ +} + +FUNCTION {end.bib} +{ newline$ "\end{thebibliography}" write$ newline$ } + +FUNCTION {if.url.alt.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + +FUNCTION {if.url.std.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%% +%% FORMAT HANDLERS %% +%%%%%%%%%%%%%%%%%%%%% + +%% Lower Level Formats (used by higher level formats) + +FUNCTION {format.address.org.or.pub.date} +{ 't := + "" + year empty$ + { "empty year in " cite$ * warning$ } + { skip$ } + if$ + address empty$ t empty$ and + year empty$ and month empty$ and + { skip$ } + { this.to.prev.status + this.status.std + cap.status.std + address "address" bibinfo.check * + t empty$ + { skip$ } + { punct.period 'prev.status.punct := + space.large 'prev.status.space := + address empty$ + { skip$ } + { ": " * } + if$ + t * + } + if$ + year empty$ month empty$ and + { skip$ } + { t empty$ address empty$ and + { skip$ } + { ", " * } + if$ + month empty$ + { year empty$ + { skip$ } + { year "year" bibinfo.check * } + if$ + } + { month "month" bibinfo.check * + year empty$ + { skip$ } + { " " * year "year" bibinfo.check * } + if$ + } + if$ + } + if$ + } + if$ +} + + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + this.to.prev.status + this.status.std + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + name.format.string + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { nameptr num.names.shown.with.forced.et.al #1 + = + numnames max.num.names.before.forced.et.al > + is.forced.et.al and and + { "others" 't := + #1 'namesleft := + } + { skip$ } + if$ + namesleft #1 > + { ", " * t do.name.latex.cmd * } + { s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { " " * bbl.etal emphasize * } + { numnames #2 > + { "," * } + { skip$ } + if$ + bbl.and + space.word * t do.name.latex.cmd * + } + if$ + } + if$ + } + { t do.name.latex.cmd } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + cap.status.std + } if$ +} + + + + +%% Higher Level Formats + +%% addresses/locations + +FUNCTION {format.address} +{ address duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% author/editor names + +FUNCTION {format.authors}{ author "author" format.names } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { ", " * + get.bbl.editor + capitalize + * + } + if$ +} + + + +%% date + +FUNCTION {format.date} +{ + month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { this.to.prev.status + this.status.std + cap.status.std + swap$ 'skip$ + { + swap$ + " " * swap$ + } + if$ + * + } + if$ +} + +FUNCTION {format.date.electronic} +{ month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ + { pop$ } + { "there's a month but no year in " cite$ * warning$ + pop$ ")" * "(" swap$ * + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ + } + { swap$ + { swap$ pop$ ")" * "(" swap$ * } + { "(" swap$ * ", " * swap$ * ")" * } + if$ + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ +} + + + +%% edition/title + +% Note: IEEE considers the edition to be closely associated with +% the title of a book. So, in IEEEtran.bst the edition is normally handled +% within the formatting of the title. The format.edition function is +% retained here for possible future use. +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + convert.edition + status.cap + { "t" } + { "l" } + if$ change.case$ + "edition" bibinfo.check + "~" * bbl.edition * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of a conference proceedings. +% Here we use the "intype" field to provide the user a way to +% override the word "in" (e.g., with things like "presented at") +% Use of intype stops the emphasis of the booktitle to indicate that +% we no longer mean the written conference proceedings, but the +% conference itself. +FUNCTION {format.in.booktitle} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + intype missing$ + { emphasize + bbl.in " " * + } + { intype " " * } + if$ + swap$ * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of collection. +% Here the "intype" field is not supported, but "edition" is. +FUNCTION {format.in.booktitle.edition} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + "l" change.case$ + * "~" * bbl.edition * + } + if$ + bbl.in " " * swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ 'skip$ + { quote.close 'this.status.quote := + is.last.char.not.punct + { punct.std 'this.status.punct := } + { punct.no 'this.status.punct := } + if$ + select.language + "``" swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title.electronic} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ + { skip$ } + { select.language } + if$ +} + +FUNCTION {format.book.title.edition} +{ title "title" bibinfo.check + duplicate$ empty$ + { "empty title in " cite$ * warning$ } + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + status.cap + { "t" } + { "l" } + if$ + change.case$ + * "~" * bbl.edition * + } + if$ + cap.status.std + } + if$ +} + +FUNCTION {format.book.title} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% journal + +FUNCTION {format.journal} +{ journal duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% how published + +FUNCTION {format.howpublished} +{ howpublished duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% institutions/organization/publishers/school + +FUNCTION {format.institution} +{ institution duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.organization} +{ organization duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.address.publisher.date} +{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date } + +FUNCTION {format.address.publisher.date.nowarn} +{ publisher "publisher" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.address.organization.date} +{ organization "organization" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.school} +{ school duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% volume/number/series/chapter/pages + +FUNCTION {format.volume} +{ volume empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + bbl.volume + status.cap + { capitalize } + { skip$ } + if$ + swap$ tie.or.space.prefix + "volume" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number} +{ number empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + status.cap + { bbl.number capitalize } + { bbl.number } + if$ + swap$ tie.or.space.prefix + "number" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number.if.use.for.article} +{ is.use.number.for.article + { format.number } + { "" } + if$ +} + +% IEEE does not seem to tie the series so closely with the volume +% and number as is done in other bibliography styles. Instead the +% series is treated somewhat like an extension of the title. +FUNCTION {format.series} +{ series empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.series " " * + series "series" bibinfo.check * + cap.status.std + } + if$ +} + + +FUNCTION {format.chapter} +{ chapter empty$ + { "" } + { this.to.prev.status + this.status.std + type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + cap.status.std + } + if$ +} + + +% The intended use of format.paper is for paper numbers of inproceedings. +% The paper type can be overridden via the type field. +% We allow the type to be displayed even if the paper number is absent +% for things like "postdeadline paper" +FUNCTION {format.paper} +{ is.use.paper + { paper empty$ + { type empty$ + { "" } + { this.to.prev.status + this.status.std + type "type" bibinfo.check + cap.status.std + } + if$ + } + { this.to.prev.status + this.status.std + type empty$ + { bbl.paper } + { type "type" bibinfo.check } + if$ + " " * paper + "paper" bibinfo.check + * + cap.status.std + } + if$ + } + { "" } + if$ +} + + +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + duplicate$ is.multiple.pages + { + bbl.pages swap$ + n.dashify + } + { + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + cap.status.std + } + if$ +} + + + +%% technical report number + +FUNCTION {format.tech.report.number} +{ number "number" bibinfo.check + this.to.prev.status + this.status.std + cap.status.std + type duplicate$ empty$ + { pop$ + bbl.techrep + } + { skip$ } + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ } + { tie.or.space.prefix * * } + if$ +} + + + +%% note + +FUNCTION {format.note} +{ note empty$ + { "" } + { this.to.prev.status + this.status.std + punct.period 'this.status.punct := + note #1 #1 substring$ + duplicate$ "{" = + { skip$ } + { status.cap + { "u" } + { "l" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + cap.yes 'status.cap := + } + if$ +} + + + +%% patent + +FUNCTION {format.patent.date} +{ this.to.prev.status + this.status.std + year empty$ + { monthfiled duplicate$ empty$ + { "monthfiled" bibinfo.check pop$ "" } + { "monthfiled" bibinfo.check } + if$ + dayfiled duplicate$ empty$ + { "dayfiled" bibinfo.check pop$ "" * } + { "dayfiled" bibinfo.check + monthfiled empty$ + { "dayfiled without a monthfiled in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + yearfiled empty$ + { "no year or yearfiled in " cite$ * warning$ } + { yearfiled "yearfiled" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + } + { month duplicate$ empty$ + { "month" bibinfo.check pop$ "" } + { "month" bibinfo.check } + if$ + day duplicate$ empty$ + { "day" bibinfo.check pop$ "" * } + { "day" bibinfo.check + month empty$ + { "day without a month in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + year "year" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + cap.status.std +} + +FUNCTION {format.patent.nationality.type.number} +{ this.to.prev.status + this.status.std + nationality duplicate$ empty$ + { "nationality" bibinfo.warn pop$ "" } + { "nationality" bibinfo.check + duplicate$ "l" change.case$ "united states" = + { pop$ bbl.patentUS } + { skip$ } + if$ + " " * + } + if$ + type empty$ + { bbl.patent "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.warn pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + + + +%% standard + +FUNCTION {format.organization.institution.standard.type.number} +{ this.to.prev.status + this.status.std + organization duplicate$ empty$ + { pop$ + institution duplicate$ empty$ + { "institution" bibinfo.warn } + { "institution" bibinfo.warn " " * } + if$ + } + { "organization" bibinfo.warn " " * } + if$ + type empty$ + { bbl.standard "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.check pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + +FUNCTION {format.revision} +{ revision empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.revision + revision tie.or.space.prefix + "revision" bibinfo.check + * * + cap.status.std + } + if$ +} + + +%% thesis + +FUNCTION {format.master.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.mthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + +FUNCTION {format.phd.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.phdthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + + + +%% URL + +FUNCTION {format.url} +{ url empty$ + { "" } + { this.to.prev.status + this.status.std + cap.yes 'status.cap := + name.url.prefix " " * + "\url{" * url * "}" * + punct.no 'this.status.punct := + punct.period 'prev.status.punct := + space.normal 'this.status.space := + space.normal 'prev.status.space := + quote.no 'this.status.quote := + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%% +%% ENTRY HANDLERS %% +%%%%%%%%%%%%%%%%%%%% + + +% Note: In many journals, IEEE (or the authors) tend not to show the number +% for articles, so the display of the number is controlled here by the +% switch "is.use.number.for.article" +FUNCTION {article} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.journal "journal" bibinfo.check "journal" output.warn + format.volume output + format.number.if.use.for.article output + format.pages output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {book} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + author empty$ + { skip$ } + { format.editors output } + if$ + format.address.publisher.date output + format.volume output + format.number output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {booklet} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {electronic} +{ std.status.using.period + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.date.electronic output + format.article.title.electronic output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {inbook} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + format.address.publisher.date output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {incollection} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle.edition "booktitle" output.warn + format.series output + format.editors output + format.address.publisher.date.nowarn output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {inproceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle "booktitle" output.warn + format.series output + format.editors output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.paper output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {manual} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title.edition "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {mastersthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.master.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {misc} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.pages output + format.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {patent} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.patent.nationality.type.number output + format.patent.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {periodical} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + format.organization "organization" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {phdthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.phd.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {proceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {standard} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization.institution.standard.type.number output + format.revision output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {techreport} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.institution "institution" bibinfo.warn output + format.address "address" bibinfo.check output + format.tech.report.number output.nonnull + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {unpublished} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.date output + format.note "note" output.warn + format.url output + fin.entry + if.url.std.interword.spacing +} + + +% The special entry type which provides the user interface to the +% BST controls +FUNCTION {IEEEtranBSTCTL} +{ is.print.banners.to.terminal + { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." * + top$ + } + { skip$ } + if$ + CTLuse_article_number + empty$ + { skip$ } + { CTLuse_article_number + yes.no.to.int + 'is.use.number.for.article := + } + if$ + CTLuse_paper + empty$ + { skip$ } + { CTLuse_paper + yes.no.to.int + 'is.use.paper := + } + if$ + CTLuse_forced_etal + empty$ + { skip$ } + { CTLuse_forced_etal + yes.no.to.int + 'is.forced.et.al := + } + if$ + CTLmax_names_forced_etal + empty$ + { skip$ } + { CTLmax_names_forced_etal + string.to.integer + 'max.num.names.before.forced.et.al := + } + if$ + CTLnames_show_etal + empty$ + { skip$ } + { CTLnames_show_etal + string.to.integer + 'num.names.shown.with.forced.et.al := + } + if$ + CTLuse_alt_spacing + empty$ + { skip$ } + { CTLuse_alt_spacing + yes.no.to.int + 'is.use.alt.interword.spacing := + } + if$ + CTLalt_stretch_factor + empty$ + { skip$ } + { CTLalt_stretch_factor + 'ALTinterwordstretchfactor := + "\renewcommand{\BIBentryALTinterwordstretchfactor}{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + } + if$ + CTLdash_repeated_names + empty$ + { skip$ } + { CTLdash_repeated_names + yes.no.to.int + 'is.dash.repeated.names := + } + if$ + CTLname_format_string + empty$ + { skip$ } + { CTLname_format_string + 'name.format.string := + } + if$ + CTLname_latex_cmd + empty$ + { skip$ } + { CTLname_latex_cmd + 'name.latex.cmd := + } + if$ + CTLname_url_prefix + missing$ + { skip$ } + { CTLname_url_prefix + 'name.url.prefix := + } + if$ + + + num.names.shown.with.forced.et.al max.num.names.before.forced.et.al > + { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$ + max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al := + } + { skip$ } + if$ +} + + +%%%%%%%%%%%%%%%%%%% +%% ENTRY ALIASES %% +%%%%%%%%%%%%%%%%%%% +FUNCTION {conference}{inproceedings} +FUNCTION {online}{electronic} +FUNCTION {internet}{electronic} +FUNCTION {webpage}{electronic} +FUNCTION {www}{electronic} +FUNCTION {default.type}{misc} + + + +%%%%%%%%%%%%%%%%%% +%% MAIN PROGRAM %% +%%%%%%%%%%%%%%%%%% + +READ + +EXECUTE {initialize.controls} +EXECUTE {initialize.status.constants} +EXECUTE {banner.message} + + + +% BEGIN sort code based on plainnat.bst +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + { s } + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr #1 > + { + " " * + namesleft #1 = t "others" = and + { "zzzzz" * } + { numnames #2 > nameptr #2 = and + { "zz" * + type$ "patent" = + { year empty$ + { yearfiled } + { year } + if$ + } + { year } + if$ + empty.field.to.null.string * " " * + } + { skip$ } + if$ + t sortify * + } + if$ + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {author.organization.institution.sort} +{ author empty$ + { organization empty$ + { institution empty$ + { key empty$ + { "to sort, need author, organization, institution or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { "The " #4 institution chop.word sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + + + + +STRINGS { last.label next.extra } + +INTEGERS { last.extra.num } + +FUNCTION {format.lab.names} +{ 's := + s #1 "{vv~}{ll}" format.name$ + s num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * s #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key } + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.institution.label} +{ author empty$ + { key empty$ + { organization empty$ + { institution empty$ + { cite$ #1 #3 substring$ } + { "The " #4 institution chop.word #3 text.prefix$ } + if$ + } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key } + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.label} +{ type$ "book" = + type$ "inbook" = + or + { author.editor.key.label } + { type$ "proceedings" = + type$ "periodical" = + or + { editor.key.organization.label } + { type$ "manual" = + type$ "electronic" = + type$ "misc" = + or or + { author.key.organization.label } + { type$ "standard" = + { author.key.organization.institution.label } + { author.key.label } + if$ + } + if$ + } + if$ + } + if$ + duplicate$ + 'short.list := + "(" + * + type$ "patent" = + { year empty$ + { yearfiled } + { year } + if$ + } + { year } + if$ + duplicate$ + empty$ + short.list key empty.field.to.null.string = or + { pop$ "" } + { skip$ } + if$ + * + 'label := +} + + + +FUNCTION {presort} +{ type$ "ieeetranbstctl" = + { key empty$ + { "_" } + { key sortify } + if$ + duplicate$ + } + { calc.label + label sortify + " " + * + type$ "book" = + type$ "inbook" = + or + { author.editor.sort } + { type$ "proceedings" = + type$ "periodical" = + or + { editor.organization.sort } + { type$ "manual" = + type$ "electronic" = + type$ "misc" = + or or + { author.organization.sort } + { type$ "standard" = + { author.organization.institution.sort } + { author.sort } + if$ + } + if$ + } + if$ + } + if$ + " " + * + cite$ + * + } + if$ + #1 entry.max$ substring$ + 'sort.label := + #1 entry.max$ substring$ + 'sort.key$ := +} + + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'last.extra.num := + #0 'number.label := +} + +FUNCTION {forward.pass} +{ type$ "ieeetranbstctl" = + { skip$ } + { last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := + } + if$ +} + +FUNCTION {reverse.pass} +{ type$ "ieeetranbstctl" = + { skip$ } + { next.extra "b" = + { "a" 'extra.label := } + { skip$ } + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + { skip$ } + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := + } + if$ +} + +FUNCTION {bib.sort.order} +{ sort.label 'sort.key$ := +} +% END sort code based on plainnat.bst + + + + +ITERATE {presort} + +SORT + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} +REVERSE {reverse.pass} + +ITERATE {bib.sort.order} + +SORT + +EXECUTE {begin.bib} +ITERATE {call.type$} +EXECUTE {end.bib} + +EXECUTE{completed.message} + + +%% That's all folks, mds. diff -r 000000000000 -r 8319d82cab07 bibtex/IEEEtran_bst_HOWTO.pdf Binary file bibtex/IEEEtran_bst_HOWTO.pdf has changed diff -r 000000000000 -r 8319d82cab07 bibtex/README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bibtex/README Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,110 @@ + +September 30, 2008 + + +IEEEtran.bst is the official BibTeX style for authors of the Institute of +Electrical and Electronics Engineers (IEEE) Transactions journals and +conferences. + +It also may have applications for other academic work such as theses and +technical reports. The alphanumeric and natbib variants extend the +applicability of the IEEEtran bibstyle family to the natural sciences +and beyond. + +The IEEEtran bibstyle is a very comprehensive BibTeX style which provides +many features beyond the standard BibTeX styles, including full support +for references of online documents, patents, periodicals and standards. +See the provided user manual for detailed usage information. + +The latest version of the IEEEtran BibTeX style can be found at CTAN: + +http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/bibtex/ + +as well as within IEEE's site: + +http://www.ieee.org/ + +Note that the packages at IEEE's site do not contain the natbib and +alphanumeric variants (e.g., IEEEtranN.bst, etc.) as these are not used +for IEEE related work. These files can be obtained on CTAN. + +For helpful tips, answers to frequently asked questions, and other support, +visit the IEEEtran home page at my website: + +http://www.michaelshell.org/tex/ieeetran/ + + +Enjoy! + +Michael Shell +http://www.michaelshell.org/ + +******* +Version 1.13 (2008/09/30) changes: + + 1. Fixed bug with edition number to ordinal conversion. Thanks to + Michael Roland for reporting this issue and correcting the algorithm. + + 2. Added new IEEE journal string definitions. + + +********************************** Files ********************************** + +README - This file. + +IEEEtran_bst_HOWTO.pdf - The user manual. + +IEEEtran.bst - The standard IEEEtran BibTeX style file. For use + with IEEE work. + +IEEEtranS.bst - A version of IEEEtran.bst that sorts the entries. + Some IEEE conferences/publications may use/allow + sorted bibliographies. + +IEEEtranSA.bst - Like IEEEtranS.bst, but with alphanumeric citation + tags like alpha.bst. Not for normal IEEE use. + +IEEEtranN.bst - Like IEEEtran.bst, but based on plainnat.bst and + is compatible with Patrick W. Daly's natbib + package. Not for normal IEEE use. + +IEEEtranSN.bst - Sorting version of IEEEtranN.bst. Not for normal + IEEE use + +IEEEexample.bib - An example BibTeX database that contains the + references shown in the user manual. + +IEEEabrv.bib - String definitions for the abbreviated names of + IEEE journals. (For use with IEEE work.) + +IEEEfull.bib - String definitions for the full names of IEEE + journals. (Do not use for IEEE work.) + +*************************************************************************** +Legal Notice: +This code is offered as-is without any warranty either expressed or +implied; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE! +User assumes all risk. +In no event shall IEEE or any contributor to this code be liable for +any damages or losses, including, but not limited to, incidental, +consequential, or any other damages, resulting from the use or misuse +of any information contained here. + +All comments are the opinions of their respective authors and are not +necessarily endorsed by the IEEE. + +This work is distributed under the LaTeX Project Public License (LPPL) +( http://www.latex-project.org/ ) version 1.3, and may be freely used, +distributed and modified. A copy of the LPPL, version 1.3, is included +in the base LaTeX documentation of all distributions of LaTeX released +2003/12/01 or later. +Retain all contribution notices and credits. +** Modified files should be clearly indicated as such, including ** +** renaming them and changing author support contact information. ** + +File list of work: IEEEtran_bst_HOWTO.pdf, IEEEtran.bst, IEEEtranS.bst, + IEEEtranSA.bst, IEEEtranN.bst, IEEEtranSN.bst, + IEEEexample.bib, IEEEabrv.bib, IEEEfull.bib + +*************************************************************************** diff -r 000000000000 -r 8319d82cab07 changelog.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/changelog.txt Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,758 @@ + + + Changelog history of the IEEEtran LaTeX class. + 2014/09/17 + by Michael Shell (MDS) + http://www.michaelshell.org/ + + + 9/2014 V1.8a (MDS) changes: + + 1) Extensive rework of the compsoc mode to comply with the latest standards + of the IEEE Computer Society. + + 2) Internal code improvements for page setup and command argument + processing. + + 3) Fixed abstract, index terms and diamond line for compsoc technotes. + Thanks to Dimitris Schinianakis for reporting this problem. + + 4) New cspaper option to support the special trim paper size + (7.875in x 10.75in) used in actual Computer Society journals. For + compsoc journal mode, typesetting will not be altered by the use of this + option. + + 5) New \IEEEraisesectionheading{} command to provide for the special raised + first section heading of Computer Society journal papers. + + 6) Increased \clubpenalty, \widowpenalty, \displaywidowpenalty to + discourage paragraph breaks at the first and last lines. + Thanks to Dirk Beyer for suggesting this change. + + 7) Added lines per column console message. + + +******* + 12/2012 V1.8 (MDS) changes:: + + 1) New transmag class option to support the IEEE Transactions on Magnetics + format. Thanks to Wei Yingkang, Sangmin Suh and Benjamin Gaussens + for suggestions and beta testing. + + 2) The \IEEEcompsoctitleabstractindextext and + \IEEEdisplaynotcompsoctitleabstractindextext + commands have been deprecated in favor of their + \IEEEtitleabstractindextext and \IEEEdisplaynontitleabstractindextext + (observe that the "not" has changed to "non") equivalents. This change + generalizes and decouples them from compsoc mode because the new + transmag mode also uses them now. + + 3) Added new *-forms of \IEEEyesnumber*, \IEEEnonumber*, \IEEEyessubnumber*, + and \IEEEnosubnumber* (the non-star form of the latter is also new) which + persist across IEEEeqnarray lines until countermanded. To provide for + continued subequations across instances of IEEEeqnarrays as well as for + subequations that follow a main equation (e.g., 14, 14a, 14b ...) + \IEEEyessubnumber no longer automatically increments the equation number + on it's first invocation of a subequation group. Invoke both + \IEEEyesnumber\IEEEyessubnumber together to start a new + equation/subequation group. + + 4) Hyperref links now work with IEEEeqnarray equations. + Thanks to Stefan M. Moser for reporting this problem. + + 5) Fixed \markboth so that it does not cause an error with babel.sty. + Thanks to Frank Meier for suggesting this change. + + 6) Change all instances of ~ to \nobreakspace to avoid + + ! Argument of \language@active@arg~ has an extra } + + figure caption error with bable.sty under spanish. Thanks to + Manuel Olivares and Javier Bezos for suggesting this change. + + 7) Allow line breaks within long theorem names. + Thanks to Miquel Payaro for suggesting this change. + + 8) Revised \IEEEeqnarraymulticol{} to allow inner alignments without + requiring extra containing braces to prevent an incomplete \ifx error. + Thanks to Stefan M. Moser and Auke van der Valk for reporting this + problem. + + 9) Revised spacing at top of top figures and tables to better + align with the top main text lines as IEEE does in its journals. + Thanks to Dirk Beyer for reporting this issue and beta testing. + +10) Removed support for legacy IED list commands, legacy QED and proof + commands and the legacy biography and biographynophoto environments. + IEEEtran no longer defines or references \labelindent so as to + avoid namespace problems with list packages that define it. + Thanks to Sven Köhler for reporting the problem with enumitem.sty. + + +******* + 3/2007 V1.7a (MDS) changes: + + 1) Corrected problem of unwanted two column peer review title page format. + Thanks to Virgilio Rodriguez for reporting this bug. + + 2) "depreciated" -> "deprecated". Thanks to Virgilio Rodriguez for + suggesting this change. + + + +******* + 1/2007 V1.7 (MDS) changes: + + 1) New class option compsoc to support the IEEE Computer Society format. + + 2) New class option captionsoff disables the display of figure/table + captions. endfloat.sty is now mentioned in the docs. Thanks to Geoff + Walker for suggesting these changes. + + 3) Fixed compatibility issues with subfig.sty and caption.sty. Thanks to + Steven Douglas Cochran and Axel Sommerfeldt for suggesting this change. + + 4) New \CLASSINPUT, \CLASSOPTION and \CLASSINFO interface allows for more + user control and conditional compilation. + + 5) \ifcenterfigcaptions (\centerfigcaptionstrue, \centerfigcaptionsfalse), + \CMPARstart and \overrideIEEEmargins have been removed and no are + longer supported. The effect of \overrideIEEEmargins can be mimicked + via the more general \CLASSINPUT interface: + % US letter paper: + \newcommand{\CLASSINPUTinnersidemargin}{0.775in} + \newcommand{\CLASSINPUToutersidemargin}{0.585in} + % A4 paper: + \newcommand{\CLASSINPUTinnersidemargin}{17mm} + \newcommand{\CLASSINPUToutersidemargin}{11.647mm} + + 6) Several commands and environments have been deprecated in favor of + replacements with IEEE prefixes to better avoid potential future name + clashes with other packages. Legacy code retained to allow the use of + the obsolete forms (for now), but with a warning message to the console + during compilation: + \IEEEauthorblockA, \IEEEauthorblockN, \IEEEauthorrefmark, + \IEEEbiography, \IEEEbiographynophoto, \IEEEkeywords, \IEEEPARstart, + \IEEEproof, \IEEEpubid, \IEEEpubidadjcol, \IEEEQED, \IEEEQEDclosed, + \IEEEQEDopen, \IEEEspecialpapernotice. IEEEtran.cls now redefines + \proof in way to avoid problems with the amsthm.sty package. + For IED lists: + \IEEEiedlabeljustifyc, \IEEEiedlabeljustifyl, \IEEEiedlabeljustifyr, + \IEEEnocalcleftmargin, \IEEElabelindent, \IEEEsetlabelwidth, + \IEEEusemathlabelsep + + 7) These commands/lengths now require the IEEE prefix and do not have + legacy support: \IEEEnormaljot. + For IED lists: \ifIEEEnocalcleftmargin, \ifIEEEnolabelindentfactor, + \IEEEiedlistdecl, \IEEElabelindentfactor + + 8) \normalsizebaselineskip skip replaced by + \CLASSINFOnormalsizebaselineskip (nonrubber dimen) length. + Also, new \CLASSINFOnormalsizeunitybaselineskip (nonrubber dimen) + provided. + + 9) Now defaults to using Alpha numbering rather than Roman for appendices + numbering. This is because Alpha numbering is more common and avoids + problems with theorem numbering. \ifuseRomanappendices + (\useRomanappendicestrue, \useRomanappendicesfalse) is no longer + supported. Instead, use the new class option romanappendices if Roman + appendices numbering is desired. Thanks to Leonid Mirkin for reporting + the problem with theorems in appendices and suggesting changes. + +10) Improved paper size setting code for pdflatex. + +11) Better handling of theorem numbering when using the section counter + within the appendix(cies). Thanks to Leonid Mirkin for suggesting + this change. + +12) Fixed bug that caused equations at the end of theorems to be too + close to the line below them. + +13) Provided hook to conference mode console notice and changed notice to + better support conferences that use A4 paper. Thanks to Volker Kuhlmann + for suggesting this change. + +14) \IEEEauthorrefmark made robust to allow it to be used in \thanks + without a leading \protect + +15) 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. + +16) Revised internal \@sect command to be more robust for users who employ + modified section heading formats. Thanks to Zarko F. Cucej for + suggesting this change. + +17) Improved \thesubsubsection definition to prevent breaks at the hyphen. + Thanks to Moritz Borgmann for suggesting this change. Thanks to + Dan Luecking and Heiko Oberdiek for explaining some of the various + alternatives and techniques to fix it. + +18) No longer provide \NAT@parse hack to get cite.sty to play (somewhat) + with hyperref.sty as this is already included in cite.sty version + 4.0 (2003-05-27) and later. + +19) At the beginning of document, set the default style of url.sty to be + the same as the current text font - as is done in IEEE journals. + +20) Corrected excessive line spacing in journal table captions. Thanks to + Moritz Borgmann for suggesting this change. + +21) Corrected \thesubsubsection to use the "I-A1" format IEEE uses rather + than "I-A.1" as was done before. Ditto for \theparagraph. Thanks to + Moritz Borgmann for suggesting this change. + +22) Enclose papersize specials within \AtBeginDvi in case someone wants + to make a format with IEEEtran. Thanks to Moritz Borgmann for + suggesting this change. + +23) Eliminated the small space after abstract and keywords dash as IEEE + now does. Thanks to Moritz Borgmann for suggesting this change. + +24) IEEEkeywords is no longer locked out in conference mode + +25) Increase defaults of \binoppenalty and \relpenalty to discourage + breaks within equations. Thanks to Moritz Borgmann for suggesting + this change. + +26) Support optional argument for IEEEproof. Thanks to Ingo Steinwart for + suggesting this change. Also, start a new \par with \IEEEproof. + +27) Add support for an optional argument to \bstctlcite. + +28) Changed \topfraction and \dbltopfraction from 1.0 to 0.9. Thanks to + Donald Arseneau for suggesting this change. + + +******* + 09/2005 V1.6c (MDS) changes: + + 1) Changed endfigure/endfloat definitions so as not to cause problems with + preview-LaTeX and other packages. Thanks to Stephan Heuel and David + Kastrup for reporting this problem. + + + +******* + 11/2002 V1.6b (MDS) changes: + + 1) Fixed problem with figure captions when using hyperref. Thanks to + Leandro Barajas and Michael Bassetti for reporting this bug. + + 2) Provide a fake nabib command \NAT@parse so that hyperref will not + interfere with the operation of cite.sty. However, as a result citation + numbers will not be hyperlinked. Also, natbib will not be able to work + with IEEEtran. However, this is perhaps the best solution until + cite.sty and hyperref.sty are able to co-exist with each other. + It easy enough to override the fake command via: + \makeatletter + \let\NAT@parse\undefined + \makeatother + + 3) Revised font selection method so as not to have problems when used + with setspace.sty. Thanks to Zhang Yan for reporting this bug. + + 4) Added \special to feed papersize to dvips. Thanks to Moritz Borgmann + for suggesting this feature. + + 5) In addition to the IEEE IED lists, the original IED style list + environments (as is done in article.cls) are now provided as + LaTeXitemize, LaTeXenumerate, and LaTeXdescription. Also, users can + now redefine \makelabel within IEEE IED list controls. There may be + some use for this in specialized applications. Thanks to Eli Barzilay + for suggesting this feature. + + 6) \table* now defaults to \footnotesize text like \table. + + 7) The draft modes now no longer force a pagebreak after the title. + Thanks to Christian Peel for suggesting this change. + + 8) New draftclsnofoot mode is like draftcls, but does not display the + date and the word "DRAFT" at the foot of the page. Thanks to + Christian Peel for suggesting this feature. + + 9) New peerreview and peerreviewca modes with \IEEEpeerreviewmaketitle + command allows for a "cover" titlepage for anonymous peer review. + Except for the cover titlepage, peerreview is much like journal mode. + peerreviewca is like peerreview, but allows the author names to be + entered and formatted as under conference mode so that author + affiliations and contact information can be easily seen on the cover + page. Thanks to Eric Benedict for suggesting this feature. + + + +******* + 7/2002 V1.6 (MDS) changes: + + 1) Added conference mode via conference option. Defaults to the + traditional journal mode. e.g., \documentclass[conference]{IEEEtran} + + 2) Added support for A4 paper via new a4paper option. Pdflatex's paper + size lengths are now automatically set to the proper paper size being + used. + + 3) Revised margins again. Page text is now horizontally centered. + Conference mode increases the top and bottom margins with the bottom + margin being slightly larger. For A4 paper, the top margin and text + typesetting will not change from those of US letter paper, but the side + margins will be smaller and the bottom margin will be larger than that + of US letter. All per IEEE specs. + + 4) Fixed footnote line spacing anomaly in draft mode. + Thanks to Alberto Rodriguez for reporting this bug. + + Also, slightly revised footnote and \thanks note spacing. + Set \interfootnotelinepenalty=10000 to prevent LaTeX + from breaking footnotes across multiple pages or columns. + + 5) Fixed bug that caused overwritten photo areas and sometimes anomalous + spacing when a new paragraph was started within a biography. Also, + the presence of \par's, new lines or spaces at the beginning of + abstract, keywords, biography, or biographynophoto will no longer + affect the first word spacing. + Thanks to Eric Durant for reporting this bug. + + The biography environment now does a better job in preventing + a biography photo area from being broken across pages or columns. + + 6) Fixed whitespace between \cite entries bug. i.e., + both \cite{einstein24, knuth84} and \cite{einstein24,knuth84} + are now valid. \cite is now a robust command as it should be. + IEEEtran now no longer defines the old non-standard \shortcite or + \citename. + + The base IEEEtran.cls does not sort citation numbers or produce ranges + for three or more consecutive numbers. However, V1.6 of IEEEtran.cls + now pre-defines the following format control macros to facilitate easy + use with Donald Arseneau's cite.sty package (tested with cite.sty V3.9): + + \def\citepunct{], [} + \def\citedash{]--[} + + cite.sty is standard on most LaTeX sytems and can be obtained from + www.ctan.org. Thanks to Donald Arseneau for creating cite.sty, + providing the required format arguments to produce the IEEE style + and designing a cite interface capable of handling the IEEE citation + style. + + Note: Historically, IEEE has wanted authors to "hardcode" symbolics. + (i.e., replace all \cite{} with fixed [x]). However, it now seems that + most electronic manuscript submissions to IEEE are in .pdf format, and + as such, do not require the LaTeX document reference numbers to be hard + coded. If an author is required to submit actual LaTeX files, I do + recommend that the bibliography file (.bbl) be copied into the .tex + document and the \bibliographystyle{} and \bibliography{} commands be + commented out so that the .tex file does not depend on (potentially + lengthy and/or confidential) external bibliography database files + + 7) Adjusted some spacing parameters. The spacing above and below equations + has been revised (to a typical IEEE value). \jot now has a decent value. + The title text is now exactly 24pt. (On a related note, \fontsubfuzz has + been increased to 0.9pt to prevent annoying font substitution warnings + when using the Computer Modern fonts that use the 24.88pt size.) + In V1.6, \small is now 8.5pt in 9pt docs because \footnotesize is 8pt. + For 9pt docs, you should probably go ahead and use \footnotesize when + you need text a little smaller than \normalsize. + The interword spacing has been adjusted to be extremely close to that + which IEEE uses. You can use a new class option, nofonttune, if you need + to disable the adjusting of the interword spacing. This adjustment and + an increase to \hyphenpenalty have greatly reduced the amount of + hyphenation in a typical paper. + The baselineskip for the normalsize fonts has been tweaked to reduce + underfull vboxes on journal paper columns with only paragraphs. + Conference mode does the same thing but by also tweaking the \textheight + slightly off 9.25in (IEEE spec) to ensure an integer number of lines per + page. Draft (also draftcls) mode has also been revised to reduce + underfull vbox warnings. However, draft mode can still produce underfull + vboxes (a direct result of the increase in line spacing and margins) if: + A non-normalsize font occupies an entire column (abstract and index + terms take up a whole column by themselves); or the beginning of a + section occurs near the end of a column and cannot be squeezed into the + bottom, etc. This is normal as draft mode's liberal spacings cannot + guarantee perfect formatting. + + 8) New biographynophoto environment for biographies without photos. + Usage: + + \begin{biographynophoto}{author name} + biography text here + \end{biographynophoto} + + 9) Fixed bug that produced multiple table of contents entries for papers + with more than one biography. Also, biography now works better with + hyperref. + +10) New \sublargesize font size command provides for 11pt text in a 10pt + document. (Needed for things like author names.) For documents not + using 10pt normal size text, \sublargesize is currently identical + to \large. + +11) New \IEEEmembership command to provide correct font to indicate IEEE + membership for journal papers. + +12) Fixed author name line overflow problem when in journal mode. This + problem had been introduced in V1.5 in my rush to get \and to work for + conferences. \and is unneeded (and invalid) in journal mode. For + conference mode, \and will work as expected and features an optional + spacing argument. i.e., \and[\hspace{5ex}] + \and will default (recommended) to using \hfill which will result in + equal spacing between author blocks. + +13) New \authorblockN, \authorblockA and \authorrefmark commands to + facilitate easy formatting of author names, affiliations and cross + reference symbols, respectively, when in conference mode. These + three commands are to be used only for conference papers. + In conference mode, \author text is placed within a modified tabular + environment (somewhat like article.cls). So, within \author in + conference mode, you should not try to enclose multiple \\ within an + environment or command (other than the argument braces of + \authorblockX{}). For example: + + \author{\authorblockN{{John Doe \\ Jane Doe}}} % WRONG! + + will generate an error. + + Note that font size/attribute changes will now persists across \\ + within \author. (But, not across author blocks nor across \and.) + However, with the new commands, there should be no need to alter any + font attributes within \author. All text sizing and spacing within + \author{} and the author block commands is per IEEE specs for both + conference and journal modes. (In conference mode, the author names + are only very slightly larger than the affiliations which are in normal + size.) For specialized applications you can alter the justification of + author lines by placing \hfill at the beginning or at the end of a line. + The interline spacing within \author is determined by the font + attributes that are in effect at the end of each line within author. + +14) Because the titles and author name blocks use different font + sizes/styles from the main text, it was possible that two column papers + with titles that span both columns (standard journal and conference + papers, but not technotes) with certain numbers of lines for the title + and authors' name/affiliations can cause underfull vbox problems + (paragraphs with large spacings between them) in the second column of + the main text on the title page - if there were no new sections, + equations or figures in this column (they would provide some needed + rubber spacing). The use of things like special paper notices and + publisher ID marks also affected this issue. The problem could not + happen in the first column because the first column has a rubber length + around the heading of the first section. Furthermore, problems seldom + occurred on pages after the first as the margins had been chosen not to + cause it with the popular font sizes. Rubber lengths after the author + names would not fix this problem. + Auto-calculating a "good" spacing after the title is a tad difficult + to do in LaTeX. However, I am pleased to report that V1.6 has this new + capability - "dynamically determined title spacing". IEEEtran will now + measure the height of all the title and author text in \maketitle + and then calculate a rigid (non-rubber) spacer to follow that meets + IEEE specs and also produces a \textheight on the title page that + ensures an integer number of normalsized lines on the rest of the page. + Single column papers, and two column papers with the title entirely in + column one (technotes) do not need dynamic rigid spacing and therefore + use standard rubber spacers. + + Note: This problem can still crop up if you use floats that span both + columns (i.e., figure*). It has been a decade+ long limitation with + LaTeX that the stretchable portion of \dbltextfloatsep is ignored. + If you get a problem with underful vbox warnings and paragraphs that + "are pulled apart" on page with a float that spans both columns, tweak + the space between the figure and the main text a little: + + \vskip 5pt + \end{figure*} + + If you can't find a value that fixes both columns, you are going to + have to put a rubber spacer somewhere in one or both of the columns. +15) Because of change #14 above, those of you using \pubid will, as of V1.6, + have to place it *before* \maketitle in order for it have the intended + affect. The dynamic spacer algorithm must see if you are using \pubid + when \maketitle is called. \pubidadjcol works as before except that it + now has additional logic to prevent it from doing anything if \pubid + was never called. + +16) In some unusual, non-standard circumstances, an author may desire to + alter the spacing after the title area or put some unusual text above + the main text. For instance, to stop a bad break when a new section + occurs right at the start of the second page. This is difficult to do + when the title spans both columns of two column text since LaTeX treats + such title text as a type of float. A new command, + \IEEEaftertitletext{}, gives access to the end of that produced by + \maketitle. The types of things that can go into \IEEEaftertitletext + are the same as those into \twocolumn[] - no \par, but \\ are OK. There + is no restriction on the range of spacings that can be used. e.g., + \IEEEaftertitletext{\vspace{-100pt}} will push the main text well into + the title and \IEEEaftertitletext{\vspace{100pt}} will push it far down + the page. You will have complete control. If used, place + \IEEEaftertitletext{} before \maketitle like \title and \author. + IEEEtran's dynamic title spacing intentionally does not take into + consideration the contents of \IEEEaftertitletext{} when determining + the spacer after the title area (otherwise it would try to second + guess you), so the user will have manually adjust the height of the + contents in \IEEEaftertitletext{} if the problem discussed in #14 above + should develop. A safe bet is to keep the height of contents of + \IEEEaftertitletext{} to integer multiples of \baselineskip, e.g., + \IEEEaftertitletext{\vspace{-1\baselineskip}} + + Because it can result in an IEEE nonstandard format, the use of + \IEEEaftertitletext{} is discouraged. Possible uses include (1) the use + of IEEEtran for non-IEEE work with different title spacing requirements, + or (2) as an emergency manual override if a problem should develop in + IEEEtran's automatic spacing algorithm. + +17) completely rewritten \PARstart to: + a. no longer have problems when the user begins an environment + within the paragraph that uses \PARstart. + b. auto-detect and use the current font family + c. revise handling of the space at the end of the first word so that + interword glue will now work as normal. + d. produce correctly aligned edges for the (two) indented lines. + + Because the current font family is now auto-detected, there is no + longer any need for \CMPARstart - it is now the same as \PARstart. + +18) There is now a new "open box" Q.E.D. symbol (\QEDopen) as well as the + original default (\QED) closed one (\QEDclosed). Some journals use + the open form. To make \proof use the open form, just do: + \renewcommand{\QED}{\QEDopen} + +19) Additional \typeout{} notices added to warn the user when unusual + settings/commands are detected or as reminders to avoid common errors + when in conference mode. + +20) IEEEtran now provides \abovecaptionskip and \belowcaptionskip skip + registers because article class provides them and some packages + may error if they are missing. However, IEEEtran only uses + \abovecaptionskip for actual caption spacing. + +21) Fixed bug that prevented users from redefining the section headings + to use arabic digits. Thanks to Richardt H. Wilkinson for reporting + this bug. + +22) Code cleaned up to be more efficient with the use of TeX registers; + removed some old LaTeX 2.09 code; revised option processing to + LaTeX2e standard; eliminated unwanted "phantom" spaces in some + environments. + +23) Added new \IEEEeqnarray, \IEEEeqnarraybox, \IEEEeqnarrayboxm and + \IEEEeqnarrayboxt environments to provide superior alternatives to the + standard LaTeX \eqnarray, \array and \tabular. Additional new support + commands include \IEEEeqnarraydecl, \IEEEeqnarrayboxdecl, + \IEEEeqnarraymathstyle, \IEEEeqnarraytextstyle, \yesnumber. + \IEEEnonumber, \IEEEyesnumber, \IEEEyessubnumber, \IEEEeqnarraynumspace, + \IEEEeqnarraymulticol, \IEEEeqnarrayomit, \IEEEeqnarraydefcol, + \IEEEeqnarraydefcolsep, \IEEEeqnarrayseprow, \IEEEeqnarrayseprowcut, + \IEEEeqnarrayrulerow, \IEEEeqnarraydblrulerowcut, + \IEEEeqnarraystrutmode, \IEEEeqnarraystrutsize, + \IEEEeqnarraystrutsizeadd, \IEEEvisiblestrutstrue, + \IEEEvisiblestrutsfalse and \IEEEstrut. + These are documented in the user's guide. + +24) V1.6 changed back to using () around theorem names (which are also now + in italics) as this is what IEEE is using now. Thanks to Christian Peel + for reporting this. Also, when section numbers are used as the first + part of theorem numbers, display them in arabic, not Roman. + +25) New \IEEEtriggeratref{X} command allows a page break to be triggered + just before the given reference number "X". This is most useful when + balancing the columns on the last page and a \newpage between references + is desired. \IEEEtriggercmd{X} allows a different command to be executed + at trigger. + + + +******* + 7/2001 V1.5 (MDS) changes: + + + 1) Fixed \and within \author bug: (! Misplaced \crcr. \endtabular ->\crcr) + Thanks to Rainer Dorsch for discovering and reporting that \and + did not work. + + 2) Fixed the biography environment so that if a biography's text is shorter + than the area allocated for the photo, a collision with the next + biography does not occur. You can now put real graphics (using the + graphicx package) into the biography photo box with a new optional + argument of the biography command! For example: + + \begin{biography}[{\includegraphics[width=1in,height=1.25in,clip, + keepaspectratio]{./tux.eps}}]{Linux Penguin} + + will use the specified graphic as the author's photo. The photo area is + exactly 1in wide by 1.25in high - as is done in IEEE Transactions. Try + to keep the same 4:5 aspect ratio if scanning/cropping your photos. + Note the need for the extra set of enclosing braces around the + \includegraphics. Without it, The LaTeX parser may get confused when it + sees the \includegraphics's brackets within the biography's optional + argument. Due to the length of the \includegraphics command, you may + wish to define your own shorthand form of it. I have not done so with + IEEEtran to prevent dependence on the graphicx package. If you do not + use the optional argument, or leave it empty, a standard frame box + with the words "Place Photo Here" will be used. If you want the space + to remain completely empty, you can do: + + \begin{biography}[\mbox{}]{The Invisible Man} + + The interface to biography's optional argument is into a + 1in X 1.25in minipage in which the argument text is centered both + horizontally and vertically: + + \begin{minipage}[b][1.25in][c]{1in}% + \centering + #1% + \end{minipage} + + Within the biography environment, \unitlength is set to 1in. + With this in mind, you can even design your own custom frameboxes. + For instance: + + \begin{biography}[\framebox(1,1.25){\parbox[][\height + ][c]{0.9in}{\centering PLACE\\ PHOTO\\ + HERE}}]{Author Name} + + will yield the same type of result as the default photo box. + + Thanks to Herbert Voss for discovering the collision bug, suggesting + the ability to handle graphics and providing some prototype code. + + + +******* + 3/2001 V1.4 (MDS) changes: + + + 1) New "draftcls" and "final" options have been added. + Thanks to Dragan Cvetkovic for suggesting an option like draftcls. + + 2) Documentation changes to reflect the fact that this IEEEtran.cls + is no longer beta test. + + 3) Slightly revised caption sizes. Figure and table captions are now + in \footnotesize, not \small as before. + + 4) Allow user to control figure caption justification. IEEEtran.cls + normally defaults to left justified as is done in Transactions. + However, for conferences, you may wish to issue the command: + \centerfigcaptionstrue + in the preamble. Short (less than one line long) figure captions + will then be centered. Multi-line figure captions will always be + properly left justified. V1.6: This is already done for you when + using the conference mode. + + + +******* + 1/2001 V1.3 + Michael Shell (MDS) made extensive changes and additions: + + + BUGS FIXED (and many others too numerous to mention!): + 1) Fixed improper alignment with itemized, enumerated and + description lists. Added new controls to these three + environments so that it is easy to get the alignment IEEE + uses. Furthermore, the itemize, enumerate and description lists + no longer force a new paragraph to begin at the end the list + (\par). (Sometimes lists are used within paragraphs.) + + 2) JVH's fixes now allow things like $\mathbf{N}(0,P(0))$ + to work properly without needing the extra braces: + ${\mathbf{N}}(0,P(0))$. There is no longer any dependence + on the "rawfonts" and "oldlfont" packages. Thanks Juergen! + + 3) Fixed underfull hbox errors and incorrect reference number + alignment when the number of references in the bibliography + exceeded 9 entries (which is almost every paper!). + + 4) Removed dependence on the LaTeX sizexx.clo files. + Now, 9pt documents should work correctly even on systems that + lack a size9.clo file. This is most often used in conjunction + with the option "technote" for "correspondence" papers like those + in IEEE Transactions on Information Theory. For virtually all + other papers, 10pt is used and so it is the default. + Some improper font sizes have been corrected. \footnotesize is + now 8pt in 9pt docs, so footnotes in technotes should be the + correct size now. + + 5) Added \interlinepenalty within the bibliography section to discourage + LaTeX from breaking within a reference. IEEE almost never breaks within + a reference and when they do it is usually in technotes + (correspondence papers). You may get an underfull vbox warning in the + bibliography indicating that the spacing just before the "REFERENCES" + section is larger than normal, but the final result will be more like + what IEEE will publish. See the comments in the BIBLIOGRAPHY section + around line 2034 below if you want to change this behavior. + + 6) No longer "blows up" when you use \paragraph and have a table + of contents. + + 7) Theorem environment changed, (but for V1.6, back to the old way, sigh). + + 8) Figure captions adjusted: IEEE left (not center) justifies + figure captions (for journals) and does not indent figure caption text. + + 9) Adjusted some spacings in the table of contents(TOC))/list-of-figures/ + list-of-tables so that section/table numbers will not so easily + collide with the titles. Section VIII was usually the worst offender. + Still doesn't right justify the section numbers, but neither does + article.cls (This must be why LaTeX likes the x.y.z section numbering + scheme unlike I, II, III, etc. of IEEE. ) + It may be "normal" as it is (left justified). sigh. + +10) Now uses "index terms" now as a heading instead of "keywords". + Furthermore, the "index terms" and "abstract" headings are in bold + italic. This is how IEEE does things. + +11) \thebibliography and \biography now put entries into + the table of contents for you. + + +******* + + + + + ******* + 9/2000 (JVH) changes: (now designated as V1.2) + + made some corrections to get closer to LaTeX2e + 20000906 Juergen v.Hagen + vonhagen@ihefiji.etec.uni-karlsruhe.de + + Permission to redistribute granted as of December 2000. + ******* + + + + + + ******* + + 1996 (JWD) LaTeX2e version: (now designated as V1.1) + + In the most recent TeXhax digest, there was a request for a copy of + IEEEtrans.sty modified to work with LaTeX2e. I have a version I + modified to make it IEEEtrans.cls, which I have sent to the person + making the request and am now sending to you to consider posting to + the archives. + -- + Jon Dixon + dixonj@colorado.edu + http://spot.colorado.edu/~dixonj/ + +******* + + + + + +******* + + 30-August-1993 original LaTeX 2.09 version (IEEEtran.sty), + (now designated as V1.0): + + by Gerry Murray and Silvano Balemi + Automatic Control Lab, ETH Zurich, Switzerland + balemi@aut.ee.ethz.ch + +******* + + + diff -r 000000000000 -r 8319d82cab07 extras/README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extras/README Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,51 @@ + +January 10, 2007 + + +Here are some odds and ends that may be useful. + + +Enjoy! + +Michael Shell +http://www.michaelshell.org/ + +******************************** Files ************************************ + +README - This file. + +font_install_how.txt - A step-by-step guide to installing Type 1 fonts + under LaTeX. Adobe's Euro font is used as the + example. + +tux.eps - "Tux" the Linux penguin in EPS format. + This bitmapped graphic is sized to 1" X 1.25" + and can be used as a test photo for the IEEEtran.cls + biography environment. + +*************************************************************************** +Legal Notice: +This code is offered as-is without any warranty either expressed or +implied; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE! +User assumes all risk. +In no event shall IEEE or any contributor to this code be liable for +any damages or losses, including, but not limited to, incidental, +consequential, or any other damages, resulting from the use or misuse +of any information contained here. + +All comments are the opinions of their respective authors and are not +necessarily endorsed by the IEEE. + +This work is distributed under the LaTeX Project Public License (LPPL) +( http://www.latex-project.org/ ) version 1.3, and may be freely used, +distributed and modified. A copy of the LPPL, version 1.3, is included +in the base LaTeX documentation of all distributions of LaTeX released +2003/12/01 or later. +Retain all contribution notices and credits. +** Modified files should be clearly indicated as such, including ** +** renaming them and changing author support contact information. ** + +File list of work: font_install_how.txt, tux.eps + +*************************************************************************** \ No newline at end of file diff -r 000000000000 -r 8319d82cab07 extras/font_install_how.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extras/font_install_how.txt Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,422 @@ + + + + ***** Mike Shell's Step-By-Step Guide to Manually ***** + ***** Installing (Type 1 PostScript) Fonts Under ***** + ***** LaTeX Using Adobe's Euro Font as an ***** + ***** Illustrative Example ***** + +Version 1.4 +January 10, 2007 + +Copyright 2002-2007, by Michael Shell + http://www.michaelshell.org/ +See: +http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/extras/ +for the latest version of this document. + +NOTE: This text file uses Unix line feed conventions. When (human) +reading this file on other platforms, you may have to use a text +editor that can handle lines terminated by the Unix line feed +character (0x0A). + +*** Free to use and distribute if all credits are retained and the *** +*** document is unchanged. No warranty expressed or implied. User *** +*** assumes all risk. *** + +Note: This guide is intended to be "hands on" and covers only a specific, +practical example. There are other, more formal and comprehensive guides +to installing fonts under LaTeX: + +1. "The Font Installation Guide" + by Philipp Lehman + http://www.ctan.org/tex-archive/info/Type1fonts/fontinstallationguide/ + This is perhaps the best book ever written on the subject. Tutorial IV, + "The Euro Currency Symbol" covers the euro symbol. + +2. "Fonts and layouts", Chapter 8 of "A Beginner's Introduction to + Typesetting with LaTeX" (Section 8.3.2 covers the installation of + PostScript fonts) by Peter Flynn + http://www.ctan.org/tex-archive/info/beginlatex/html/chapter8.html#instfonts + +3. "fontinst - Font Installation Software for LaTeX" + by Alan Jeffrey, Rowland McDonnell and Lars Hellstrom + http://ctan.tug.org/tex-archive/fonts/utilities/fontinst/doc/ + +4. "The Simple Guide to Type 1 Fonts in LaTeX" + by Matthew Amster-Burton + http://www.mamster.net/tex/latex-fontfaq-amster-burton.pdf + Although the author states that this guide has been superseded by + Lehman's, it may still be of some value. + +5. "The No BS Guide to teTeX Font Installation" + by Donovan Rebbechi + http://www.pegasus.rutgers.edu/~elflord/unix/latex/no-bs.html + May be out of date today, but may still have some useful tips about the + fontinst application. + + + +Installing a euro font in LaTeX, although not always trivial, is a straight +forward task. Furthermore, it is an instructive exercise for learning how +to manually install fonts in LaTeX. Many other fonts are easier to install +as they do not require renaming, and/or have parts that have to be obtained +from multiple sources. So, if you can get a euro font going, you can +probably handle most other fonts you might want to install. Admittedly, +there are also those that are more difficult to install, especially if the +TeX metric and/or dvips map files have not already been created for them. +The installation of such fonts is not covered by the information provided +here. + +The four basic steps for manually installing a (type 1) font under LaTeX are: + +1. Install the actual PostScript font (.pfb) files; +2. Install the .tfm metric files; +3. Install the .sty and .fd files to provide a LaTeX interface; +4. Update the map configuration files and LaTeX directory lookup (hash) + tables. + + +The euro font has a number of issues that make it a tad more difficult +to install than most LaTeX fonts. The euro standards commission: + +http://europa.eu.int/euro/ + +originally mandated that the official standard euro symbol should always be +rendered in the sans style even if the surrounding text uses a different +style. This requirement violated traditional typesetting conventions and +was later overturned. However, this policy did cause a rift as to what was +considered the "proper" thing to do. + +Also, several different vendors/individuals have made their own versions of +the euro symbol using their interpretations of what it meant to have a +serf euro. + +Furthermore, LaTeX is independent of the type of fonts used - it can use +bitmap (Type 3), PostScript (Type 1 and 1C) and even fonts of the future +that haven't even been thought of yet - LaTeX could care less what is used +to describe the glyph shapes, it only needs to know the height, depth, and +width of each glyph. + +All of this results in the fact that there are several types of euro fonts +(and LaTeX packages) to choose from. So, I have to make a judgement call +as to what to recommend to use here. + +I assume that you want a Type 1 Postscript font as opposed to anything +bitmapped - this will help ensure the best quality rendering possible for a +given printer resolution. I will also assume here that the LaTeX system +you have does not already have any support for Type 1 euro glyphs, as is +often the case. + +Adobe gives out a free set of PostScript Type 1 euro fonts. +See: + +http://www.adobe.com/type/eurofont.html + +However, Adobe does not allow its fonts to be bundled with other software +products. This is why the fonts cannot be already pre-loaded in the LaTeX +distributions and LaTeX users must manually obtain and install them. + +[Note: Also worthy of consideration is Martin Vogel's marvosym package: + http://www.ctan.org/tex-archive/fonts/psfonts/marvosym/ + which includes several euro symbols as well as other symbols such + as astronomy, structural engineering, zodiac, and the "CE" symbol. + The marvosym package is licensed under the GPL.] + +This guide will focus on the use of the Adobe euro fonts. Now, you do not +have to register, but can get the needed Adobe euro font files directly +from: + +Windows and Unix: +ftp://ftp.adobe.com/pub/adobe/type/win/all/ +eurofont.exe +eurofont.txt + +Mac: +ftp://ftp.adobe.com/pub/adobe/type/mac/all/ +eurofont.sea.hqx +eurofont.txt + +Note that the file eurofont.exe is actually a zip file that is self +extracting when run under Windows. Unix users can do a: + +unzip eurofont.exe + +to unpack it. + + + +STEP #1 - INSTALL THE ACTUAL POSTSCRIPT FONT FILES + +Now, the eurofont.txt will tell you that you need ATM - ignore this since +you are using LaTeX and will have to do a manual install of the font files. +You can install them into MS Windows using Adobe ATM, but even if you do, +you will still have to follow the instructions here. + +The Adobe font files will have strange looking names. You are primarily +interested in the ones that end in PFB ("Printer Font Binary" - but +"PostScript Font Binary" might be a better name). These contain the +PostScript code which describes what the glyphs look like. It is these +files (or portions of them) that get embedded into your PostScript or PDF +output files. The AFM (Adobe Font Metric) files describe the size of the +boxes each glyph takes up. The PFM files do the same thing, but are used +only by the MS Windows system. LaTeX does not use AFM or PFM files, but +rather uses TFM (TeX Font Metric) files. There is a program (afm2tfm) that +can convert AFM to TFM, but you don't need this as the TeX/LaTeX developers +have done this for you already. Some font conversion programs (e.g., ps2pk) +may require access to the AFM or PFM files. The INF files describe the +fonts to Windows - so you don't need them (but, if curious, you can find +the formal font names listed within them). + +Now, rename the PFB files from the archive as follows: + +_1______.PFB -> zpeurs.pfb +_1B_____.PFB -> zpeubs.pfb +_1I_____.PFB -> zpeuris.pfb +_1BI____.PFB -> zpeubis.pfb +_2______.PFB -> zpeurt.pfb +_2B_____.PFB -> zpeubt.pfb +_2I_____.PFB -> zpeurit.pfb +_2BI____.PFB -> zpeubit.pfb +_3______.PFB -> zpeur.pfb +_3B_____.PFB -> zpeub.pfb +_3I_____.PFB -> zpeuri.pfb +_3BI____.PFB -> zpeubi.pfb + + +The new names are, more or less, based on Karl Berry's scheme for TeX font +names. For more information on this topic, see Karl Berry's "Filenames +for TeX Fonts": http://www.ctan.org/tex-archive/info/fontname/fontname.pdf + +Now, find your texmf directory where your LaTeX system is installed. I'll +call this directory "". (You may wish to use the local tree +"", or "localtexmf" under MiKTeX, instead so that your changes +will remain even after the system is upgraded.) Go to +/fonts/type1/adobe and make a directory called "eurofont". Copy all +the renamed .pfb files into /fonts/type1/adobe/eurofont + +[Note: Some PostScript font files come in ASCII, not binary. Such ".pfa" + files would go in the same directory as their pfb equivalents. Any virtual + font files ".vf" would go in the /fonts/vf/ directory tree.] + +You may also want to do the same with the AFM and PFM files so that certain +font conversion programs can access these as well. Put the renamed AFM and +PFM files in /fonts/afm/adobe/eurofont and +/fonts/pfm/adobe/eurofont, respectively. + +Unix users will have to have super user privileges to make changes to the + directory. + + + +Now, LaTeX's configuration will have to be updated so that it knows about +the new Adobe euro fonts. + + +Of the several LaTeX packages that do this, I think that two are the best. +The most complete, and complex, is Rowland McDonnell's eurofont package: + +http://www.ctan.org/tex-archive/macros/latex/contrib/eurofont/ + +This is an EXTREMELY comprehensive (and high quality) work. The user's +guide alone is over 60 pages. But, I'll show here how to install the +leaner, LaTeX euro package (this actually consists of two smaller LaTeX +packages "europs" and "eurosans"): + +http://www.ctan.org/tex-archive/fonts/euro/ + +Download and unpack this euro package archive. The readme.txt tells what +to do. But, I'll repeat the steps here in my own words. I will show how +to do things manually rather than rely on any automated install scripts. + +Some of these files (including the tfm and map files) may already be +installed in some LaTeX systems, you don't have to reinstall them if +that is the case. + + + +STEP #2 - INSTALL THE TFM METRIC FILES + +The tfm subdirectory (of the unpacked euro.tar.gz or euro.zip archive) +contains the tfm files for the Adobe fonts you just installed. These tfm +files need to be copied to: +/fonts/tfm/adobe/eurofont +make this /eurofont directory as needed. + + + +STEP #3 - INSTALL THE .sty and .fd FILES TO PROVIDE A USER INTERFACE + +OK, now at this point the LaTeX system has access to the PostScript +descriptions of the glyphs and their size metrics. Now, you need to provide +LaTeX with set of names that the euro glyphs will be called by. + +In the latex subdirectory of the archive there will be two packages: europs +and eurosans. eurosans restricts it's use to the sans euro because many +people who are knowledgeable in the typographic field feel that the sans +euro better matches with most fonts, including many popular serif ones such +as Times. eurosans also allows the user to specify an arbitrary scaling +factor so that the size of the euro can be adjusted (if needed) to more +closely match that of the surrounding text. The europs package allows you +to decide if you want a serif euro. It is easy enough to install them both. + + +Now, in your /tex/latex directory, make a directory called +"euro" i.e., /tex/latex/euro. + +Copy the eurosans.sty file into /tex/latex/euro. + +Now, in the europs package will have a europs.dtx and a europs.ins file. +Run latex on the europs.ins (e.g., latex europs.ins) to make the europs.sty +and the uzpeu.fd, uzpeus.fd, uzpeut.fd files. Copy these four files into +your /tex/latex/euro directory just like you did with eurosans.sty. + + + +STEP #4 - UPDATE THE DVIPS/PDFTEX/YAP/XDVI CONFIGURATION FILES + +OK, now LaTeX understands how to use these new fonts and users have LaTeX +commands that refer to them. + +The next step is to also inform dvips, pdfTeX, Yap, and/or xdvi, etc., +so that you can make and view documents with the euro symbol. + +The file you need is "zpeu.map" which is found in the dvips subdirectory of +the archive. There is also a "zpeu-origname.map" which will allow the use +of the original Adobe names (e.g., "_1______.PFB"), but it is best to change +the names, as mentioned previously, to follow the LaTeX convention (so as to +improve clarity and avoid future name clashes). + + +Font map handling has been changed to use an updmap utility in conjunction +with an updmap.cfg configuration file for the newer (teTeX 2.0, MiKTeX 2.4 +and later) LaTeX systems. Use one of the appropriate subsections below +depending on your system: + + +-- For Systems Older Than teTeX 2.0 or MiKTeX 2.4 -- +Copy zpeu.map to your /dvips/config directory. Now, in your +/dvips/config directory, edit your config.ps file (with a text editor) +and add the following line (somewhere after the "p psfonts.map" line - there +will be a bunch of other "p +" lines in this area): + +p +zpeu.map + +Save the changes to config.ps. + +For pdfTeX (and pdfLaTeX), the line: + +map +zpeu.map + +should be added to the pdftex.cfg file in the /pdftex/config +directory (there is no need to make another copy of the zpeu.map file as +pdfTeX will know to look for it in dvips' config directory). + +MiKTeX users will also want to add to the line: + +p +zpeu.map + +to the \miktex\config\config.makepk file so that Yap can find the +font if it does not already look at dvips' config.ps file. + +MiKTeX users may also want to add the lines contained in the zpeu.map to +\miktex\dvips\ps2pk\ps2pk.map for other applications that may need +it. + +MetaPost users may want to add the lines contained in the zpeu.map file to +the /dvips/config/psfonts.map file as that is what MetaPost relies +on. + +Older versions of xdvi that rely on gsftopk (to convert Type 1 fonts to +bitmap form) may also require the psfonts.map file to be updated. Newer +versions of (the Kpathsea enabled version "xdvi-k") xdvi are able to render +Type 1 fonts directly from the .pfb files. See Stefan Ulrich's xdvi-k site +on Sourceforge for details: +http://xdvi.sourceforge.net/ + +Note that versions of dvips prior to V5.83 have a bug with partial font +downloading that may cause a dvips error when using some types of fonts, +like the euro packages. (The error messages can be like: "File +ended before all chars have been found" or "xx Subr not found", etc.) +If you encounter this, the workaround is to update dvips or use the +-j0 option: + +dvips -j0 -o myfile.ps myfile + +Thanks to Dan Luecking for posting much information about map file +configuration. + +OK, now all the files are in place. Most TeX systems (teTeX Unix and MiKTeX +Windows) need to be told to rescan their directories in order to add the +names of all the newly added files to the lookup cache. + +In teTeX (and fpTeX), the command to run is "texhash" or "mktexlsr". + +In MiKTeX it is "initexmf -u" to refresh the filename database and then +"initexmf --mkpsres --search" to rebuild the PostScript resource database. +The MiKTeX Options application has a "Refresh Now" button which does the +same thing. + +These are the same commands that you run after you add any package to +LaTeX's directories. Run this application/command. + + + +-- For teTeX 2.0, MiKTeX 2.4 and Newer Systems -- +Copy zpeu.map to your /fonts/map/dvips/misc directory. Edit the +/web2c/updmap.cfg file with a text editor and add the line: + +Map zpeu.map + +Now, you will have to refresh the directory lookup (hash) tables so +that the LaTeX system can see the new zpeu.map file in the lookup cache. + +In teTeX (and fpTeX), the command to run is "texhash" or "mktexlsr". + +In MiKTeX use "initexmf -u" to refresh the filename database. The +MiKTeX Options application has a "Refresh Now" button which does the +same thing. + +Now, for teTeX 2.0 and MiKTeX systems, run the "updmap" command to update +the map file configuration. For teTeX 3.0 and later, the command you will +likely want to run is "updmap-sys" which updates the map files system-wide +(as "updmap" does in teTeX 2.0). (Under teTeX 3.0 and later, "updmap" updates +the map file settings only for the current user.) + + + +HOW TO USE THE EURO GLYPHS + +Now, you can use the euro packages. + +To use eurosans.sty, just: + +\usepackage{eurosans} + +and then \euro will produce the euro symbol that will be in sans. The other +attributes (series, shape) will vary with that of the surrounding font. + + +To use europs.sty, do a + +\usepackage{europs} + +then + +\EUR will produce a euro symbol that varies with the current font family +(serif, sans, or mono). +\EURofc will produce an "official" (old commission policy) euro symbol +that is always in sans. There is also: + +\EURhv (Euro-Sans) +\EURtm (Euro-Serif) +\EURcr (Euro-Mono) + + + +That was easy right? Enjoy! ;) + + + Mike Shell + +*********************************** diff -r 000000000000 -r 8319d82cab07 extras/tux.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extras/tux.eps Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,1958 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: GIMP PostScript file plugin V 1.11 by Peter Kirchgessner +%%Title: /home/mshell/IEEE/TEST/tux.ps +%%CreationDate: Fri Jul 27 14:59:35 2001 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 14 14 87 105 +%%EndComments +%%BeginPreview: 256 256 1 256 +% 0000000000000000000000000000000000000000000000000000000000000000 +% 0000000000000000000000000000000000000000000000000000000000000000 +% 0000000000000000000000000000000000000000000000000000000000000000 +% 0000000000000000000000000000000000000000000000000000000000000000 +% 0000000000000000000000000000000000000000000000000000000000000000 +% 0000000000000000000000000000000000000000000000000000000000000000 +% 0000000000000000000000000000000000000000000000000000000000000000 +% 00000000000000000000000000000001c0000000000000000000000000000000 +% 00000000000000000000000000003ffffffe0000000000000000000000000000 +% 0000000000000000000000000000ffffffff8000000000000000000000000000 +% 0000000000000000000000000007fffffffff000000000000000000000000000 +% 000000000000000000000000001ffffffffffc00000000000000000000000000 +% 00000000000000000000000000ffffffffffffc0000000000000000000000000 +% 00000000000000000000000001fffffffffffff0000000000000000000000000 +% 00000000000000000000000003fffffffffffff8000000000000000000000000 +% 0000000000000000000000000ffffffffffffffe000000000000000000000000 +% 0000000000000000000000003fffffffffffffff800000000000000000000000 +% 0000000000000000000000003fffffffffffffffe00000000000000000000000 +% 0000000000000000000000007ffffffffffffffff00000000000000000000000 +% 000000000000000000000000ffffffffffffd5fff80000000000000000000000 +% 000000000000000000000001ffffffffffffef7ffc0000000000000000000000 +% 000000000000000000000003ffffffffffffb2fffe0000000000000000000000 +% 000000000000000000000003ffffffffffffd5ffff0000000000000000000000 +% 000000000000000000000007ffffffffffffab5fff0000000000000000000000 +% 00000000000000000000000fffffffffffffeeffffc000000000000000000000 +% 00000000000000000000000fffffffffffff5bffffc000000000000000000000 +% 00000000000000000000001ffffffffffffff7ffffe000000000000000000000 +% 00000000000000000000001fffffffffffffbfffffe000000000000000000000 +% 00000000000000000000003ffffffffffffffffffff000000000000000000000 +% 00000000000000000000003ffffffffffffffffffff800000000000000000000 +% 00000000000000000000003ffffffffffffffffffff800000000000000000000 +% 00000000000000000000007ffffffffffffffffffffc00000000000000000000 +% 00000000000000000000007ffffffffffffffffffffc00000000000000000000 +% 00000000000000000000007ffffffffffffffffffffe00000000000000000000 +% 00000000000000000000007ffffffffffffffffffffe00000000000000000000 +% 00000000000000000000007ffffffffffffffffffffe00000000000000000000 +% 0000000000000000000000ffffffffffffffffffffff00000000000000000000 +% 0000000000000000000000ffffffffffffffffffffff00000000000000000000 +% 0000000000000000000000ffffffffffffffffffffff00000000000000000000 +% 0000000000000000000000fffffffffffffffbffffff00000000000000000000 +% 0000000000000000000000ffffffffffffffff7fffff80000000000000000000 +% 0000000000000000000000fffffefffffff5ffffffff80000000000000000000 +% 0000000000000000000000ffffffffffffaa3fffffff80000000000000000000 +% 0000000000000000000000fffd7ffffffea48fdfffff80000000000000000000 +% 0000000000000000000000ffe00ffffff54923ffffff80000000000000000000 +% 0000000000000000000000ffd525ffffea1005ffffff80000000000000000000 +% 0000000000000000000000ffa00bffffd48212ffffff80000000000000000000 +% 0000000000000000000000ffa892ffffe80005ffffff80000000000000000000 +% 0000000000000000000000ff40007fff800000bfffffc0000000000000000000 +% 0000000000000000000000ff00007fff0004007fffffc0000000000000000000 +% 0000000000000000000000fe80003fff003f803fffffc0000000000000000000 +% 0000000000000000000000ff07c03fff007fc03fffffc0000000000000000000 +% 0000000000000000000000fe1f703fff00fcb01fffffc0000000000000000000 +% 0000000000000000000000fe1f581fff01ff781fffffc0000000000000000000 +% 0000000000000000000000fe1fbc1fff01ff581fffffc0000000000000000000 +% 0000000000000000000000fe3fac3fdf03ffb81fffffc0000000000000000000 +% 0000000000000000000000fe3ffc1fff03fffc0fffffc0000000000000000000 +% 00000000000000000000007e3fee3fff83fff80fffffc0000000000000000000 +% 00000000000000000000007e3ffc3fff83fffc1fffffc0000000000000000000 +% 00000000000000000000007e1ffe7fffc3fff80fffffc0000000000000000000 +% 00000000000000000000007e1ffe800063fff81fffffc0000000000000000000 +% 00000000000000000000007e1ffe555511fff81fffffc0000000000000000000 +% 00000000000000000000007f0ff9400aa5fff01fffffc0000000000000000000 +% 00000000000000000000007f07f6955589ffe03fffffc0000000000000000000 +% 00000000000000000000007f81d120012017803fffffe0000000000000000000 +% 00000000000000000000007f814a0aaa0485007fffffe0000000000000000000 +% 00000000000000000000007f8150a0000010a0ffffffe0000000000000000000 +% 00000000000000000000007fc6a50a9048842bffffffe0000000000000000000 +% 00000000000000000000007ff94850020010807fffffe0000000000000000000 +% 00000000000000000000007fe52282480220091fffffe0000000000000000000 +% 00000000000000000000007fda8828004802405fffffe0000000000000000000 +% 00000000000000000000007fa52282910040081fffffe0000000000000000000 +% 00000000000000000000003f5448240001092aaffffff0000000000000000000 +% 00000000000000000000003eaa9288422400553ffffff0000000000000000000 +% 00000000000000000000003ea92021080049545ffffff0000000000000000000 +% 00000000000000000000003eaa4a84004402a2bffffff8000000000000000000 +% 00000000000000000000003ea4802891089d4a5ffffffc000000000000000000 +% 00000000000000000000003f522a8000002892bffffffc000000000000000000 +% 00000000000000000000003fe880248452d5293ffffffc000000000000000000 +% 00000000000000000000003fd52a8010815292bffdfffe000000000000000000 +% 00000000000000000000003ffd0011023ea44afffd5ffe000000000000000000 +% 00000000000000000000003feb548224e94aaa3ffeb7ff000000000000000000 +% 00000000000000000000003feec0244baa9150bffeabff000000000000000000 +% 00000000000000000000003fe5bd89ba552a821fff55ff800000000000000000 +% 00000000000000000000003fc15555454954244fff55ffc00000000000000000 +% 00000000000000000000003fcad5092aaaa9008fffaaffc00000000000000000 +% 00000000000000000000003fc0b5525255504017ffd5ffe00000000000000000 +% 00000000000000000000003fca5a84aaaaa28927ffd7fff00000000000000000 +% 00000000000000000000007fc016b54aaa040007fffffff80000000000000000 +% 00000000000000000000007fd48b555554908003fffffff80000000000000000 +% 0000000000000000000000ffc122eaada8240001fffffffc0000000000000000 +% 0000000000000000000001ffc8095ddaa2800001fffffffc0000000000000000 +% 0000000000000000000003ffc0a002a408100000fffffffe0000000000000000 +% 0000000000000000000003ff80055411512000007fffffff0000000000000000 +% 0000000000000000000007ff01200142020000007fffffff8000000000000000 +% 000000000000000000000fff000a4808480000003fffffff8000000000000000 +% 000000000000000000001ffe00201242000000001fffffffc000000000000000 +% 000000000000000000003ffc00094090800000001fffffffe000000000000000 +% 000000000000000000007ff800100a04100000000ffffffff000000000000000 +% 000000000000000000007ff8000290510000000007fffffff000000000000000 +% 00000000000000000001ffe0000422000000000007fffffff800000000000000 +% 00000000000000000003ffe0000084a00000000003fffffffc00000000000000 +% 00000000000000000003ffc0000010000000000003fffffffe00000000000000 +% 00000000000000000007ffc0000000000000000001fffffffe00000000000000 +% 0000000000000000001fff80000000000000000001ffffffff80000000000000 +% 0000000000000000003fff00000000000000000000ffffffffc0000000000000 +% 0000000000000000003fff00000000000000000000ffffffffe0000000000000 +% 0000000000000000007ffe00000000000000000000fffffffff0000000000000 +% 000000000000000001fffc000000000000000000007ffffffff8000000000000 +% 000000000000000003fffc000000000000000000007ffffffffc000000000000 +% 000000000000000003fff8000000000000000000007ffffffffe000000000000 +% 000000000000000007fff8000000000000000000007fffffffff000000000000 +% 00000000000000001ffff0000000000000000000003fffffffffc00000000000 +% 00000000000000003ffffa000000000000000000003fffffffffe00000000000 +% 00000000000000007ffff0000000000000000000003ffffffffff00000000000 +% 00000000000000007ffff4000000000000000000003ffffffffff00000000000 +% 0000000000000001ffffe9000000000000000000921ffffffffffc0000000000 +% 0000000000000001ffffe440000000000000124a040ffffffffffe0000000000 +% 0000000000000003ffffea9000000000000000104807fffffffffe0000000000 +% 0000000000000003ffffe80000000000000004811103ffffffffff0000000000 +% 0000000000000007ffffe20000000000000000042041ffdfffffff8000000000 +% 000000000000000fffffd40000000000000000004480ffffffffff8000000000 +% 000000000000000fffffc000000000000000000000007ffbffffffc000000000 +% 000000000000001fffffa000000000000000000002507fffffffffc000000000 +% 000000000000001fffff0000000000000000000000001fffbfffffe000000000 +% 000000000000001fffff0000000000000000000000081fffffffffe000000000 +% 000000000000003ffffe0000000000000000000000110fffeffffff000000000 +% 000000000000003ff7fe0000000000000000000000000ffffffffff000000000 +% 000000000000003ffffc00000000000000000000000207fffffffff800000000 +% 000000000000007feff800000000000000000000000043fffdfffff800000000 +% 000000000000007ffff800000000000000000000000003fffffffffc00000000 +% 000000000000007ffff000000000000000000000000041ffff7ffffc00000000 +% 00000000000000ffffe000000000000000000000000001ffbffffffe00000000 +% 00000000000000ff7fe000000000000000000000000000ff7ffffffe00000000 +% 00000000000001ffffc000000000000000000000000000fff7dfffff00000000 +% 00000000000001feffc000000000000000000000000000fedfffffff00000000 +% 00000000000003ffff00000000000000000000000000007fffefffff80000000 +% 00000000000003fdff00000000000000000000000000007fffffffff80000000 +% 00000000000003ffff00000000000000000000000000007ffff7ffff80000000 +% 00000000000007fbfe00000000000000000000000000003fffffffffc0000000 +% 0000000000000ffffc00000000000000000000000000003ffffbffffc0000000 +% 0000000000000ff7fc00000000000000000000000000003fffffffffe0000000 +% 0000000000000ffff800000000000000000000000000001fffffffffe0000000 +% 0000000000001feff800000000000000000000000000001ffffdffffe0000000 +% 0000000000003ffff000000000000000000000000000001ffffffffff0000000 +% 0000000000003fdff000000000000000000000000000001ffffdfffff0000000 +% 0000000000007fffe000000000000000000000000000001ffffffffff0000000 +% 0000000000007fbfe000000000000000000000000000001ffffdfffff0000000 +% 000000000000ffffe000000000000000000000000000000ffffffffff8000000 +% 000000000001ffffc000000000000000000000000000000ffffffffff8000000 +% 000000000001ff7fc000000000000000000000000000000ffffffffff8000000 +% 000000000003ffffc000000000000000000000000000000ffffffffff8000000 +% 000000000007ffff8000000000000000000000000000000ffffffffff8000000 +% 00000000000fff7f8000000000000000000000000000000ffffbfffffc000000 +% 00000000000fffff8000000000000000000000000000000ffffffffffc000000 +% 00000000001fff7f8000000000000000000000000000000ffffffffffc000000 +% 00000000003fff7f0000000000000000000000000000000ffff7fffffc000000 +% 00000000007fff7f0000000000000000000000000000000ffffffffffc000000 +% 00000000007fffff0000000000000000000000000000000ffffffffffc000000 +% 0000000000ffff7f0000000000000000000000000000000ffffffffffc000000 +% 0000000000ffff7f0000000000000000000000000000000ffffffffffc000000 +% 0000000000ffff7f0000000000000000000000000000000ffffffffffc000000 +% 0000000000fffd7f0000000000000000000000000000000ffffffffffc000000 +% 0000000001ffff7e0000000000000000000000000000000ffffffffffc000000 +% 0000000001ffffbf0000000000000000000000000000000ffffffffffc000000 +% 0000000001fffffe0000000000000000000000000000000ffffffffffc000000 +% 0000000001ffffbf0000000000000000000000000000000ffffffffffc000000 +% 0000000001fffffe0000000000000000000000000000000ffffffffffc000000 +% 0000000001ffffff0000000000000000000000000000001ffffffffff8000000 +% 0000000001fffffb0000000000000000000000000000001ffffffffff8000000 +% 0000000000ffbfff0000000000000000000000000000001ffffffefff8000000 +% 0000000000fa03fc8000000000000000000000000000001fffffffd7f8000000 +% 00000000005048ff8000000000000000000000000000003ffffffff7f0000000 +% 000000000025123fc000000000000000000000000000003ffffffffdf0000000 +% 0000000000a840bfe000000000000000000000000000003ffffffff7f0000000 +% 000000000042141ff000000000000000000000000000aa8ffffffffff0000000 +% 0000000001288143fe000000000000000000000000010027ffffffffa0000000 +% 0000000002822815fe00000000000000000000000002000fffffffff80000000 +% 0000000002548282ff800000000000000000000000025497ffffffff40000000 +% 0000000005202829ffc0000000000000000000000002800fffffffff08000000 +% 00000000094a82803ff0000000000000000000000000255ffffffffe21000000 +% 00000000141024255ffc000000000000000000000002881ffffffffc44000000 +% 0000000052a288883ffe0000000000000000000000022157fffffffa08800000 +% 00000aaaaa0821110fff000000000000000000000001442ffffffff8a1000000 +% 0005525544a2882257ffe000000000000000000000021157ffffffe408800000 +% 000524892908228403fff00000000000000000000004a42fffffffe952800000 +% 0014892442224420a5fff800000000000000000000020157ffffffc200800000 +% 000a52529444088a02fffe00000000000000000000295495ffffff54aa800000 +% 002904840088a110a97fff800000000000000000008202557ffffa8800800000 +% 005251295511082200ffffc00000000000000000000954957fffeaa2aa000000 +% 0014840000222284a53ffff000000000000000000122012aaffeaa1400800000 +% 0022295554844420085ffff800000000000000000005544aa952aaa154000000 +% 005480000120888aa12ffffe0000000000000000024881295555500a01400000 +% 00292aaaa40a1110081fffff00000000000000000002aa455555255054100000 +% 0052400008a08222a24fffff800000000000000001250094a54aa80201480000 +% 0024894a420a28440897ffffc000000000000000000a55252a5482a8a4100000 +% 0015221090a082089103fffff0000000000000000122a0489292540209440000 +% 00284842040910a12225ffffe0000000000000000005151249248150a0110000 +% 00128210a14224080442fffff8000000000000000095404492492a040a848000 +% 002a28840a104142a8897ffff0000000000000000002aa912492404940294000 +% 00128221404508100110bffff800000000000000009d10244924951015021000 +% 0014508a1510428554227ffff800000000000000001aa5411249004280544000 +% 000905104045142801441ffff800000000000000005d4814449055102a011400 +% 00155022148840814808affff000000000000000003a92a11105004500a84100 +% 000905048111122812a117ffe00000000000000000fd24044450551054021420 +% 0014a85028222082800a0bffc00000000000000001faa951110500450150a108 +% 000a0105028445102aa057ff800000000000000003fd42044448491052040450 +% 0015545050208825000a81fc000000000000000007fa94511111122204515104 +% 00088104850a110055200a8000000000000000001ffd210444422044a0840452 +% 00152a21104082550045514000000000000000007ffaaa51111045080a114884 +% 0009404822142800520802600000000000000000fffa80044445084140841112 +% 002a150284a102aa04a150a00000000000000001fffaaaa11110411414212224 +% 0014a05020045000a00a0528000000000000000ffff510084445144141084490 +% 002909050aa1054a0aa05058000000000000001ffffd45421110411414520928 +% 8055525040085010a009050c000000000000007ffff55014844488412100a248 +% 00280005154205220a90505600000000000001fffffd254021111212044a0930 +% 80a555504014a044402285158000000000001ffffff54815084420845110a540 +% 005400048a400a0894841055c000000000003ffffffd22805211042084451500 +% 815155481092a0a10110a527e00000000000fffffff548290084514a11105400 +% 00a4001142040a0828240095780000000007fffffffa92824a21040084455000 +% 8292aa8210a0a0a282815525ffc0000007ffffffffed482810885154292a8000 +% 01540028440a0908282a00957ffe802afffffffffffaa2828222040142540000 +% 82a2aa829140a2228280552adfffffffffffffffffea94282888a15414a80000 +% 01540028041408442425004afffffffffffffffffffaa102422208014aa00000 +% 02a95542a94142088888552b5fffffffffffffffffed4a508888a2aa54000000 +% 814a9014001410a111110095fffffffffffffffffff5200411120844ac000000 +% 82aa4aa15541450822222a555fffffffffffffffffdaaaa14220a29550000000 +% 0155554a4814104284444155fffffffffffffffffff5480a1445092ac0000000 +% 8055555552a2a51420888aab5fffffffffffffffffeea5504110555400000000 +% 000daaaaaaa910410a2224aafffffffffffffffffffaa885144522ac00000000 +% 8000755555554a9450888957b7ffffffffffffffffed55284110955000000000 +% 00000ed5555555210422255afffffffffffffffffffb5242944aaaa000000000 +% 8000001b6aaaaaaa51489557bfffffffffffffffffed55282125558000000000 +% 00000002ddb555554a12aabd7fffe0000000001ffffb55454aaaaf0000000000 +% 80000000176edaaaa4a4aad7ff800000000000000ffed5292495540000000000 +% 0000000002dbb5555555557dfe000000000000000075aaaaaaaab80000000000 +% 8000000000036feaaaaaabd7fc00000000000000003f6aaaaaabe00000000000 +% 0000000000003abdb55576bee000000000000000003ad5555556800000000000 +% 80000000000003eb6db6ddf78000000000000000003fbb55556d800000000000 +% 000000000000007edb6db76f0000000000000000001eeab555b7000000000000 +% 8000000000000003f6db6dfc00000000000000000007df6bbb6c000000000000 +% 00000000000000007ff7fff800000000000000000003fadd6ef8000000000000 +% 80000000000000001b5edbb000000000000000000000ffb7b5e0000000000000 +% 000000000000000003fbffc000000000000000000000777d7f80000000000000 +% 80000000000000000007f0000000000000000000000001ffe000000000000000 +% 0000000000000000000000000000000000000000000000000000000000000000 +% 8000000000000000000000000000000000000000000000000000000000000000 +% 0000000000000000000000000000000000000000000000000000000000000000 +% 8000000000000000000000000000000000000000000000000000000000000000 +% 0000000000000000000000000000000000000000000000000000000000000000 +% 8000000000000000000000000000000000000000000000000000000000000000 +% 0000000000000000000000000000000000000000000000000000000000000000 +% 8000000000000000000000000000000000000000000000000000000000000000 +% 0000000000000000000000000000000000000000000000000000000000000000 +% 8000000000000000000000000000000000000000000000000000000000000000 +% 0000000000000000000000000000000000000000000000000000000000000000 +%%EndPreview +%%BeginProlog +% Use own dictionary to avoid conflicts +10 dict begin +%%EndProlog +%%Page: 1 1 +% Translate for offset +14.173228 14.173228 translate +% Translate to begin of first scanline +0.000000 90.000000 translate +72.000000 -90.000000 scale +% Image geometry +256 320 8 +% Transformation matrix +[ 256 0 0 320 0 0 ] +% Strings to hold RGB-samples per scanline +/rstr 256 string def +/gstr 256 string def +/bstr 256 string def +{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} +true 3 +%%BeginData: 86888 ASCII Bytes +colorimage +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +K)bfOKE$H~> +K)bfOKE$H~> +K)bfOKE$H~> +N;r5GMuS;~> +N;r5GMuS;~> +N;r5GMuS;~> +O8n8BOT0h~> +O8n8BOT0h~> +O8n8BOT0h~> +OoO>@P5g%~> +OoO>@P5g%~> +OoO>@P5g%~> +PlKG=Q2c@~> +PlKG=Q2c@~> +PlKG=Q2c@~> +QN,M;QiDR~> +QN,M;QiDR~> +QN,M;QiDR~> +QiGM9RK%d~> +QiGM9RK%d~> +QiGM9RK%d~> +RK(S7S,\!~> +RK(S7S,\!~> +RK(S7S,\!~> +RfCb:!!`B'Sc=3~> +RfCb:!!`B'Sc=3~> +RfCb:!!`B'Sc=3~> +S,^e9!!`B'T)X<~> +S,^e9!!`B'T)X<~> +S,^e9!!`B'T)X<~> +Sc?\2T`9N~> +Sc?\2T`9N~> +Sc?\2T`9N~> +T)[7@rW`#sU&TW~> +T)[7@rW`#sU&TW~> +T)[7@rW`#sU&TW~> +TE!CB"q2.a)\WVgp&^ugJ,~> +TE!CB"q2.a)\WVgp&^ugJ,~> +TE!CB"q2.a)\WVgp&^ugJ,~> +TE!FC$4IRe,V1Jl)\WVap]:F"V#Pr~> +TE!FC$4IRe,V1Jl)\WVap]:F"V#Pr~> +TE!FC$4IRe,V1Jl)\WVap]:F"V#Pr~> +T`\T7'+>*@!WWG$s*t~> +T`\T7'+>*@!WWG$s*t~> +T`\T7'+>*@!WWG$s*t~> +U&WUD%La!r/3H +U&WUD%La!r/3H +U&WUD%La!r/3H +UAr^ErsTAN,V2>[>\%)>6p*">'*e76VZ2/~> +UAr^ErsTAN,V2>[>\%)>6p*">'*e76VZ2/~> +UAr^ErsTAN,V2>[>\%)>6p*">'*e76VZ2/~> +UAr^E&I&X_,W%nhA8>sk>Y6h()\WYU!iQ'K~> +UAr^E&I&X_,W%nhA8>sk>Y6h()\WYU!iQ'K~> +UAr^E&I&X_,W%nhA8>sk>Y6h()\WYU!iQ'K~> +U]8aD&I]=(1eM"gI!f^?:cp9S)[lrH!iZ-L~> +U]8aD&I]=(1eM"gI!f^?:cp9S)[lrH!iZ-L~> +U]8aD&I]=(1eM"gI!f^?:cp9S)[lrH!iZ-L~> +U]8aD&e#F!4A]R1I!g$H +U]8aD&e#F!4A]R1I!g$H +U]8aD&e#F!4A]R1I!g$H +V#SgD&e#^)4A]R1I!g$H>XU\2,T@C*q#[PqJ,~> +V#SgD&e#^)4A]R1I!g$H>XU\2,T@C*q#[PqJ,~> +V#SgD&e#^)4A]R1I!g$H>XU\2,T@C*q#[PqJ,~> +V#SgD'+>g24A]R1FDGYs:ddE&/0l/J%/Bt)s*t~> +V#SgD'+>g24A]R1FDGYs:ddE&/0l/J%/Bt)s*t~> +V#SgD'+>g24A]R1FDGYs:ddE&/0l/J%/Bt)s*t~> +V>nmD'+>g26r7E9CLg[H6p*:_/0l/J%/9n)s*t~> +V>nmD'+>g26r7E9CLg[H6p*:_/0l/J%/9n)s*t~> +V>nmD'+>g26r7E9CLg[H6p*:_/0l/J%/9n)s*t~> +V>npE%0dIb/3Ha6A6`,26p*=*/-I4;'+>*@!iu?O~> +V>npE%0dIb/3Ha6A6`,26p*=*/-I4;'+>*@!iu?O~> +V>npE%0dIb/3Ha6A6`,26p*=*/-I4;'+>*@!iu?O~> +VZ5!E"U5VZ/3H?":^]ZR1b:0s)^H@9$jQG-XT*e~> +VZ5!E"U5VZ/3H?":^]ZR1b:0s)^H@9$jQG-XT*e~> +VZ5!E"U5VZ/3H?":^]ZR1b:0s)^H@9$jQG-XT*e~> +VZ5!ErsT5R,W%nO6o6_O,UE:$rs\T&XT*e~> +VZ5!ErsT5R,W%nO6o6_O,UE:$rs\T&XT*e~> +VZ5!ErsT5R,W%nO6o6_O,UE:$rs\T&XT*e~> +VZ5!E&I] +VZ5!E&I] +VZ5!E&I] +VuP$D!Xo_]r?VCVrs\8rXoEn~> +VuP$D!Xo_]r?VCVrs\8rXoEn~> +VuP$D!Xo_]r?VCVrs\8rXoEn~> +VuP'E!X9&Ar"B&7l2gqiY5a"~> +VuP'E!X9&Ar"B&7l2gqiY5a"~> +VuP'E!X9&Ar"B&7l2gqiY5a"~> +VuP$D"U5AD',(T5!j;QR~> +VuP$D"U5AD',(T5!j;QR~> +VuP$D"U5AD',(T5!j;QR~> +W;k*DrsSr5!Y"/lYQ'+~> +W;k*DrsSr5!Y"/lYQ'+~> +W;k*DrsSr5!Y"/lYQ'+~> +W;iq#YQ'+~> +W;iq#YQ'+~> +W;iq#YQ'+~> +W;iq#YQ'+~> +W;iq#YQ'+~> +W;iq#YQ'+~> +W;in"YlB4~> +W;in"YlB4~> +W;in"YlB4~> +W;in"YlB4~> +W;in"YlB4~> +W;in"YlB4~> +W;in"YlB4~> +W;in"YlB4~> +W;in"YlB4~> +WW/q!Z2]=~> +WW/q!Z2]=~> +WW/q!Z2]=~> +WW1*B!!_B`Z2]=~> +WW1*B!!_B`Z2]=~> +WW1*B!!_B`Z2]=~> +WW2Ji"9o8C"pX,i"pP,5!X9;HrY,;?k5qpgJ,~> +WW2Ji"9o8C"pX,i"pP,5!X9;HrY,;?k5qpgJ,~> +WW2Ji"9o8C"pX,i"pP,5!X9;HrY,;?k5qpgJ,~> +WW2Vm!!`?0rY#;@#2fR_'*TX41d!#lklS-iJ,~> +WW2Vm!!`?0rY#;@#2fR_'*TX41d!#lklS-iJ,~> +WW2Vm!!`?0rY#;@#2fR_'*TX41d!#lklS-iJ,~> +WW2\or!Wi8$l^H;//o!%hZ +WW2\or!Wi8$l^H;//o!%hZ +WW2\or!Wi8$l^H;//o!%hZ +WW2_p!sT/B#5nT.$l_#k6nAu[n,`Ron,`b,1f.^N'C,_)s*t~> +WW2_p!sT/B#5nT.$l_#k6nAu[n,`Ron,`b,1f.^N'C,_)s*t~> +WW2_p!sT/B#5nT.$l_#k6nAu[n,`Ron,`b,1f.^N'C,_)s*t~> +WW2bqrs\])rsT&M/4;$hlr#580%"qqpp%/^/1$m\YS1^<7IZN#F~> +WW2bqrs\])rsT&M/4;$hlr#580%"qqpp%/^/1$m\YS1^<7IZN#F~> +WW2bqrs\])rsT&M/4;$hlr#580%"qqpp%/^/1$m\YS1^<7IZN#F~> +WW2;d"UlYE1`HYc!X]>]8mH.RCMQoq#6"Z,"rfru)s[R2s*t~> +WW2;d"UlYE1`HYc!X]>]8mH.RCMQoq#6"Z,"rfru)s[R2s*t~> +WW2;d"UlYE1`HYc!X]>]8mH.RCMQoq#6"Z,"rfru)s[R2s*t~> +WW2Sl"9oej)\`/O":QhL1_]\eG/KDh#:K3Tr9rW30@6o5SD!j_iV~> +WW2Sl"9oej)\`/O":QhL1_]\eG/KDh#:K3Tr9rW30@6o5SD!j_iV~> +WW2Sl"9oej)\`/O":QhL1_]\eG/KDh#:K3Tr9rW30@6o5SD!j_iV~> +WW2Yn#SSahFG#3]:`KB8"<00c,RjDK!"Ac,#Ri7aA9<3XN0O=3%&Bu+PXGo]!XpVB,Rj&AZN#F~> +WW2Yn#SSahFG#3]:`KB8"<00c,RjDK!"Ac,#Ri7aA9<3XN0O=3%&Bu+PXGo]!XpVB,Rj&AZN#F~> +WW2Yn#SSahFG#3]:`KB8"<00c,RjDK!"Ac,#Ri7aA9<3XN0O=3%&Bu+PXGo]!XpVB,Rj&AZN#F~> +WW2\o&K=PgN1?uNS:bT6$j$J=,U +WW2\o&K=PgN1?uNS:bT6$j$J=,U +WW2\o&K=PgN1?uNS:bT6$j$J=,U +WW2_p%3&Q"Panhg`5K?RF@m5G!rir/!WWH'!Y#f8A9<3XPa%]6XL,(9rko/f]pq\."p+i1'+F:1 +ZN#F~> +WW2_p%3&Q"Panhg`5K?RF@m5G!rir/!WWH'!Y#f8A9<3XPa%]6XL,(9rko/f]pq\."p+i1'+F:1 +ZN#F~> +WW2_p%3&Q"Panhg`5K?RF@m5G!rir/!WWH'!Y#f8A9<3XPa%]6XL,(9rko/f]pq\."p+i1'+F:1 +ZN#F~> +WW2bq'+@K\N1?u_`5K@&[#BB)'*84D%/9l(#6"Z/'1?AQN/X:&ri?+,rk/T]eBGkEUk:K;rW<*5 +mK0]oJ,~> +WW2bq'+@K\N1?u_`5K@&[#BB)'*84D%/9l(#6"Z/'1?AQN/X:&ri?+,rk/T]eBGkEUk:K;rW<*5 +mK0]oJ,~> +WW2bq'+@K\N1?u_`5K@&[#BB)'*84D%/9l(#6"Z/'1?AQN/X:&ri?+,rk/T]eBGkEUk:K;rW<*5 +mK0]oJ,~> +WW2bq'I7dQPbc"2bfn#D[%*)&6k]b+$jQA+#qTV/N1?uV[(X0O`;e$ieBGV5Ul9(."p+i1%.42& +s*t~> +WW2bq'I7dQPbc"2bfn#D[%*)&6k]b+$jQA+#qTV/N1?uV[(X0O`;e$ieBGV5Ul9(."p+i1%.42& +s*t~> +WW2bq'I7dQPbc"2bfn#D[%*)&6k]b+$jQA+#qTV/N1?uV[(X0O`;e$ieBGV5Ul9(."p+i1%.42& +s*t~> +WW2er#n0XXN23Pg`6?1!]`k3rN-llZo)]dC +WW2er#n0XXN23Pg`6?1!]`k3rN-llZo)]dC +WW2er#n0XXN23Pg`6?1!]`k3rN-llZo)]dC +WW2er#TI<,S>h!F\*q>CTkrTr=HS:"imklS3kJ,~> +WW2er#TI<,S>h!F\*q>CTkrTr=HS:"imklS3kJ,~> +WW2er#TI<,S>h!F\*q>CTkrTr=HS:"imklS3kJ,~> +WW2hs#6m;4PdJBam/-_bo_nF;X;gd5"U85%[+tO~> +WW2hs#6m;4PdJBam/-_bo_nF;X;gd5"U85%[+tO~> +WW2hs#6m;4PdJBam/-_bo_nF;X;gd5"U85%[+tO~> +WW2hs$3jLh^"i8YrUg'\qY^HU;"Oel)hYiZo_SLijKt/IeF`b=#5%lme>.1*l2n +WW2hs$3jLh^"i8YrUg'\qY^HU;"Oel)hYiZo_SLijKt/IeF`b=#5%lme>.1*l2n +WW2hs$3jLh^"i8YrUg'\qY^HU;"Oel)hYiZo_SLijKt/IeF`b=#5%lme>.1*l2n +WW2hs$k-pQjRiECm**Dlm.C5S!q_ueo`>4HUs.osr +WW2hs$k-pQjRiECm**Dlm.C5S!q_ueo`>4HUs.osr +WW2hs$k-pQjRiECm**Dlm.C5S!q_ueo`>4HUs.osr +WW2hs%3'rDo_na<>U0t%4J_?Ar;k+fq>pX$r;m*iUs/2trV[)iF;"]W$l^H24LG%b"8()J%-mu$ +s*t~> +WW2hs%3'rDo_na<>U0t%4J_?Ar;k+fq>pX$r;m*iUs/2trV[)iF;"]W$l^H24LG%b"8()J%-mu$ +s*t~> +WW2hs%3'rDo_na<>U0t%4J_?Ar;k+fq>pX$r;m*iUs/2trV[)iF;"]W$l^H24LG%b"8()J%-mu$ +s*t~> +WW2hs%O@k:rVbe>!WicU,SPRlrVZc`9)A\i%/g509!$8/rVZfiK+._\#;gOE8gGsho_n^ioSaIL +!jhoW~> +WW2hs%O@k:rVbe>!WicU,SPRlrVZc`9)A\i%/g509!$8/rVZfiK+._\#;gOE8gGsho_n^ioSaIL +!jhoW~> +WW2hs%O@k:rVbe>!WicU,SPRlrVZc`9)A\i%/g509!$8/rVZfiK+._\#;gOE8gGsho_n^ioSaIL +!jhoW~> +WW2hs!Be="oEosI!X:c/A3;-%o`"droR$iO$jHb7$k*@>!Wu9#eF`b=!qa/>rW3B1/9I,8A0a"] +o_n^hZlA<4Zi>O~> +WW2hs!Be="oEosI!X:c/A3;-%o`"droR$iO$jHb7$k*@>!Wu9#eF`b=!qa/>rW3B1/9I,8A0a"] +o_n^hZlA<4Zi>O~> +WW2hs!Be="oEosI!X:c/A3;-%o`"droR$iO$jHb7$k*@>!Wu9#eF`b=!qa/>rW3B1/9I,8A0a"] +o_n^hZlA<4Zi>O~> +WW)r&quR$ubk1kp/H,\T1lR&t//uh3r;i,arXAf.rtGA5"9r,4eF`b=!UNGV!XK2sFGu/T$tT#/ +r;tJ"%."&%s*t~> +WW)r&quR$ubk1kp/H,\T1lR&t//uh3r;i,arXAf.rtGA5"9r,4eF`b=!UNGV!XK2sFGu/T$tT#/ +r;tJ"%."&%s*t~> +WW)r&quR$ubk1kp/H,\T1lR&t//uh3r;i,arXAf.rtGA5"9r,4eF`b=!UNGV!XK2sFGu/T$tT#/ +r;tJ"%."&%s*t~> +WW)r&quR$oeEm.@%/p;;)dIc<49B>dW#Qrqul2%/L#01jjpk"t\R. +r;uUf'C5e,s*t~> +WW)r&quR$oeEm.@%/p;;)dIc<49B>dW#Qrqul2%/L#01jjpk"t\R. +r;uUf'C5e,s*t~> +WW)r&quR$oeEm.@%/p;;)dIc<49B>dW#Qrqul2%/L#01jjpk"t\R. +r;uUf'C5e,s*t~> +WW2hs"AmV7oP=@+$oE'J<=C_FrVcAa',1?a%Q$dS:dc6,>\eEp' +WW2hs"AmV7oP=@+$oE'J<=C_FrVcAa',1?a%Q$dS:dc6,>\eEp' +WW2hs"AmV7oP=@+$oE'J<=C_FrVcAa',1?a%Q$dS:dc6,>\eEp' +WW2hs"C0IKrCZth$6)fHCE"5+rVcAir=]5O,V8pW#t-=@XOQn@rTlZC!rio +WW2hs"C0IKrCZth$6)fHCE"5+rVcAir=]5O,V8pW#t-=@XOQn@rTlZC!rio +WW2hs"C0IKrCZth$6)fHCE"5+rVcAir=]5O,V8pW#t-=@XOQn@rTlZC!rio +WW2hs"BEtDoK<$Q$4JI^CFfOGrVc)Qr +WW2hs"BEtDoK<$Q$4JI^CFfOGrVc)Qr +WW2hs"BEtDoK<$Q$4JI^CFfOGrVc)Qr +W;lbs##NP1oL')lrW3H3)am:3!c.c5luWI-!X]>T$k,8"h":R+,k_<>'*85Gm/Hqbm%b'V!jhoW~> +W;lbs##NP1oL')lrW3H3)am:3!c.c5luWI-!X]>T$k,8"h":R+,k_<>'*85Gm/Hqbm%b'V!jhoW~> +W;lbs##NP1oL')lrW3H3)am:3!c.c5luWI-!X]>T$k,8"h":R+,k_<>'*85Gm/Hqbm%b'V!jhoW~> +W;lbs##NP1rF?QMrW3H3'/WN!!c.H,`%2>l!XT8:!ZR*Jo_mPjo)\r'o`"djm%b'V!jhoW~> +W;lbs##NP1rF?QMrW3H3'/WN!!c.H,`%2>l!XT8:!ZR*Jo_mPjo)\r'o`"djm%b'V!jhoW~> +W;lbs##NP1rF?QMrW3H3'/WN!!c.H,`%2>l!XT8:!ZR*Jo_mPjo)\r'o`"djm%b'V!jhoW~> +W;lbs"[p;qoR$l?!ZVk)$j'u3lt[7E(*bCi0eFn#+X%U*,[A:SrTkg$!WdE8rquobS.k5jZi>O~> +W;lbs"[p;qoR$l?!ZVk)$j'u3lt[7E(*bCi0eFn#+X%U*,[A:SrTkg$!WdE8rquobS.k5jZi>O~> +W;lbs"[p;qoR$l?!ZVk)$j'u3lt[7E(*bCi0eFn#+X%U*,[A:SrTkg$!WdE8rquobS.k5jZi>O~> +W;lbs"Z3pRoX#&'!ZM=F!c.5"3CIJ2MMdRSL6@FGH>,c%1n<@noK;^H!1a#d!p#:KliONnJ,~> +W;lbs"Z3pRoX#&'!ZM=F!c.5"3CIJ2MMdRSL6@FGH>,c%1n<@noK;^H!1a#d!p#:KliONnJ,~> +W;lbs"Z3pRoX#&'!ZM=F!c.5"3CIJ2MMdRSL6@FGH>,c%1n<@noK;^H!1a#d!p#:KliONnJ,~> +W;lbs"WOQ(o\:D[!X3,:FafXRriQd4Y,8A-Y-kF0NH&!ho^mP'!WieSo`"djjEqC&!jhoW~> +W;lbs"WOQ(o\:D[!X3,:FafXRriQd4Y,8A-Y-kF0NH&!ho^mP'!WieSo`"djjEqC&!jhoW~> +W;lbs"WOQ(o\:D[!X3,:FafXRriQd4Y,8A-Y-kF0NH&!ho^mP'!WieSo`"djjEqC&!jhoW~> +W;lbs"q6aWo_ik9q#Up><.^:&X1#UI['$_5XoPp0Xp22.L7@8J%eTl'AGuH.o[H_'!jhoW~> +W;lbs"q6aWo_ik9q#Up><.^:&X1#UI['$_5XoPp0Xp22.L7@8J%eTl'AGuH.o[H_'!jhoW~> +W;lbs"q6aWo_ik9q#Up><.^:&X1#UI['$_5XoPp0Xp22.L7@8J%eTl'AGuH.o[H_'!jhoW~> +W;l_r#&D`\o\;8BquR92/T$<'Kp&:?[^NKIriQ[&MLL"sP,u+#Y*QIrp&Y7?bl.JBm)1._liONn +J,~> +W;l_r#&D`\o\;8BquR92/T$<'Kp&:?[^NKIriQ[&MLL"sP,u+#Y*QIrp&Y7?bl.JBm)1._liONn +J,~> +W;l_r#&D`\o\;8BquR92/T$<'Kp&:?[^NKIriQ[&MLL"sP,u+#Y*QIrp&Y7?bl.JBm)1._liONn +J,~> +W;l_r#!Bijo_kj)r;mfV;L=+LD0qbT[C3NN[^<3?VN#_4<,%Z$rjDp3MF\NY!WaRRr;?]PPRQjZ +Zi>O~> +W;l_r#!Bijo_kj)r;mfV;L=+LD0qbT[C3NN[^<3?VN#_4<,%Z$rjDp3MF\NY!WaRRr;?]PPRQjZ +Zi>O~> +W;l_r#!Bijo_kj)r;mfV;L=+LD0qbT[C3NN[^<3?VN#_4<,%Z$rjDp3MF\NY!WaRRr;?]PPRQjZ +Zi>O~> +W;l_r'I9L8o_n`Q$j$JcBR>GhJpWui[C-"B%(*IMY,nLtQ@aja[(H=G"L>1n<#tl +W;l_r'I9L8o_n`Q$j$JcBR>GhJpWui[C-"B%(*IMY,nLtQ@aja[(H=G"L>1n<#tl +W;l_r'I9L8o_n`Q$j$JcBR>GhJpWui[C-"B%(*IMY,nLtQ@aja[(H=G"L>1n<#tl +W;l_r)$Y34m/?nTN#ONiI>*ZHU8G6%[C* +W;l_r)$Y34m/?nTN#ONiI>*ZHU8G6%[C* +W;l_r)$Y34m/?nTN#ONiI>*ZHU8G6%[C* +W;l\q&k'\!o_naVMfjH%NLQcFZEgmDrO)^5r4<]X]>MP,b/VK>_7dIo]sb)@P')i0m/Hqco^((( +kQ8-kJ,~> +W;l\q&k'\!o_naVMfjH%NLQcFZEgmDrO)^5r4<]X]>MP,b/VK>_7dIo]sb)@P')i0m/Hqco^((( +kQ8-kJ,~> +W;l\q&k'\!o_naVMfjH%NLQcFZEgmDrO)^5r4<]X]>MP,b/VK>_7dIo]sb)@P')i0m/Hqco^((( +kQ8-kJ,~> +W;l\q)&&OYjRhf7H\-s2QD1Fc[Bd6H[^*?M['[IE_>_@PaoTf4rlPku`l>p0]!ec=S!9GF`8o_' +S.+T_[/YX~> +W;l\q)&&OYjRhf7H\-s2QD1Fc[Bd6H[^*?M['[IE_>_@PaoTf4rlPku`l>p0]!ec=S!9GF`8o_' +S.+T_[/YX~> +W;l\q)&&OYjRhf7H\-s2QD1Fc[Bd6H[^*?M['[IE_>_@PaoTf4rlPku`l>p0]!ec=S!9GF`8o_' +S.+T_[/YX~> +W;lYp(IYX[m$E'NKoM7dVQR51[^EQL[^NQT]DfVe`lcHLb0J;\c-FSYbfIlC_nEalX/;GRMhQRu +0b!7I[/YX~> +W;lYp(IYX[m$E'NKoM7dVQR51[^EQL[^NQT]DfVe`lcHLb0J;\c-FSYbfIlC_nEalX/;GRMhQRu +0b!7I[/YX~> +W;lYp(IYX[m$E'NKoM7dVQR51[^EQL[^NQT]DfVe`lcHLb0J;\c-FSYbfIlC_nEalX/;GRMhQRu +0b!7I[/YX~> +W;ci%q>q$5Pg#&4I>*]IS"ct_Z2qD>r3cX<[/RlC_oBjucMc/oc,e,MaSs*W]aD?_[]Z[*QATN<% +-[i#s*t~> +W;ci%q>q$5Pg#&4I>*]IS"ct_Z2qD>r3cX<[/RlC_oBjucMc/oc,e,MaSs*W]aD?_[]Z[*QATN<% +-[i#s*t~> +W;ci%q>q$5Pg#&4I>*]IS"ct_Z2qD>r3cX<[/RlC_oBjucMc/oc,e,MaSs*W]aD?_[]Z[*QATN<% +-[i#s*t~> +W;lYp%h(pAG_1X*OHuH6X/iP3[JdNH] +W;lYp%h(pAG_1X*OHuH6X/iP3[JdNH] +W;lYp%h(pAG_1X*OHuH6X/iP3[JdNH] +W;lYp$lrSqH\.'8QCFVLX02B+%^raV]>;+q_8aL;cHak_rmCekrlk>^&'W,=bfJ#L_oKg+ZD)[t% +-mu%s*t~> +W;lYp$lrSqH\.'8QCFVLX02B+%^raV]>;+q_8aL;cHak_rmCekrlk>^&'W,=bfJ#L_oKg+ZD)[t% +-mu%s*t~> +W;lYp$lrSqH\.'8QCFVLX02B+%^raV]>;+q_8aL;cHak_rmCekrlk>^&'W,=bfJ#L_oKg+ZD)[t% +-mu%s*t~> +W;l\q$mT#"I=6g0P*VZ8X02H-rO**G[(Erd_8F:4b0J<2df7Sebl,W_bQl57a2>3P>8HN+[/YX~> +W;l\q$mT#"I=6g0P*VZ8X02H-rO**G[(Erd_8F:4b0J<2df7Sebl,W_bQl57a2>3P>8HN+[/YX~> +W;l\q$mT#"I=6g0P*VZ8X02H-rO**G[(Erd_8F:4b0J<2df7Sebl,W_bQl57a2>3P>8HN+[/YX~> +W;l_r&JeetH[UL%Ng?61V5po-[^*=?[f3o<_>hLTb5T]cde_/iaNV`Hrlk>^#KFg0a1\?p-gLi@ +s*t~> +W;l_r&JeetH[UL%Ng?61V5po-[^*=?[f3o<_>hLTb5T]cde_/iaNV`Hrlk>^#KFg0a1\?p-gLi@ +s*t~> +W;l_r&JeetH[UL%Ng?61V5po-[^*=?[f3o<_>hLTb5T]cde_/iaNV`Hrlk>^#KFg0a1\?p-gLi@ +s*t~> +W;lbs%0eS.H[UL%LmF@$V5pZqZMq97]`b`k25O#/8-h +V0FKplN4KoJ,~> +W;lbs%0eS.H[UL%LmF@$V5pZqZMq97]`b`k25O#/8-h +V0FKplN4KoJ,~> +W;lbs%0eS.H[UL%LmF@$V5pZqZMq97]`b`k25O#/8-h +V0FKplN4KoJ,~> +VuQ\s,9:3;I=6^-LmFU.X/iP/[C3KK[^Nfa_7RP"`l?0DdaHFhdeV,da8jH`a:#nmNHKi1ZFd]; +Bd;mE[Jta~> +VuQ\s,9:3;I=6^-LmFU.X/iP/[C3KK[^Nfa_7RP"`l?0DdaHFhdeV,da8jH`a:#nmNHKi1ZFd]; +Bd;mE[Jta~> +VuQ\s,9:3;I=6^-LmFU.X/iP/[C3KK[^Nfa_7RP"`l?0DdaHFhdeV,da8jH`a:#nmNHKi1ZFd]; +Bd;mE[Jta~> +VuQ_t%Lb+5GC>(!Lm"3tV5pZ"rNcI3s18<=]DfVJ_og.#dKIh9bfn0-bl>`cbfJ$-a:,\^L37K\ +QD1F\NE[(]!k&&Y~> +VuQ_t%Lb+5GC>(!Lm"3tV5pZ"rNcI3s18<=]DfVJ_og.#dKIh9bfn0-bl>`cbfJ$-a:,\^L37K\ +QD1F\NE[(]!k&&Y~> +VuQ_t%Lb+5GC>(!Lm"3tV5pZ"rNcI3s18<=]DfVJ_og.#dKIh9bfn0-bl>`cbfJ$-a:,\^L37K\ +QD1F\NE[(]!k&&Y~> +VuQ_t'F[BRH[U`dbfIlLrl>Sc]7tWdJrQLo +U8=NB9Fg=h[Jta~> +VuQ_t'F[BRH[U`dbfIlLrl>Sc]7tWdJrQLo +U8=NB9Fg=h[Jta~> +VuQ_t'F[BRH[U`dbfIlLrl>Sc]7tWdJrQLo +U8=NB9Fg=h[Jta~> +VuQ_t$k-$VH[UL%Ng?61X/l3)!4Dg7!OTK;_#_QurQYGlbl5ZebfJ#PaNXV(#/QjQHAIZKrLNt_ +!fBAUklS +VuQ_t$k-$VH[UL%Ng?61X/l3)!4Dg7!OTK;_#_QurQYGlbl5ZebfJ#PaNXV(#/QjQHAIZKrLNt_ +!fBAUklS +VuQ_t$k-$VH[UL%Ng?61X/l3)!4Dg7!OTK;_#_QurQYGlbl5ZebfJ#PaNXV(#/QjQHAIZKrLNt_ +!fBAUklS +VuQ_t(CX8eH[UL+QC=A=X/iP6[^ENK[_&u[]DfYGb5]lpcH+)NaN2TLqoBAh["`:HOHu3%SYDjL +SYD*3%-[i%s*t~> +VuQ_t(CX8eH[UL+QC=A=X/iP6[^ENK[_&u[]DfYGb5]lpcH+)NaN2TLqoBAh["`:HOHu3%SYDjL +SYD*3%-[i%s*t~> +VuQ_t(CX8eH[UL+QC=A=X/iP6[^ENK[_&u[]DfYGb5]lpcH+)NaN2TLqoBAh["`:HOHu3%SYDjL +SYD*3%-[i%s*t~> +VuQ_t%gG^MH\I08QCXSCX/iP7[J[K4]Do\J`l%f$"jP-4bfJ$-a8jH_a9obVF_uqtQBmu1UAUP` +O@TlF!k82[~> +VuQ_t%gG^MH\I08QCXSCX/iP7[J[K4]Do\J`l%f$"jP-4bfJ$-a8jH_a9obVF_uqtQBmu1UAUP` +O@TlF!k82[~> +VuQ_t%gG^MH\I08QCXSCX/iP7[J[K4]Do\J`l%f$"jP-4bfJ$-a8jH_a9obVF_uqtQBmu1UAUP` +O@TlF!k82[~> +VuQ\s$o(t"H\.QQU8=]eX0V`4&\>Ea]=Ynk_8aL4cHaSXaN2U'aSs0`_6er/H]=?hSc>GaSHG=O +Lc=Ju\,Us~> +VuQ\s$o(t"H\.QQU8=]eX0V`4&\>Ea]=Ynk_8aL4cHaSXaN2U'aSs0`_6er/H]=?hSc>GaSHG=O +Lc=Ju\,Us~> +VuQ\s$o(t"H\.QQU8=]eX0V`4&\>Ea]=Ynk_8aL4cHaSXaN2U'aSs0`_6er/H]=?hSc>GaSHG=O +Lc=Ju\,Us~> +VuQ\s$4J.74CO,:V5:5urjD[4s1A6G!65#\&^8>;bfJ#L`l#X4_7Q@[D1[fIQMR0PRKAdp*Vfa= +$l^H*o)cE$J,~> +VuQ\s$4J.74CO,:V5:5urjD[4s1A6G!65#\&^8>;bfJ#L`l#X4_7Q@[D1[fIQMR0PRKAdp*Vfa= +$l^H*o)cE$J,~> +VuQ\s$4J.74CO,:V5:5urjD[4s1A6G!65#\&^8>;bfJ#L`l#X4_7Q@[D1[fIQMR0PRKAdp*Vfa= +$l^H*o)cE$J,~> +VuQYr'FZ`_7T=u4X/iP6ZF.*O]">D_]>=Eb#gC<4bfJ#LaN"4q#eQaP@<.0eQC@cCs.]Oa"e(gA +Lc5b +VuQYr'FZ`_7T=u4X/iP6ZF.*O]">D_]>=Eb#gC<4bfJ#LaN"4q#eQaP@<.0eQC@cCs.]Oa"e(gA +Lc5b +VuQYr'FZ`_7T=u4X/iP6ZF.*O]">D_]>=Eb#gC<4bfJ#LaN"4q#eQaP@<.0eQC@cCs.]Oa"e(gA +Lc5b +VuQVq)BD+=:.]/hVR!V<[^roU]">er_oBU3`luHHrQ"uYrkSrRTP[A5JrPqZR[X)D"d4\%Na!1l +!X9 +VuQVq)BD+=:.]/hVR!V<[^roU]">er_oBU3`luHHrQ"uYrkSrRTP[A5JrPqZR[X)D"d4\%Na!1l +!X9 +VuQVq)BD+=:.]/hVR!V<[^roU]">er_oBU3`luHHrQ"uYrkSrRTP[A5JrPqZR[X)D"d4\%Na!1l +!X9 +VuQVq%1G!e;GL,%QEIO$[^s'L])omm_u@gT`rEj_]<%Q?9NuOhNg?!"rLNt_s.'C\Lk:G37M?4+ +!W`s&rd4lkA0_fs#5J>1s*t~> +VuQVq%1G!e;GL,%QEIO$[^s'L])omm_u@gT`rEj_]<%Q?9NuOhNg?!"rLNt_s.'C\Lk:G37M?4+ +!W`s&rd4lkA0_fs#5J>1s*t~> +VuQVq%1G!e;GL,%QEIO$[^s'L])omm_u@gT`rEj_]<%Q?9NuOhNg?!"rLNt_s.'C\Lk:G37M?4+ +!W`s&rd4lkA0_fs#5J>1s*t~> +VuQVq%La:E<*NF%>Df;\[C3]\rPJ`__og."`X]hl[$?)J7TXJULldpgRf/ccU7Ia?NeN1IOdqq( +'DV\;'.d[AI"Qf^>Y5qDq#\,,J,~> +VuQVq%La:E<*NF%>Df;\[C3]\rPJ`__og."`X]hl[$?)J7TXJULldpgRf/ccU7Ia?NeN1IOdqq( +'DV\;'.d[AI"Qf^>Y5qDq#\,,J,~> +VuQVq%La:E<*NF%>Df;\[C3]\rPJ`__og."`X]hl[$?)J7TXJULldpgRf/ccU7Ia?NeN1IOdqq( +'DV\;'.d[AI"Qf^>Y5qDq#\,,J,~> +VuQVq%La:EJo+ao;G:b]S#`p.rk\WP!64uR%D0!\eJ/KoV>pQ2mKSRgbUENKfs9[_9,_ +N$Ji.!Wj#\9)a5;K*$F*)u0QGs*t~> +VuQVq%La:EJo+ao;G:b]S#`p.rk\WP!64uR%D0!\eJ/KoV>pQ2mKSRgbUENKfs9[_9,_ +N$Ji.!Wj#\9)a5;K*$F*)u0QGs*t~> +VuQVq%La:EJo+ao;G:b]S#`p.rk\WP!64uR%D0!\eJ/KoV>pQ2mKSRgbUENKfs9[_9,_ +N$Ji.!Wj#\9)a5;K*$F*)u0QGs*t~> +VuQYrrrsbX:o'q)@: +A/"b?!Xp>bre(5u!eYSOp]A&,J,~> +VuQYrrrsbX:o'q)@: +A/"b?!Xp>bre(5u!eYSOp]A&,J,~> +VuQYrrrsbX:o'q)@: +A/"b?!Xp>bre(5u!eYSOp]A&,J,~> +VuQYr&dACNI'gS`BOkmq@96]BAo2O%ral@BAnGb"FaO(@#`+S(QBIQ"RZdZ9#`a^pL6o'V]u9f] +!Mh:A!XfE)I!gR!I"Qf=)[uQE])R9~> +VuQYr&dACNI'gS`BOkmq@96]BAo2O%ral@BAnGb"FaO(@#`+S(QBIQ"RZdZ9#`a^pL6o'V]u9f] +!Mh:A!XfE)I!gR!I"Qf=)[uQE])R9~> +VuQYr&dACNI'gS`BOkmq@96]BAo2O%ral@BAnGb"FaO(@#`+S(QBIQ"RZdZ9#`a^pL6o'V]u9f] +!Mh:A!XfE)I!gR!I"Qf=)[uQE])R9~> +VuQVq!X9pOrk/l>BkqU/H[C!dMNs0YNK&gQrJgi=!1*MF!1NkL%??6uKn>>\]u7k5bf%I!]`Q-Z +4SSsd$m]V@K7&<(HurU=#5SD5s*t~> +VuQVq!X9pOrk/l>BkqU/H[C!dMNs0YNK&gQrJgi=!1*MF!1NkL%??6uKn>>\]u7k5bf%I!]`Q-Z +4SSsd$m]V@K7&<(HurU=#5SD5s*t~> +VuQVq!X9pOrk/l>BkqU/H[C!dMNs0YNK&gQrJgi=!1*MF!1NkL%??6uKn>>\]u7k5bf%I!]`Q-Z +4SSsd$m]V@K7&<(HurU=#5SD5s*t~> +VuQYr!X9&irk/`I]oQiBDJjK8Js*4BriZ9u!hbjJrg!\MQBm]"rfRPQP)t][Kme]BrOr-Q!6"iL +!)WFl$Odt:FG"sgK7&&g2#.3bs*t~> +VuQYr!X9&irk/`I]oQiBDJjK8Js*4BriZ9u!hbjJrg!\MQBm]"rfRPQP)t][Kme]BrOr-Q!6"iL +!)WFl$Odt:FG"sgK7&&g2#.3bs*t~> +VuQYr!X9&irk/`I]oQiBDJjK8Js*4BriZ9u!hbjJrg!\MQBm]"rfRPQP)t][Kme]BrOr-Q!6"iL +!)WFl$Odt:FG"sgK7&&g2#.3bs*t~> +VuQYr!t6,2[/R`G[(VB2B5;:#G`&!iX9Gc(U7Ij@r0mSIrJh&;KnXr8V#A",`;Rp[`;[FOF:8TS +!riH3'4cKCK7%cG:a?8@!keP`~> +VuQYr!t6,2[/R`G[(VB2B5;:#G`&!iX9Gc(U7Ij@r0mSIrJh&;KnXr8V#A",`;Rp[`;[FOF:8TS +!riH3'4cKCK7%cG:a?8@!keP`~> +VuQYr!t6,2[/R`G[(VB2B5;:#G`&!iX9Gc(U7Ij@r0mSIrJh&;KnXr8V#A",`;Rp[`;[FOF:8TS +!riH3'4cKCK7%cG:a?8@!keP`~> +VuQYr!t6G;XSfaF[Ynp6CM.[:NM*#BVPTcQR[TP2r0%#7#(hY_Jr>YkrOiKD]tMA&bgaSLrk/B/ +)[?'=#n0XXI"Qf^8gFi>!knVa~> +VuQYr!t6G;XSfaF[Ynp6CM.[:NM*#BVPTcQR[TP2r0%#7#(hY_Jr>YkrOiKD]tMA&bgaSLrk/B/ +)[?'=#n0XXI"Qf^8gFi>!knVa~> +VuQYr!t6G;XSfaF[Ynp6CM.[:NM*#BVPTcQR[TP2r0%#7#(hY_Jr>YkrOiKD]tMA&bgaSLrk/B/ +)[?'=#n0XXI"Qf^8gFi>!knVa~> +W;l_r!sU#-XT#mG[(X/]Mf*0@CN>#_QBmu*R[09;OoUOAL^/N[I=d'*Mkp?cs0hm>!6"ld!o2;T +rk/AK$jQM/#R3+jA8>^\1_]Qa^&NT~> +W;l_r!sU#-XT#mG[(X/]Mf*0@CN>#_QBmu*R[09;OoUOAL^/N[I=d'*Mkp?cs0hm>!6"ld!o2;T +rk/AK$jQM/#R3+jA8>^\1_]Qa^&NT~> +W;l_r!sU#-XT#mG[(X/]Mf*0@CN>#_QBmu*R[09;OoUOAL^/N[I=d'*Mkp?cs0hm>!6"ld!o2;T +rk/AK$jQM/#R3+jA8>^\1_]Qa^&NT~> +W;l_r!t6G;V#@t8[(X/]O_A9=CNXuXM#EA6P5gRBL^J`^I`6?`\jQu7*m+g+/ +X +W;l_r!t6G;V#@t8[(X/]O_A9=CNXuXM#EA6P5gRBL^J`^I`6?`\jQu7*m+g+/ +X +W;l_r!t6G;V#@t8[(X/]O_A9=CNXuXM#EA6P5gRBL^J`^I`6?`\jQu7*m+g+/ +X +W;l_r!sT]$XS][<[(X/=D.-sfDKgO+JcggWI$%( +W;l_r!sT]$XS][<[(X/=D.-sfDKgO+JcggWI$%( +W;l_r!sT]$XS][<[(X/=D.-sfDKgO+JcggWI$%( +WW2er!sT]$V#%b2[_9ANF^\fkB5@9_!G?3IB*3@+NhlTd!4;a="iSXGm.BrLr +WW2er!sT]$V#%b2[_9ANF^\fkB5@9_!G?3IB*3@+NhlTd!4;a="iSXGm.BrLr +WW2er!sT]$V#%b2[_9ANF^\fkB5@9_!G?3IB*3@+NhlTd!4;a="iSXGm.BrLr +WrMhq"qrhh]u8.5rOiKF]tLe=EFE9dp1FPEEdEP3[f*l>[/R`B`6?`lm.C)O"SCKn>R'>[P +s*t~> +WrMhq"qrhh]u8.5rOiKF]tLe=EFE9dp1FPEEdEP3[f*l>[/R`B`6?`lm.C)O"SCKn>R'>[P +s*t~> +WrMhq"qrhh]u8.5rOiKF]tLe=EFE9dp1FPEEdEP3[f*l>[/R`B`6?`lm.C)O"SCKn>R'>[P +s*t~> +WrMkr!t5ho[/SPUbf'In!4;a="1F,1B_l6DB689BIZ^H(]aD3]]sPJkbgb_?o_/4do]3(m#3Q'f +$ig@Es*t~> +WrMkr!t5ho[/SPUbf'In!4;a="1F,1B_l6DB689BIZ^H(]aD3]]sPJkbgb_?o_/4do]3(m#3Q'f +$ig@Es*t~> +WrMkr!t5ho[/SPUbf'In!4;a="1F,1B_l6DB689BIZ^H(]aD3]]sPJkbgb_?o_/4do]3(m#3Q'f +$ig@Es*t~> +X8hqr#n.J>`8o_/bfn$#]a_EGO+DY+I=$ +X8hqr#n.J>`8o_/bfn$#]a_EGO+DY+I=$ +X8hqr#n.J>`8o_/bfn$#]a_EGO+DY+I=$ +X8hqr#mMs!m-NfoeBGl(^&PJ;XT5a*]`PXU[/IZA`6?`ljRi!@!PKH6!W`]2_>f#~> +X8hqr#mMs!m-NfoeBGl(^&PJ;XT5a*]`PXU[/IZA`6?`ljRi!@!PKH6!W`]2_>f#~> +X8hqr#mMs!m-NfoeBGl(^&PJ;XT5a*]`PXU[/IZA`6?`ljRi!@!PKH6!W`]2_>f#~> +XT/"r#n3'so^qM2gs!_5]`?"D]`?"G^&Q"Tbgb/'jRi*7r<)Ck$k2;#rt>A6_Z,,~> +XT/"r#n3'so^qM2gs!_5]`?"D]`?"G^&Q"Tbgb/'jRi*7r<)Ck$k2;#rt>A6_Z,,~> +XT/"r#n3'so^qM2gs!_5]`?"D]`?"G^&Q"Tbgb/'jRi*7r<)Ck$k2;#rt>A6_Z,,~> +XoJ(r#tj"OrUfI;jOD-;]`?"J]`>M?^&Q"Ubgb.tjQu7*n,3C&,Ra_YklLnp'+DbXJ,~> +XoJ(r#tj"OrUfI;jOD-;]`?"J]`>M?^&Q"Ubgb.tjQu7*n,3C&,Ra_YklLnp'+DbXJ,~> +XoJ(r#tj"OrUfI;jOD-;]`?"J]`>M?^&Q"Ubgb.tjQu7*n,3C&,Ra_YklLnp'+DbXJ,~> +XoAG,!XAK&!Y_[-rr)lh"74ge`;R@L`9b2;`!=N9eE#]Wm.B`E!q^7AjoYPr!!:( +XoAG,!XAK&!Y_[-rr)lh"74ge`;R@L`9b2;`!=N9eE#]Wm.B`E!q^7AjoYPr!!:( +XoAG,!XAK&!Y_[-rr)lh"74ge`;R@L`9b2;`!=N9eE#]Wm.B`E!q^7AjoYPr!!:( +Y5\V/'+>NYquQs)CZP-drVuKkm+fhK]a2R#eC +Y5\V/'+>NYquQs)CZP-drVuKkm+fhK]a2R#eC +Y5\V/'+>NYquQs)CZP-drVuKkm+fhK]a2R#eC +YQ+V2";;^f'*eC:!^+]nr;?fkrUf1+`;.(H`:LYLbgb.tjQ,\"rVcBTr;uV=)s.2'"q1ROs*t~> +YQ+V2";;^f'*eC:!^+]nr;?fkrUf1+`;.(H`:LYLbgb.tjQ,\"rVcBTr;uV=)s.2'"q1ROs*t~> +YQ+V2";;^f'*eC:!^+]nr;?fkrUf1+`;.(H`:LYLbgb.tjQ,\"rVcBTr;uV=)s.2'"q1ROs*t~> +Yl=b+$krUZ!=T23!X'1,m.BrHr;uWPeEjmK`;e +Yl=b+$krUZ!=T23!X'1,m.BrHr;uWPeEjmK`;e +Yl=b+$krUZ!=T23!X'1,m.BrHr;uWPeEjmK`;e +Yl>.6"qqpp'+>9N!X;KVm.gM]o^(AOm_&kDbgbG/m.Br5rVuKlrJVBoj9!=#J,~> +Yl>.6"qqpp'+>9N!X;KVm.gM]o^(AOm_&kDbgbG/m.Br5rVuKlrJVBoj9!=#J,~> +Yl>.6"qqpp'+>9N!X;KVm.gM]o^(AOm_&kDbgbG/m.Br5rVuKlrJVBoj9!=#J,~> +Z2ab(rXA`,""^P?o_8:do]4N?n@]1QeD0-Gm.C8KrUf7N!o,=8ir[7#J,~> +Z2ab(rXA`,""^P?o_8:do]4N?n@]1QeD0-Gm.C8KrUf7N!o,=8ir[7#J,~> +Z2ab(rXA`,""^P?o_8:do]4N?n@]1QeD0-Gm.C8KrUf7N!o,=8ir[7#J,~> +ZN'e'#7LYB!Wj$Wm.L;Zo^(AWo">=Ibgb_7m.C8Kir&uOF9Vs1!lk7j~> +ZN'e'#7LYB!Wj$Wm.L;Zo^(AWo">=Ibgb_7m.C8Kir&uOF9Vs1!lk7j~> +ZN'e'#7LYB!Wj$Wm.L;Zo^(AWo">=Ibgb_7m.C8Kir&uOF9Vs1!lk7j~> +ZiB_#!sUm+o^r(ao]4fOoXtIIeD0-Oo^q#=!Q5Z2!lt=k~> +ZiB_#!sUm+o^r(ao]4fOoXtIIeD0-Oo^q#=!Q5Z2!lt=k~> +ZiB_#!sUm+o^r(ao]4fOoXtIIeD0-Oo^q#=!Q5Z2!lt=k~> +ZiB_#!ZQdaoDS^]#41F#bfn#Dqn3-NbhV"7rq-6h!;,4J!q]:niW@4$J,~> +ZiB_#!ZQdaoDS^]#41F#bfn#Dqn3-NbhV"7rq-6h!;,4J!q]:niW@4$J,~> +ZiB_#!ZQdaoDS^]#41F#bfn#Dqn3-NbhV"7rq-6h!;,4J!q]:niW@4$J,~> +[/]e#!_Uu7nbrL["75+(eGRPjeGn;*m.Br'r;j86iW@4$J,~> +[/]e#!_Uu7nbrL["75+(eGRPjeGn;*m.Br'r;j86iW@4$J,~> +[/]e#!_Uu7nbrL["75+(eGRPjeGn;*m.Br'r;j86iW@4$J,~> +[K#n$!\C/>mJR+Ym,\0$ro=4Ko^r+Sf_kj;/E$ZPs*t~> +[K#n$!\C/>mJR+Ym,\0$ro=4Ko^r+Sf_kj;/E$ZPs*t~> +[K#n$!\C/>mJR+Ym,\0$ro=4Ko^r+Sf_kj;/E$ZPs*t~> +[f>t$!F4^Or;lQWro=(Grq$6io[Wm?CZ#9:s*t~> +[f>t$!F4^Or;lQWro=(Grq$6io[Wm?CZ#9:s*t~> +[f>t$!F4^Or;lQWro=(Grq$6io[Wm?CZ#9:s*t~> +\,Z(%!?8`:rVuKim/HY)r;rJt%,h92s*t~> +\,Z(%!?8`:rVuKim/HY)r;rJt%,h92s*t~> +\,Z(%!?8`:rVuKim/HY)r;rJt%,h92s*t~> +\,Z(%!G(Q]rVcB7r;t1V%,_32s*t~> +\,Z(%!G(Q]rVcB7r;t1V%,_32s*t~> +\,Z(%!G(Q]rVcB7r;t1V%,_32s*t~> +\Gu1&![PJOkPYDQci!q;lnmQ#c2W:~> +\Gu1&![PJOkPYDQci!q;lnmQ#c2W:~> +\Gu1&![PJOkPYDQci!q;lnmQ#c2W:~> +\c;:'":T),o^qJJs7??joZd=9CBb"$!mUaq~> +\c;:'":T),o^qJJs7??joZd=9CBb"$!mUaq~> +\c;:'":T),o^qJJs7??joZd=9CBb"$!mUaq~> +])V@'"XLeBm/?Rcr<;iloV;NshZD+'J,~> +])V@'"XLeBm/?Rcr<;iloV;NshZD+'J,~> +])V@'"XLeBm/?Rcr<;iloV;NshZD+'J,~> +]DqF'"]a(=m/?SBr;cK8r<;iloZR^Jh?)%'J,~> +]DqF'"]a(=m/?SBr;cK8r<;iloZR^Jh?)%'J,~> +]DqF'"]a(=m/?SBr;cK8r<;iloZR^Jh?)%'J,~> +]DqL)"pQ?CeE$8okktMRdJX=BrUfaC/-67:!mpst~> +]DqL)"pQ?CeE$8okktMRdJX=BrUfaC/-67:!mpst~> +]DqL)"pQ?CeE$8okktMRdJX=BrUfaC/-67:!mpst~> +]`7U*#R1r1[++1'o^qAG!;+e>qt'pUAD715s*t~> +]`7U*#R1r1[++1'o^qAG!;+e>qt'pUAD715s*t~> +]`7U*#R1r1[++1'o^qAG!;+e>qt'pUAD715s*t~> +^&R[*#7Mkg^!u-8o]Z5To_nF6rVuKlrUfaKrq$8^$jPJgdf4g~> +^&R[*#7Mkg^!u-8o]Z5To_nF6rVuKlrUfaKrq$8^$jPJgdf4g~> +^&R[*#7Mkg^!u-8o]Z5To_nF6rVuKlrUfaKrq$8^$jPJgdf4g~> +^Ama*#RhZ)[*7=lo^qDHrq+nBs7H?X!qbjOrTjX"$j$Xg!n71"~> +^Ama*#RhZ)[*7=lo^qDHrq+nBs7H?X!qbjOrTjX"$j$Xg!n71"~> +^Ama*#RhZ)[*7=lo^qDHrq+nBs7H?X!qbjOrTjX"$j$Xg!n71"~> +^]3g*#n.c3[)Cbdo_nFKrVH0Ir;cKhr;lQhrUg-Vs5X4IjSeEIga!:AgB,n)J,~> +^]3g*#n.c3[)Cbdo_nFKrVH0Ir;cKhr;lQhrUg-Vs5X4IjSeEIga!:AgB,n)J,~> +^]3g*#n.c3[)Cbdo_nFKrVH0Ir;cKhr;lQhrUg-Vs5X4IjSeEIga!:AgB,n)J,~> +_#Nm*$4Jb]UqP"5m.C8Ko)/merUfa\o^qM2m/?S +_#Nm*$4Jb]UqP"5m.C8Ko)/merUfa\o^qM2m/?S +_#Nm*$4Jb]UqP"5m.C8Ko)/merUfa\o^qM2m/?S +_#Nm*$k,t&UpS(im.BrKo^qkU!VH?io_e(Tj8eQDo`+jqo_na\rVcBeo_n^jo_nF\qXjaQroF+7 +s3qD2eD/j?jQokT$jPGfec1.~> +_#Nm*$k,t&UpS(im.BrKo^qkU!VH?io_e(Tj8eQDo`+jqo_na\rVcBeo_n^jo_nF\qXjaQroF+7 +s3qD2eD/j?jQokT$jPGfec1.~> +_#Nm*$k,t&UpS(im.BrKo^qkU!VH?io_e(Tj8eQDo`+jqo_na\rVcBeo_n^jo_nF\qXjaQroF+7 +s3qD2eD/j?jQokT$jPGfec1.~> +_>j!+$3goSS=H[o`73l7rU^-ho_n^jo_nF\rq$3Wq;hS2s5X1HrU^Boo^r+So_nF\r:KsS!T`VE +jSdm4eGRMqeD0-ON#NE7g&fk*J,~> +_>j!+$3goSS=H[o`73l7rU^-ho_n^jo_nF\rq$3Wq;hS2s5X1HrU^Boo^r+So_nF\r:KsS!T`VE +jSdm4eGRMqeD0-ON#NE7g&fk*J,~> +_>j!+$3goSS=H[o`73l7rU^-ho_n^jo_nF\rq$3Wq;hS2s5X1HrU^Boo^r+So_nF\r:KsS!T`VE +jSdm4eGRMqeD0-ON#NE7g&fk*J,~> +_Z0'+$4IT#S>;s^]u8FUr9X@R!r_cirq$9YjQ-9ps5Y'QjP8POjQuO;o_nF\o^r+SrUg'eo^qM2 +jSms5eGRMj`;RpW`!=N9h!ENQ'+EOqfDg@~> +_Z0'+$4IT#S>;s^]u8FUr9X@R!r_cirq$9YjQ-9ps5Y'QjP8POjQuO;o_nF\o^r+SrUg'eo^qM2 +jSms5eGRMj`;RpW`!=N9h!ENQ'+EOqfDg@~> +_Z0'+$4IT#S>;s^]u8FUr9X@R!r_cirq$9YjQ-9ps5Y'QjP8POjQuO;o_nF\o^r+SrUg'eo^qM2 +jSms5eGRMj`;RpW`!=N9h!ENQ'+EOqfDg@~> +_Z0*,$kj$gPan8>XL,[ZbgcXQs6TdX#Q=;no_na\rVlEim,\-#s5a.Fs7H +_Z0*,$kj$gPan8>XL,[ZbgcXQs6TdX#Q=;no_na\rVlEim,\-#s5a.Fs7H +_Z0*,$kj$gPan8>XL,[ZbgcXQs6TdX#Q=;no_na\rVlEim,\-#s5a.Fs7H +_uK0,rt>DaPl@0^Uo^r:`73;lguRhgrUg*f!;-9h"SDZko]6#,s5a.No)/pfrUfICjP8P?bfp%( +s1JENrk/BO]tO9\#0bTXoXudaf`Kh+J,~> +_uK0,rt>DaPl@0^Uo^r:`73;lguRhgrUg*f!;-9h"SDZko]6#,s5a.No)/pfrUfICjP8P?bfp%( +s1JENrk/BO]tO9\#0bTXoXudaf`Kh+J,~> +_uK0,rt>DaPl@0^Uo^r:`73;lguRhgrUg*f!;-9h"SDZko]6#,s5a.No)/pfrUfICjP8P?bfp%( +s1JENrk/BO]tO9\#0bTXoXudaf`Kh+J,~> +_uK0,ru2S5S=HCFXL,[ZbgbG'jQ,t*rUfj_#P@BDgt_8go^)MXo^(rDj9+2ebfoh"q7R!NbhVRW +Zm>GK!uid1'BB5Js*t~> +_uK0,ru2S5S=HCFXL,[ZbgbG'jQ,t*rUfj_#P@BDgt_8go^)MXo^(rDj9+2ebfoh"q7R!NbhVRW +Zm>GK!uid1'BB5Js*t~> +_uK0,ru2S5S=HCFXL,[ZbgbG'jQ,t*rUfj_#P@BDgt_8go^)MXo^(rDj9+2ebfoh"q7R!NbhVRW +Zm>GK!uid1'BB5Js*t~> +`;f9-'+?-*1n:A3XK9+ReC<:7m-O]Co^r(bm,[6om-"?IoE=OAjP8PieGmbk_uRLF`!+BGo_k!f +qZ6s14A\j2,Rif:g&HR~> +`;f9-'+?-*1n:A3XK9+ReC<:7m-O]Co^r(bm,[6om-"?IoE=OAjP8PieGmbk_uRLF`!+BGo_k!f +qZ6s14A\j2,Rif:g&HR~> +`;f9-'+?-*1n:A3XK9+ReC<:7m-O]Co^r(bm,[6om-"?IoE=OAjP8PieGmbk_uRLF`!+BGo_k!f +qZ6s14A\j2,Rif:g&HR~> +`;f9-%gEsd8t;]Y]tMY>jQ,\"o^Me^m,[7"o]c;ao_na\rUfaKm,[6_gsjjQbl5QX^&Q"TbhV:X +oOJC-!XB,r +`;f9-%gEsd8t;]Y]tMY>jQ,\"o^Me^m,[7"o]c;ao_na\rUfaKm,[6_gsjjQbl5QX^&Q"TbhV:X +oOJC-!XB,r +`;f9-%gEsd8t;]Y]tMY>jQ,\"o^Me^m,[7"o]c;ao_na\rUfaKm,[6_gsjjQbl5QX^&Q"TbhV:X +oOJC-!XB,r +`W,?-%20ZoA>H +`W,?-%20ZoA>H +`W,?-%20ZoA>H +`W,?-%4i/DPdJ-JeD0EWrVcBar;cKhr<)]jrUg*f"75+8o_SLdo`"dho`"dho^D_Yo`"ggoG$ZQ +gt^E'bf%H5`4`k&bhV:OrOj0H!XJu3'/W*6,SLUN!o*a*~> +`W,?-%4i/DPdJ-JeD0EWrVcBar;cKhr<)]jrUg*f"75+8o_SLdo`"dho`"dho^D_Yo`"ggoG$ZQ +gt^E'bf%H5`4`k&bhV:OrOj0H!XJu3'/W*6,SLUN!o*a*~> +`W,?-%4i/DPdJ-JeD0EWrVcBar;cKhr<)]jrUg*f"75+8o_SLdo`"dho`"dho^D_Yo`"ggoG$ZQ +gt^E'bf%H5`4`k&bhV:OrOj0H!XJu3'/W*6,SLUN!o*a*~> +`rGH.$k+BpCTP4neE#ugrUfITrp0g\rUg'eo`"dho_A@bo_&._o_ACbo`+7\jP887bl,Hc]u8.M +m.Bq/#5A6($nP"=/0kno!o*a*~> +`rGH.$k+BpCTP4neE#ugrUfITrp0g\rUg'eo`"dho_A@bo_&._o_ACbo`+7\jP887bl,Hc]u8.M +m.Bq/#5A6($nP"=/0kno!o*a*~> +`rGH.$k+BpCTP4neE#ugrUfITrp0g\rUg'eo`"dho_A@bo_&._o_ACbo`+7\jP887bl,Hc]u8.M +m.Bq/#5A6($nP"=/0kno!o*a*~> +`rG`6!X9&AquZm;#X"orbhV:Go^r(["8)Qjo^i%[o^2S`o_na\rVcBerUf^[s7?lhjP887bf%H5 +`5Km\o_n,EpAtO-)am:T)[u$6g])d~> +`rG`6!X9&AquZm;#X"orbhV:Go^r(["8)Qjo^i%[o^2S`o_na\rVcBerUf^[s7?lhjP887bf%H5 +`5Km\o_n,EpAtO-)am:T)[u$6g])d~> +`rG`6!X9&AquZm;#X"orbhV:Go^r(["8)Qjo^i%[o^2S`o_na\rVcBerUf^[s7?lhjP887bf%H5 +`5Km\o_n,EpAtO-)am:T)[u$6g])d~> +`rGc7!t6,")uKd;)[:].bgb_Go_n^go_&._o`"dpo_na\rUfa\o^r(^o^;Y[o_na\q>L?c"mk=* +eBH/9`!4H8m.C7`%/'`+$p7?S,Riu?h#Dm~> +`rGc7!t6,")uKd;)[:].bgb_Go_n^go_&._o`"dpo_na\rUfa\o^r(^o^;Y[o_na\q>L?c"mk=* +eBH/9`!4H8m.C7`%/'`+$p7?S,Riu?h#Dm~> +`rGc7!t6,")uKd;)[:].bgb_Go_n^go_&._o`"dpo_na\rUfa\o^r(^o^;Y[o_na\q>L?c"mk=* +eBH/9`!4H8m.C7`%/'`+$p7?S,Riu?h#Dm~> +`rGf8"; +`rGf8"; +`rGf8"; +a8bo9"<0`s,SU(W#TG%beE#]_rUfsb!;-0e!;-'b!qcH`qu$WhrVcB]r`!~> +a8bo9"<0`s,SU(W#TG%beE#]_rUfsb!;-0e!;-'b!qcH`qu$WhrVcB]r`!~> +a8bo9"<0`s,SU(W#TG%beE#]_rUfsb!;-0e!;-'b!qcH`qu$WhrVcB]r`!~> +a8br:!sUkf/G]DP)cb,;m.BrLr;cKdr;cK +a8br:!sUkf/G]DP)cb,;m.BrLr;cKdr;cK +a8br:!sUkf/G]DP)cb,;m.BrLr;cKdr;cK +a8br:"!g]"%/L#.)l2Qeo_SLdo_&._o_A@bo\fZOo_na\rUfXYs7?]cgsjQd`6@$'rQG]B!X&o_ +6lQ?s!oEs-~> +a8br:"!g]"%/L#.)l2Qeo_SLdo_&._o_A@bo\fZOo_na\rUfXYs7?]cgsjQd`6@$'rQG]B!X&o_ +6lQ?s!oEs-~> +a8br:"!g]"%/L#.)l2Qeo_SLdo_&._o_A@bo\fZOo_na\rUfXYs7?]cgsjQd`6@$'rQG]B!X&o_ +6lQ?s!oEs-~> +a8bu;!sUkm)u9U=##O[Yo_8:ao_&.bo_na\qu$Ner;@&rrVcBerUg'eo_na\mJR.ZrVcB\rbrs&E'!ujWj'C5eWs*t~> +a8bu;!sUkm)u9U=##O[Yo_8:ao_&.bo_na\qu$Ner;@&rrVcBerUg'eo_na\mJR.ZrVcB\rbrs&E'!ujWj'C5eWs*t~> +a8bu;!sUkm)u9U=##O[Yo_8:ao_&.bo_na\qu$Ner;@&rrVcBerUg'eo_na\mJR.ZrVcB\rbrs&E'!ujWj'C5eWs*t~> +aT)&;!u"L!%/L#+';YR)!;-*c"8)Qjo`"dho_JFco_JFco^_qbo_na\rVcBVr<)]jrUfpa$hWfH +eBGkTeF`^H#5SB$%/pnE$j$VY8h:D +aT)&;!u"L!%/L#+';YR)!;-*c"8)Qjo`"dho_JFco_JFco^_qbo_na\rVcBVr<)]jrUfpa$hWfH +eBGkTeF`^H#5SB$%/pnE$j$VY8h:D +aT)&;!u"L!%/L#+';YR)!;-*c"8)Qjo`"dho_JFco_JFco^_qbo_na\rVcBVr<)]jrUfpa$hWfH +eBGkTeF`^H#5SB$%/pnE$j$VY8h:D +aT)&;![LSnq#URnjSJfTo_/4`o_n^go_SLdo],lMo]uGUo_SLno^(A_bf%`\rU`q`!WicD'E/pT +'+>:+6mN3.!oO$.~> +aT)&;![LSnq#URnjSJfTo_/4`o_n^go_SLdo],lMo]uGUo_SLno^(A_bf%`\rU`q`!WicD'E/pT +'+>:+6mN3.!oO$.~> +aT)&;![LSnq#URnjSJfTo_/4`o_n^go_SLdo],lMo]uGUo_SLno^(A_bf%`\rU`q`!WicD'E/pT +'+>:+6mN3.!oO$.~> +aT)) +aT)) +aT)) +aoD2=!sU;Q,l.QD#'B5%r;cKer;cKZr;cKfr;cKbr<)]jrUf^[!;--d!;-*c!;-6g!qbj?rmV&* +rT#7&!Y,VP,V1c71b9RZ$m\h(%.42Ss*t~> +aoD2=!sU;Q,l.QD#'B5%r;cKer;cKZr;cKfr;cKbr<)]jrUf^[!;--d!;-*c!;-6g!qbj?rmV&* +rT#7&!Y,VP,V1c71b9RZ$m\h(%.42Ss*t~> +aoD2=!sU;Q,l.QD#'B5%r;cKer;cKZr;cKfr;cKbr<)]jrUf^[!;--d!;-*c!;-6g!qbj?rmV&* +rT#7&!Y,VP,V1c71b9RZ$m\h(%.42Ss*t~> +aoD2=!u"L!%/L#+)pJ6Y!;-3f"8)Qjo_&.bo_na\q>C%La!r +1d"/g1aF"K'0JYrm/l5GJ,~> +aoD2=!u"L!%/L#+)pJ6Y!;-3f"8)Qjo_&.bo_na\q>C%La!r +1d"/g1aF"K'0JYrm/l5GJ,~> +aoD2=!u"L!%/L#+)pJ6Y!;-3f"8)Qjo_&.bo_na\q>C%La!r +1d"/g1aF"K'0JYrm/l5GJ,~> +aoD5>!sUSm/G]DL%!;. +aoD5>!sUSm/G]DL%!;. +aoD5>!sUSm/G]DL%!;. +b5_;>!uk':'D_b3)pIs2r;cKfr;cKfr;cKbr<)]jrUg$d!;-*c!;,g[!;-9h!;-$a!TYg2!Y?"a +/3H'*8S!:a?85!oa00~> +b5_;>!uk':'D_b3)pIs2r;cKfr;cKfr;cKbr<)]jrUg$d!;-*c!;,g[!;-9h!;-$a!TYg2!Y?"a +/3H'*8S!:a?85!oa00~> +b5_;>!uk':'D_b3)pIs2r;cKfr;cKfr;cKbr<)]jrUg$d!;-*c!;,g[!;-9h!;-$a!TYg2!Y?"a +/3H'*8S!:a?85!oa00~> +b5_>?!sUSm/G]DL$u>M7r<)]jrUfm`!;,XV!;-!`!;,=M!;,dZ!;-'b#AXAL$kjmC4T7_T1b9RZ +"p,`?4;7,aiW"E~> +b5_>?!sUSm/G]DL$u>M7r<)]jrUfm`!;,XV!;-!`!;,=M!;,dZ!;-'b#AXAL$kjmC4T7_T1b9RZ +"p,`?4;7,aiW"E~> +b5_>?!sUSm/G]DL$u>M7r<)]jrUfm`!;,XV!;-!`!;,=M!;,dZ!;-'b#AXAL$kjmC4T7_T1b9RZ +"p,`?4;7,aiW"E~> +b5_>?!u"9p%/U)/$m`dio_A@eo_na\p&,3hrVcBerUg'eo^_q_o_na\q>C +b5_>?!u"9p%/U)/$m`dio_A@eo_na\p&,3hrVcBerUg'eo^_q_o_na\q>C +b5_>?!u"9p%/U)/$m`dio_A@eo_na\p&,3hrVcBerUg'eo^_q_o_na\q>C +bQ%D?![M"rq>p^3FS,#"#5%lmo_na\q>CBerUg'e#5%lmo_na\n,37YnbiI[kPYn?)[mAn,U>3' +/0l/J$k3+:!ukK-%.42Vs*t~> +bQ%D?![M"rq>p^3FS,#"#5%lmo_na\q>CBerUg'e#5%lmo_na\n,37YnbiI[kPYn?)[mAn,U>3' +/0l/J$k3+:!ukK-%.42Vs*t~> +bQ%D?![M"rq>p^3FS,#"#5%lmo_na\q>CBerUg'e#5%lmo_na\n,37YnbiI[kPYn?)[mAn,U>3' +/0l/J$k3+:!ukK-%.42Vs*t~> +bQ%G@!t7Ri#5\H'$ma'qr;cKhr;cKcr;cKYr<)]jo^qVN"8)Qjo^i"]o_n^go_A@ho_na\rVcBf +r!Wrj-A0gREir=N~> +bQ%G@!t7Ri#5\H'$ma'qr;cKhr;cKcr;cKYr<)]jo^qVN"8)Qjo^i"]o_n^go_A@ho_na\rVcBf +r!Wrj-A0gREir=N~> +bQ%G@!t7Ri#5\H'$ma'qr;cKhr;cKcr;cKYr<)]jo^qVN"8)Qjo^i"]o_n^go_A@ho_na\rVcBf +r!Wrj-A0gREir=N~> +bQ%G@!ZP,jqZ6j.'4gb0r<)]jrUf[Z#k\)oo_nFKm.BiH!;-*c!;,[W!;,m]!;,s_!,MNA!#,>? +!!`6#"!hYE#4DWQs*t~> +bQ%G@!ZP,jqZ6j.'4gb0r<)]jrUf[Z#k\)oo_nFKm.BiH!;-*c!;,[W!;,m]!;,s_!,MNA!#,>? +!!`6#"!hYE#4DWQs*t~> +bQ%G@!ZP,jqZ6j.'4gb0r<)]jrUf[Z#k\)oo_nFKm.BiH!;-*c!;,[W!;,m]!;,s_!,MNA!#,>? +!!`6#"!hYE#4DWQs*t~> +bl@PA!t7"d'Dhh4$lcSOr;cK]r;cK\r<)]QjRiBK!;-9h"8)Qjo^i"co_na\rVcBdr;cKdr;cKW +r.#5/*#$roCumK2GKJ,~> +bl@PA!t7"d'Dhh4$lcSOr;cK]r;cK\r<)]QjRiBK!;-9h"8)Qjo^i"co_na\rVcBdr;cKdr;cKW +r.#5/*#$roCumK2GKJ,~> +bl@PA!t7"d'Dhh4$lcSOr;cK]r;cK\r<)]QjRiBK!;-9h"8)Qjo^i"co_na\rVcBdr;cKdr;cKW +r.#5/*#$roCumK2GKJ,~> +bl@PA!ZP-%q>pg/7-+=Fo^r(^o_eXlo_na\rVcBcr +bl@PA!ZP-%q>pg/7-+=Fo^r(^o_eXlo_na\rVcBcr +bl@PA!ZP-%q>pg/7-+=Fo^r(^o_eXlo_na\rVcBcr +c2[VA!]4.$qZ6g''9r=k!;-3f!;,aY#P@uno]5*"o^i"]o]H)Po_A@bo`"dho_SLdo_JFdln%W- +![LbbmK2GKJ,~> +c2[VA!]4.$qZ6g''9r=k!;-3f!;,aY#P@uno]5*"o^i"]o]H)Po_A@bo`"dho_SLdo_JFdln%W- +![LbbmK2GKJ,~> +c2[VA!]4.$qZ6g''9r=k!;-3f!;,aY#P@uno]5*"o^i"]o]H)Po_A@bo`"dho_SLdo_JFdln%W- +![LbbmK2GKJ,~> +c2[YB!t7Rc#5\H''0Oe=r;cKcr;cK\rVuNij8nW>lhphUr;?Wfq>CEfrVcBer;cKhr;cKcr<)]j +rUfsb!;-6g!+bR#!ukJj%.42Xs*t~> +c2[YB!t7Rc#5\H''0Oe=r;cKcr;cK\rVuNij8nW>lhphUr;?Wfq>CEfrVcBer;cKhr;cKcr<)]j +rUfsb!;-6g!+bR#!ukJj%.42Xs*t~> +c2[YB!t7Rc#5\H''0Oe=r;cKcr;cK\rVuNij8nW>lhphUr;?Wfq>CEfrVcBer;cKhr;cKcr<)]j +rUfsb!;-6g!+bR#!ukJj%.42Xs*t~> +c2[YB![M#%qZ6j5)gq;Dr<)]jrUg*f!;-0e"75+(m/?k_o_\Reo_eXio_na\r;?WfrVZijrVcB] +r;cKXr;cKdr;`)O!Wrj21_]9YjSs`~> +c2[YB![M#%qZ6j5)gq;Dr<)]jrUg*f!;-0e"75+(m/?k_o_\Reo_eXio_na\r;?WfrVZijrVcB] +r;cKXr;cKdr;`)O!Wrj21_]9YjSs`~> +c2[YB![M#%qZ6j5)gq;Dr<)]jrUg*f!;-0e"75+(m/?k_o_\Reo_eXio_na\r;?WfrVZijrVcB] +r;cKXr;cKdr;`)O!Wrj21_]9YjSs`~> +cN!bC!sUka%/U)3)`5M3rUg'eo`"dho_\Reo^D_^o_n.;jRi?J"8)QjoY^V0o_nEqn,`^s:eDZ2 +mfMSMJ,~> +cN!bC!sUka%/U)3)`5M3rUg'eo`"dho_\Reo^D_^o_n.;jRi?J"8)QjoY^V0o_nEqn,`^s:eDZ2 +mfMSMJ,~> +cN!bC!sUka%/U)3)`5M3rUg'eo`"dho_\Reo^D_^o_n.;jRi?J"8)QjoY^V0o_nEqn,`^s:eDZ2 +mfMSMJ,~> +cN!hE"9no@:dk-]!Y\i*qu$Nequ$Nep&+m_r;?Wfrr!#mm,[7"o_&._o_JFco^r(^o_eXfo_A@e +o_na\o_ed^r;?ZO%.F>u:]VgGmfMSMJ,~> +cN!hE"9no@:dk-]!Y\i*qu$Nequ$Nep&+m_r;?Wfrr!#mm,[7"o_&._o_JFco^r(^o_eXfo_A@e +o_na\o_ed^r;?ZO%.F>u:]VgGmfMSMJ,~> +cN!hE"9no@:dk-]!Y\i*qu$Nequ$Nep&+m_r;?Wfrr!#mm,[7"o_&._o_JFco^r(^o_eXfo_A@e +o_na\o_ed^r;?ZO%.F>u:]VgGmfMSMJ,~> +ci +ci +ci +ci +ci +ci +d/X"F"9no9:dk-]":T\VrUg!c!;,j\!;-0e$M=;qo_na\jP8hgrV[&prVcBerUg'eo_\Reo_&._ +o_eXfo_A@bo^2SWo_n^hoLeTS!_Q9&m/lDLJ,~> +d/X"F"9no9:dk-]":T\VrUg!c!;,j\!;-0e$M=;qo_na\jP8hgrV[&prVcBerUg'eo_\Reo_&._ +o_eXfo_A@bo^2SWo_n^hoLeTS!_Q9&m/lDLJ,~> +d/X"F"9no9:dk-]":T\VrUg!c!;,j\!;-0e$M=;qo_na\jP8hgrV[&prVcBerUg'eo_\Reo_&._ +o_eXfo_A@bo^2SWo_n^hoLeTS!_Q9&m/lDLJ,~> +d/WqD!ZPAqq>p[2^&Is4o_na\p&+m_nGNR`m,Zs_o^qJJ!;,IQ"8)Qjo_A@bo_JFco`"dhFRTA3 +:]Lpk!p0H4~> +d/WqD!ZPAqq>p[2^&Is4o_na\p&+m_nGNR`m,Zs_o^qJJ!;,IQ"8)Qjo_A@bo_JFco`"dhFRTA3 +:]Lpk!p0H4~> +d/WqD!ZPAqq>p[2^&Is4o_na\p&+m_nGNR`m,Zs_o^qJJ!;,IQ"8)Qjo_A@bo_JFco`"dhFRTA3 +:]Lpk!p0H4~> +dJs"D!\@.PqZ6g<4QQ57"8)Qjo_\Reo_eXio_na\qu$]jm+gCWo^Vk[o_JFco_n^go`"dho_\Re +o`"dho^r(^o_eXio_na\r;?]hrIaS@s%i\(m/lDLJ,~> +dJs"D!\@.PqZ6g<4QQ57"8)Qjo_\Reo_eXio_na\qu$]jm+gCWo^Vk[o_JFco_n^go`"dho_\Re +o`"dho^r(^o_eXio_na\r;?]hrIaS@s%i\(m/lDLJ,~> +dJs"D!\@.PqZ6g<4QQ57"8)Qjo_\Reo_eXio_na\qu$]jm+gCWo^Vk[o_JFco_n^go`"dho_\Re +o`"dho^r(^o_eXio_na\r;?]hrIaS@s%i\(m/lDLJ,~> +dJs%E!XqIZq>p^;C\7H$!;-0e!;,UU%d`93jRi*CrUg'eo_na\nGN@ZqY^NgrVcBfr;cKar<)]j +rUfRW!VDoO!WktV%."&Xs*t~> +dJs%E!XqIZq>p^;C\7H$!;-0e!;,UU%d`93jRi*CrUg'eo_na\nGN@ZqY^NgrVcBfr;cKar<)]j +rUfRW!VDoO!WktV%."&Xs*t~> +dJs%E!XqIZq>p^;C\7H$!;-0e!;,UU%d`93jRi*CrUg'eo_na\nGN@ZqY^NgrVcBfr;cKar<)]j +rUfRW!VDoO!WktV%."&Xs*t~> +df9+E!ZOr]q>p[:XSi"so_&._o_eXfo_A@bo`"dmo^(AgjRi0E"8)Qjo`"dhoZ@%4oVCsX!^o-Z +liQ>LJ,~> +df9+E!ZOr]q>p[:XSi"so_&._o_eXfo_A@bo`"dmo^(AgjRi0E"8)Qjo`"dhoZ@%4oVCsX!^o-Z +liQ>LJ,~> +df9+E!ZOr]q>p[:XSi"so_&._o_eXfo_A@bo`"dmo^(AgjRi0E"8)Qjo`"dhoZ@%4oVCsX!^o-Z +liQ>LJ,~> +df9.F!sUS^%/U)0'/[r3rUfpa!;-'b!;-3f!;-9h!;-0e#5%9;guRhomJR%Wq>CCEfrVcBar;cKfr;j80ncAk$8hB90k5Tr~> +df9.F!sUS^%/U)0'/[r3rUfpa!;-'b!;-3f!;-9h!;-0e#5%9;guRhomJR%Wq>CCEfrVcBar;cKfr;j80ncAk$8hB90k5Tr~> +df9.F!sUS^%/U)0'/[r3rUfpa!;-'b!;-3f!;-9h!;-0e#5%9;guRhomJR%Wq>CCEfrVcBar;cKfr;j80ncAk$8hB90k5Tr~> +e,T4F!sUSS#5\H'$q0IYr;cKVr;cKcr<;i[gt_8glMU_TnGN@Zr;?Wfqu$Neq>CEfrVcB`r;jh@ +ncAk+:b:o6k5Tr~> +e,T4F!sUSS#5\H'$q0IYr;cKVr;cKcr<;i[gt_8glMU_TnGN@Zr;?Wfqu$Neq>CEfrVcB`r;jh@ +ncAk+:b:o6k5Tr~> +e,T4F!sUSS#5\H'$q0IYr;cKVr;cKcr<;i[gt_8glMU_TnGN@Zr;?Wfqu$Neq>CEfrVcB`r;jh@ +ncAk+:b:o6k5Tr~> +eGo:F!t7"Y%/U),$u>P7"8)Qjo_JFco_8:ao_n^jm+gCWrq-6h#5%lmo_na\rqurkrVcBar;cKg +r +eGo:F!t7"Y%/U),$u>P7"8)Qjo_JFco_8:ao_n^jm+gCWrq-6h#5%lmo_na\rqurkrVcBar;cKg +r +eGo:F!t7"Y%/U),$u>P7"8)Qjo_JFco_8:ao_n^jm+gCWrq-6h#5%lmo_na\rqurkrVcBar;cKg +r +eGo:F!u!Lf#5\H&)l3H2!;,s_"8)Qjo_&._o_eXko^(AgjRi-D!;-0e!;,"D!;,s_!;-9h!Se@Z +!WjWD%-muWs*t~> +eGo:F!u!Lf#5\H&)l3H2!;,s_"8)Qjo_&._o_eXko^(AgjRi-D!;-0e!;,"D!;,s_!;-9h!Se@Z +!WjWD%-muWs*t~> +eGo:F!u!Lf#5\H&)l3H2!;,s_"8)Qjo_&._o_eXko^(AgjRi-D!;-0e!;,"D!;,s_!;-9h!Se@Z +!WjWD%-muWs*t~> +ec5@F!t7:s#5eN*$nTX$o]c;So_JFco`"dho`!VGjSnf=r;cKgr;cKar;cKgr;cK_r;cKfr<)]j +rUfj_!TXpb!WjoL%-doWs*t~> +ec5@F!t7:s#5eN*$nTX$o]c;So_JFco`"dho`!VGjSnf=r;cKgr;cKar;cKgr;cK_r;cKfr<)]j +rUfj_!TXpb!WjoL%-doWs*t~> +ec5@F!t7:s#5eN*$nTX$o]c;So_JFco`"dho`!VGjSnf=r;cKgr;cKar;cKgr;cK_r;cKfr<)]j +rUfj_!TXpb!WjoL%-doWs*t~> +ec5CG"9o8k>R^N3!Y[u_qu$WhrVcB]r;cKfr<)]jrUg$d!qcH`rnIP8o_n^jo_na\qY^Edq>C +ec5CG"9o8k>R^N3!Y[u_qu$WhrVcB]r;cKfr<)]jrUg$d!qcH`rnIP8o_n^jo_na\qY^Edq>C +ec5CG"9o8k>R^N3!Y[u_qu$WhrVcB]r;cKfr<)]jrUg$d!qcH`rnIP8o_n^jo_na\qY^Edq>C +f)PFF!u!M,%/^/.'3sVtr;cKbr<)]jrUfFS!;-9G"6Ah@o_\Reo_A@bo_A@bo_eXfo`"dho^;YX +o_A@eo_na\rVZc`,k;!;6p0]8kPp&~> +f)PFF!u!M,%/^/.'3sVtr;cKbr<)]jrUfFS!;-9G"6Ah@o_\Reo_A@bo_A@bo_eXfo`"dho^;YX +o_A@eo_na\rVZc`,k;!;6p0]8kPp&~> +f)PFF!u!M,%/^/.'3sVtr;cKbr<)]jrUfFS!;-9G"6Ah@o_\Reo_A@bo_A@bo_eXfo`"dho^;YX +o_A@eo_na\rVZc`,k;!;6p0]8kPp&~> +fDkLF!u!5$%/^/.'5Q\&r;cKer;cKfr;cK]r;cKhg]?L.p\b3drVcB;r;cK\r;l71o)]!u<@e@> +!pBT6~> +fDkLF!u!5$%/^/.'5Q\&r;cKer;cKfr;cK]r;cKhg]?L.p\b3drVcB;r;cK\r;l71o)]!u<@e@> +!pBT6~> +fDkLF!u!5$%/^/.'5Q\&r;cKer;cKfr;cK]r;cKhg]?L.p\b3drVcB;r;cK\r;l71o)]!u<@e@> +!pBT6~> +fDkLF!uj(=%/^/.'7Am=r;cKJr;cKhg]cd*o_na\nbiI[p\b*ao)/[_rVcB]r;cK_r;l79o)]"& +A0_BE!pBT6~> +fDkLF!uj(=%/^/.'7Am=r;cKJr;cKhg]cd*o_na\nbiI[p\b*ao)/[_rVcB]r;cK_r;l79o)]"& +A0_BE!pBT6~> +fDkLF!uj(=%/^/.'7Am=r;cKJr;cKhg]cd*o_na\nbiI[p\b*ao)/[_rVcB]r;cK_r;l79o)]"& +A0_BE!pBT6~> +f`(pUo`>471jfu7!Wj=*m/$Y\o_\Reo_eXfo_eXfo_SLdo_n^go`!VHjRhd:"8)Qjo_JFco_n^m +o_na\rVcBcr<)]jrUfa\"8)Qjo`"dioJH.@!ZPAXklU&JJ,~> +f`(pUo`>471jfu7!Wj=*m/$Y\o_\Reo_eXfo_eXfo_SLdo_n^go`!VHjRhd:"8)Qjo_JFco_n^m +o_na\rVcBcr<)]jrUfa\"8)Qjo`"dioJH.@!ZPAXklU&JJ,~> +f`(pUo`>471jfu7!Wj=*m/$Y\o_\Reo_eXfo_eXfo_SLdo_n^go`!VHjRhd:"8)Qjo_JFco_n^m +o_na\rVcBcr<)]jrUfa\"8)Qjo`"dioJH.@!ZPAXklU&JJ,~> +f`1UG":Q4pCD6UI"<3ltrUf[Z!;-3f!;-6g"8)Qjo`"dho`"dho`!VOjRi*CrUg'eo_SLgo_na\ +q#(3bq>C +f`1UG":Q4pCD6UI"<3ltrUf[Z!;-3f!;-6g"8)Qjo`"dho`"dho`!VOjRi*CrUg'eo_SLgo_na\ +q#(3bq>C +f`1UG":Q4pCD6UI"<3ltrUf[Z!;-3f!;-6g"8)Qjo`"dho`"dho`!VOjRi*CrUg'eo_SLgo_na\ +q#(3bq>C +g&L[G":QP,F;t,Z![Ol>rquihr;?`irVcBQr;uWim/Gc@jRi9H"8)Qjo_JFco_JFfo_na\o)/R\ +q#(3bnGNC[4S&UT8hB0-kPp&~> +g&L[G":QP,F;t,Z![Ol>rquihr;?`irVcBQr;uWim/Gc@jRi9H"8)Qjo_JFco_JFfo_na\o)/R\ +q#(3bnGNC[4S&UT8hB0-kPp&~> +g&L[G":QP,F;t,Z![Ol>rquihr;?`irVcBQr;uWim/Gc@jRi9H"8)Qjo_JFco_JFfo_na\o)/R\ +q#(3bnGNC[4S&UT8hB0-kPp&~> +g&L^H"Ul>$4DQMG!Wjp[o_\Reo_&._o^;Y^o\A6_m.Br?r;cKWr<)]jrUfm`!;--d!;,p^"SDZk +oK;aI!t8!>#3c3Ps*t~> +g&L^H"Ul>$4DQMG!Wjp[o_\Reo_&._o^;Y^o\A6_m.Br?r;cKWr<)]jrUfm`!;--d!;,p^"SDZk +oK;aI!t8!>#3c3Ps*t~> +g&L^H"Ul>$4DQMG!Wjp[o_\Reo_&._o^;Y^o\A6_m.Br?r;cKWr<)]jrUfm`!;--d!;,p^"SDZk +oK;aI!t8!>#3c3Ps*t~> +g&LaI"q2.j/3I]9quQpN^%Cmo!;-*c!;-6g!;-'b"mk%"jQuO(r;cKXr<)]jrUfLU"8)Qjo_nag +oDh;O!WjoL%-RcUs*t~> +g&LaI"q2.j/3I]9quQpN^%Cmo!;-*c!;-6g!;-'b"mk%"jQuO(r;cKXr<)]jrUfLU"8)Qjo_nag +oDh;O!WjoL%-RcUs*t~> +g&LaI"q2.j/3I]9quQpN^%Cmo!;-*c!;-6g!;-'b"mk%"jQuO(r;cKXr<)]jrUfLU"8)Qjo_nag +oDh;O!WjoL%-RcUs*t~> +g&LdJ#6khe/3H=BAGcK14N-mfr;cKhr;cKcr;cKgr;cKhr>,&(rUg'eo_naTgt^uWo_nF\rUg'e +o_n^go_SLdo_n^go`"dho_n^go^Vk^o_na\qu$WhrVcB^r;lOYoE#(^1^<.FkPp&~> +g&LdJ#6khe/3H=BAGcK14N-mfr;cKhr;cKcr;cKgr;cKhr>,&(rUg'eo_naTgt^uWo_nF\rUg'e +o_n^go_SLdo_n^go`"dho_n^go^Vk^o_na\qu$WhrVcB^r;lOYoE#(^1^<.FkPp&~> +g&LdJ#6khe/3H=BAGcK14N-mfr;cKhr;cKcr;cKgr;cKhr>,&(rUg'eo_naTgt^uWo_nF\rUg'e +o_n^go_SLdo_n^go`"dho_n^go^Vk^o_na\qu$WhrVcB^r;lOYoE#(^1^<.FkPp&~> +g&LdJ#7M7k1eLSlFSu7F'4fVbrVcB[r;cKWr +g&LdJ#7M7k1eLSlFSu7F'4fVbrVcB[r;cKWr +g&LdJ#7M7k1eLSlFSu7F'4fVbrVcB[r;cKWr +gAggI#7Mk78l]tc#6"Z+'4f>ZrVZ`grquihjS];Tm+gCWm.BlI!;,[W!;-'b!;--d"8)Qjo_JFc +o_n^go_n^hoL/?R!uji@%-RcUs*t~> +gAggI#7Mk78l]tc#6"Z+'4f>ZrVZ`grquihjS];Tm+gCWm.BlI!;,[W!;-'b!;--d"8)Qjo_JFc +o_n^go_n^hoL/?R!uji@%-RcUs*t~> +gAggI#7Mk78l]tc#6"Z+'4f>ZrVZ`grquihjS];Tm+gCWm.BlI!;,[W!;-'b!;--d"8)Qjo_JFc +o_n^go_n^hoL/?R!uji@%-RcUs*t~> +gAgdH"q2/%6tD5irW3-7ABaZD!;-3f"8)Qjo^_q]o^)S4#42!\o_na\nbiI[q>C +gAgdH"q2/%6tD5irW3-7ABaZD!;-3f"8)Qjo^_q]o^)S4#42!\o_na\nbiI[q>C +gAgdH"q2/%6tD5irW3-7ABaZD!;-3f"8)Qjo^_q]o^)S4#42!\o_na\nbiI[q>C +gAgaG"U5Vs8pho`!Ws*Hbk1Z.!;,m]$2"2po_na\rVcBer<;QCguRhor;?WfrVZ`gp&+m_n,37Y +jo#2OrVZcX4SAgX)akA%!pBT6~> +gAgaG"U5Vs8pho`!Ws*Hbk1Z.!;,m]$2"2po_na\rVcBer<;QCguRhor;?WfrVZ`gp&+m_n,37Y +jo#2OrVZcX4SAgX)akA%!pBT6~> +gAgaG"U5Vs8pho`!Ws*Hbk1Z.!;,m]$2"2po_na\rVcBer<;QCguRhor;?WfrVZ`gp&+m_n,37Y +jo#2OrVZcX4SAgX)akA%!pBT6~> +gAg^F":Q5#>Whue#nq+0o_na\rVcB`r;cKUr +gAg^F":Q5#>Whue#nq+0o_na\rVcB`r;cKUr +gAg^F":Q5#>Whue#nq+0o_na\rVcB`r;cKUr +gAg^FrsSrJ8lbil!ZPq)o_ed^r;?`irVcB]r;cKgr +gAg^FrsSrJ8lbil!ZPq)o_ed^r;?`irVcB]r;cKgr +gAg^FrsSrJ8lbil!ZPq)o_ed^r;?`irVcB]r;cKgr +gAgXD#Ri7a$j$JLCXi1Y"8)Qjo_&._o_eXfo_\Rlo_nFKgt_8giV`cKoDJ[]mem.Xq#(63%/9l. +$nO4S'*877%0$P!!pBT6~> +gAgXD#Ri7a$j$JLCXi1Y"8)Qjo_&._o_eXfo_\Rlo_nFKgt_8giV`cKoDJ[]mem.Xq#(63%/9l. +$nO4S'*877%0$P!!pBT6~> +gAgXD#Ri7a$j$JLCXi1Y"8)Qjo_&._o_eXfo_\Rlo_nFKgt_8giV`cKoDJ[]mem.Xq#(63%/9l. +$nO4S'*877%0$P!!pBT6~> +gAgXDrs\oi":P>NABaWC!;-!`!;-9h!;-*c$1-I&jQuO2rVcBXr;cK^r;cKCr;iu.q>psK1d!lO +,SL@q)uV#`)[m/F!p9N5~> +gAgXDrs\oi":P>NABaWC!;-!`!;-9h!;-*c$1-I&jQuO2rVcBXr;cK^r;cKCr;iu.q>psK1d!lO +,SL@q)uV#`)[m/F!p9N5~> +gAgXDrs\oi":P>NABaWC!;-!`!;-9h!;-*c$1-I&jQuO2rVcBXr;cK^r;cKCr;iu.q>psK1d!lO +,SL@q)uV#`)[m/F!p9N5~> +gAgRB$k,6d$l`HqrVcBerUf^[!;,^X"ROq!jRi?J!;-*c"8)Qjo_eXlo_na\rVcBbr;cKhr<)]j +rUg*f!;-6g!;-*c!;-3f!;-6g"8)QjN;N_k$m[Yt4>\T.$jHbH)^H@J/2Sn')u^9=!p9N5~> +gAgRB$k,6d$l`HqrVcBerUf^[!;,^X"ROq!jRi?J!;-*c"8)Qjo_eXlo_na\rVcBbr;cKhr<)]j +rUg*f!;-6g!;-*c!;-3f!;-6g"8)QjN;N_k$m[Yt4>\T.$jHbH)^H@J/2Sn')u^9=!p9N5~> +gAgRB$k,6d$l`HqrVcBerUf^[!;,^X"ROq!jRi?J!;-*c"8)Qjo_eXlo_na\rVcBbr;cKhr<)]j +rUg*f!;-6g!;-*c!;-3f!;-6g"8)QjN;N_k$m[Yt4>\T.$jHbH)^H@J/2Sn')u^9=!p9N5~> +gAgjJ!=T2/!X06*>VnjenGN@Zr;?Wfq#(3brr!,prVc*CEfrVcBVr;cKer;cK`r;cKf +r<)]jrUg$d!;-6g!;-6g!VC1+!X&oW6o5k^$igM1!rWN7)_<6c1c-a/)\WGN!p9N5~> +gAgjJ!=T2/!X06*>VnjenGN@Zr;?Wfq#(3brr!,prVc*CEfrVcBVr;cKer;cK`r;cKf +r<)]jrUg$d!;-6g!;-6g!VC1+!X&oW6o5k^$igM1!rWN7)_<6c1c-a/)\WGN!p9N5~> +gAgjJ!=T2/!X06*>VnjenGN@Zr;?Wfq#(3brr!,prVc*CEfrVcBVr;cKer;cK`r;cKf +r<)]jrUg$d!;-6g!;-6g!VC1+!X&oW6o5k^$igM1!rWN7)_<6c1c-a/)\WGN!p9N5~> +g&LsO#n/%J@:j+N0bXuo!X/cA6sN-]qY^EdrVZ`gp&+m_o_f$em+gCWo_nF@r;cK_r;cKOr;lOY +rW363,V12S#5&$%"q1nZ/3H&o6iehIq#]^YJ,~> +g&LsO#n/%J@:j+N0bXuo!X/cA6sN-]qY^EdrVZ`gp&+m_o_f$em+gCWo_nF@r;cK_r;cKOr;lOY +rW363,V12S#5&$%"q1nZ/3H&o6iehIq#]^YJ,~> +g&LsO#n/%J@:j+N0bXuo!X/cA6sN-]qY^EdrVZ`gp&+m_o_f$em+gCWo_nF@r;cK_r;cKOr;lOY +rW363,V12S#5&$%"q1nZ/3H&o6iehIq#]^YJ,~> +g&M$Q$k>RJNM*/V[C3,q7L]1r#STg_SFlIPrUg'e!;-9h!;,s_"8)Qjo`"dho_\Rlm+gCWm/?nT +pAG!`rqurkrVcBfr;cK\r;cK`r;cKcr;cK^r +g&M$Q$k>RJNM*/V[C3,q7L]1r#STg_SFlIPrUg'e!;-9h!;,s_"8)Qjo`"dho_\Rlm+gCWm/?nT +pAG!`rqurkrVcBfr;cK\r;cK`r;cKcr;cK^r +g&M$Q$k>RJNM*/V[C3,q7L]1r#STg_SFlIPrUg'e!;-9h!;,s_"8)Qjo`"dho_\Rlm+gCWm/?nT +pAG!`rqurkrVcBfr;cK\r;cK`r;cKcr;cK^r +f`)-W0mJD +f`)-W0mJD +f`)-W0mJD +f`)(RH]=Ssq76[9X+DAj!X&]@9!%+Ar;cKdr;cKfr;cKgr<;QCguS,"jS])NrqurkrVcB^r;cK] +r;cKgr;cKfr +f`)(RH]=Ssq76[9X+DAj!X&]@9!%+Ar;cKdr;cKfr;cKgr<;QCguS,"jS])NrqurkrVcB^r;cK] +r;cKgr;cKfr +f`)(RH]=Ssq76[9X+DAj!X&]@9!%+Ar;cKdr;cKfr;cKgr<;QCguS,"jS])NrqurkrVcB^r;cK] +r;cKgr;cKfr +f`))$LmtHNpppR5Y)4J'!XJu='2YdkrVcBJr<`,po^(AgjRiECp\b*aqu$Nep&+m_p&+m_r;?Wf +q>C^4,j,46$nOeC +f`))$LmtHNpppR5Y)4J'!XJu='2YdkrVcBJr<`,po^(AgjRiECp\b*aqu$Nep&+m_p&+m_r;?Wf +q>C^4,j,46$nOeC +f`))$LmtHNpppR5Y)4J'!XJu='2YdkrVcBJr<`,po^(AgjRiECp\b*aqu$Nep&+m_p&+m_r;?Wf +q>C^4,j,46$nOeC +g&D8'Kp\^>[C,e@"1>1],Q.ZH'-pSRjSf#`o_na\rVcBerUg*f"8)Qjo_\Reo_JFgm+gCWo`"dh +o_eXfo]5rQo_na\pAG*crVcBcr;uWZe,6rd]YD+f>9ae4'B]E%$oBe'4>\T&rW;3]J,~> +g&D8'Kp\^>[C,e@"1>1],Q.ZH'-pSRjSf#`o_na\rVcBerUg*f"8)Qjo_\Reo_JFgm+gCWo`"dh +o_eXfo]5rQo_na\pAG*crVcBcr;uWZe,6rd]YD+f>9ae4'B]E%$oBe'4>\T&rW;3]J,~> +g&D8'Kp\^>[C,e@"1>1],Q.ZH'-pSRjSf#`o_na\rVcBerUg*f"8)Qjo_\Reo_JFgm+gCWo`"dh +o_eXfo]5rQo_na\pAG*crVcBcr;uWZe,6rd]YD+f>9ae4'B]E%$oBe'4>\T&rW;3]J,~> +g&D89OJ8eV[C,_>!ipo'r +g&D89OJ8eV[C,_>!ipo'r +g&D89OJ8eV[C,_>!ipo'r +gA_D4NgQQA[Bd45\cSpa/,]PL$j/>Fh":@>!;,UUs5X:;jRi*2r;cKfr;cKer;cKcr<)]jrUfd] +#k\)om^8ms]"S$Z"hhLY[?`Q1!X]Sl1d!<7)[6ra#3>f7~> +gA_D4NgQQA[Bd45\cSpa/,]PL$j/>Fh":@>!;,UUs5X:;jRi*2r;cKfr;cKer;cKcr<)]jrUfd] +#k\)om^8ms]"S$Z"hhLY[?`Q1!X]Sl1d!<7)[6ra#3>f7~> +gA_D4NgQQA[Bd45\cSpa/,]PL$j/>Fh":@>!;,UUs5X:;jRi*2r;cKfr;cKer;cKcr<)]jrUfd] +#k\)om^8ms]"S$Z"hhLY[?`Q1!X]Sl1d!<7)[6ra#3>f7~> +g]%S3Lm"4'X0T=E[Iq*4Z@sn/!X9&H1kXT^o^;Y[o_na\rr!/qrVcBejP8POo_8:ao^;Y[o_na\ +rqurkrVcBar;cKcr;cKhr +g]%S3Lm"4'X0T=E[Iq*4Z@sn/!X9&H1kXT^o^;Y[o_na\rr!/qrVcBejP8POo_8:ao^;Y[o_na\ +rqurkrVcBar;cKcr;cKhr +g]%S3Lm"4'X0T=E[Iq*4Z@sn/!X9&H1kXT^o^;Y[o_na\rr!/qrVcBejP8POo_8:ao^;Y[o_na\ +rqurkrVcBar;cKcr;cKhr +g]%M4LmXa0X0T&%\cSa\,Q.ZM$l^a>eG]%(=QEmmZs*t~> +g]%M4LmXa0X0T&%\cSa\,Q.ZM$l^a>eG]%(=QEmmZs*t~> +g]%M4LmXa0X0T&%\cSa\,Q.ZM$l^a>eG]%(=QEmmZs*t~> +h#@P0LlRppV>de#[Iq*6]t0bW'E%t9$l^a5bk1l4!;-'b!;,m]"n_0BguS,$r<)]jrUfg^!;,aY +!;,g[#kYNqX0oOP]u0ch"3.ri(?kl2"qrO5)\Wkh!Z$$W[`64lkPp&~> +h#@P0LlRppV>de#[Iq*6]t0bW'E%t9$l^a5bk1l4!;-'b!;,m]"n_0BguS,$r<)]jrUfg^!;,aY +!;,g[#kYNqX0oOP]u0ch"3.ri(?kl2"qrO5)\Wkh!Z$$W[`64lkPp&~> +h#@P0LlRppV>de#[Iq*6]t0bW'E%t9$l^a5bk1l4!;-'b!;,m]"n_0BguS,$r<)]jrUfg^!;,aY +!;,g[#kYNqX0oOP]u0ch"3.ri(?kl2"qrO5)\Wkh!Z$$W[`64lkPp&~> +h#@\:Nfoj-X/iP6[IUm2ZCknAr;m-,'-phrm/?k_o_/4`o`"dko_na\r;?fcgt^uWo_\Reo_A@b +o`"dho^i"]o_eXfo_eXfo^r(foWO^[X0oOM^&5bM_6./bkQ1f!,SU.c#m(N+QF=]PbfI0Ts*t~> +h#@\:Nfoj-X/iP6[IUm2ZCknAr;m-,'-phrm/?k_o_/4`o`"dko_na\r;?fcgt^uWo_\Reo_A@b +o`"dho^i"]o_eXfo_eXfo^r(foWO^[X0oOM^&5bM_6./bkQ1f!,SU.c#m(N+QF=]PbfI0Ts*t~> +h#@\:Nfoj-X/iP6[IUm2ZCknAr;m-,'-phrm/?k_o_/4`o`"dko_na\r;?fcgt^uWo_\Reo_A@b +o`"dho^i"]o_eXfo_eXfo^r(foWO^[X0oOM^&5bM_6./bkQ1f!,SU.c#m(N+QF=]PbfI0Ts*t~> +h>[n8LlRjnV5pZ&[C*TRost=?]!@f)#5eN*'-pDMm/6eao_na\q>CCNirVcBerUg*f!;-!`&bQ&#o_na\rVcBerUdLdV6[E+])TJC_ZRND9GZgn!X9&ArW3B1 +'6pCl_oBd=`p!GQ~> +h>[n8LlRjnV5pZ&[C*TRost=?]!@f)#5eN*'-pDMm/6eao_na\q>CCNirVcBerUg*f!;-!`&bQ&#o_na\rVcBerUdLdV6[E+])TJC_ZRND9GZgn!X9&ArW3B1 +'6pCl_oBd=`p!GQ~> +h>[n8LlRjnV5pZ&[C*TRost=?]!@f)#5eN*'-pDMm/6eao_na\q>CCNirVcBerUg*f!;-!`&bQ&#o_na\rVcBerUdLdV6[E+])TJC_ZRND9GZgn!X9&ArW3B1 +'6pCl_oBd=`p!GQ~> +hZ!q?LlRdlSY`Bm[C,V;#/.U][\f$=qZ?d2!^)Fsp\b*ap\b*ar;?W^rnRP?s8;rin,3@\rVcBW +r;cKYr<0O!V5pp#])TJD]*#4!6lY.f$OdMETY&+Z`l?*>VWn,2~> +hZ!q?LlRdlSY`Bm[C,V;#/.U][\f$=qZ?d2!^)Fsp\b*ap\b*ar;?W^rnRP?s8;rin,3@\rVcBW +r;cKYr<0O!V5pp#])TJD]*#4!6lY.f$OdMETY&+Z`l?*>VWn,2~> +hZ!q?LlRdlSY`Bm[C,V;#/.U][\f$=qZ?d2!^)Fsp\b*ap\b*ar;?W^rnRP?s8;rin,3@\rVcBW +r;cKYr<0O!V5pp#])TJD]*#4!6lY.f$OdMETY&+Z`l?*>VWn,2~> +hu=(ELlRXcSY`BfZF[I5\cf^TTRIpZ!X8i;'.e7=o^)M`o_na\o^(Z"m.BrEr;cKPr;cKfr;cK\ +r<;hsR\d'jr43*G]=Y/(4;6`V$OetW]>;+m_8F13[-@U@~> +hu=(ELlRXcSY`BfZF[I5\cf^TTRIpZ!X8i;'.e7=o^)M`o_na\o^(Z"m.BrEr;cKPr;cKfr;cK\ +r<;hsR\d'jr43*G]=Y/(4;6`V$OetW]>;+m_8F13[-@U@~> +hu=(ELlRXcSY`BfZF[I5\cf^TTRIpZ!X8i;'.e7=o^)M`o_na\o^(Z"m.BrEr;cKPr;cKfr;cK\ +r<;hsR\d'jr43*G]=Y/(4;6`V$OetW]>;+m_8F13[-@U@~> +iVs=JJqAf=R%:(MX0T%=m^`P7Y+')5qZ7'4',+3Lm.C8To_eXfo^_q\o`"1Wo_n^go`"dho_eXf +o_/4co_na\qu$NepAG*crVcBcr;cKhr<0d(V5pp#])T2C['#sR6l$!g!Y#>IFeZL[]t:ti_o'*@ +lMlA~> +iVs=JJqAf=R%:(MX0T%=m^`P7Y+')5qZ7'4',+3Lm.C8To_eXfo^_q\o`"1Wo_n^go`"dho_eXf +o_/4co_na\qu$NepAG*crVcBcr;cKhr<0d(V5pp#])T2C['#sR6l$!g!Y#>IFeZL[]t:ti_o'*@ +lMlA~> +iVs=JJqAf=R%:(MX0T%=m^`P7Y+')5qZ7'4',+3Lm.C8To_eXfo^_q\o`"1Wo_n^go`"dho_eXf +o_/4co_na\qu$NepAG*crVcBcr;cKhr<0d(V5pp#])T2C['#sR6l$!g!Y#>IFeZL[]t:ti_o'*@ +lMlA~> +mf*<>LAQQ1IYEB%JqA`;R$O23ri6./ZF[I4])TGFVNOXL!r`T07',bRr;cKfr<)]jrUfg^r:Kpc +!;,OS"8)Qjo^D_Yo_\UeoEE"#V5q#3rOW$;"g4>K;B5u'!Y#?8S$p#B]sbVc]=kY)lMlA~> +mf*<>LAQQ1IYEB%JqA`;R$O23ri6./ZF[I4])TGFVNOXL!r`T07',bRr;cKfr<)]jrUfg^r:Kpc +!;,OS"8)Qjo^D_Yo_\UeoEE"#V5q#3rOW$;"g4>K;B5u'!Y#?8S$p#B]sbVc]=kY)lMlA~> +mf*<>LAQQ1IYEB%JqA`;R$O23ri6./ZF[I4])TGFVNOXL!r`T07',bRr;cKfr<)]jrUfg^r:Kpc +!;,OS"8)Qjo^D_Yo_\UeoEE"#V5q#3rOW$;"g4>K;B5u'!Y#?8S$p#B]sbVc]=kY)lMlA~> +o)AlAJq\o7M#E;GMM6b9Knb;@OI2?)U8=okZEgn(\c]X?N@Xi,"U5AK1lUMer<)]jrUfLU!;-3f +#5%lmo_na\o)/[_rVcB]r;cKdr<0d(SZB'q])K,BZDO1H@3#j>!Y%/DVRF+K[^roY]"PP(lMlA~> +o)AlAJq\o7M#E;GMM6b9Knb;@OI2?)U8=okZEgn(\c]X?N@Xi,"U5AK1lUMer<)]jrUfLU!;-3f +#5%lmo_na\o)/[_rVcB]r;cKdr<0d(SZB'q])K,BZDO1H@3#j>!Y%/DVRF+K[^roY]"PP(lMlA~> +o)AlAJq\o7M#E;GMM6b9Knb;@OI2?)U8=okZEgn(\c]X?N@Xi,"U5AK1lUMer<)]jrUfLU!;-3f +#5%lmo_na\o)/[_rVcB]r;cKdr<0d(SZB'q])K,BZDO1H@3#j>!Y%/DVRF+K[^roY]"PP(lMlA~> +o`#DLJqf)AQCF>6R$sJ0OHBI$!g&e8rga1gX/iP6l+.#2[$u1Hq#^R)""\6+o`"dho^r(^o`"dh +o_\Reo^)MVo^D_Yo_&.jo_nFSm,YUOSZB0+rjiEDY,eCiNHHf_#3Q$j,C>`^[/RK8[C3OC\c@HL +s*t~> +o`#DLJqf)AQCF>6R$sJ0OHBI$!g&e8rga1gX/iP6l+.#2[$u1Hq#^R)""\6+o`"dho^r(^o`"dh +o_\Reo^)MVo^D_Yo_&.jo_nFSm,YUOSZB0+rjiEDY,eCiNHHf_#3Q$j,C>`^[/RK8[C3OC\c@HL +s*t~> +o`#DLJqf)AQCF>6R$sJ0OHBI$!g&e8rga1gX/iP6l+.#2[$u1Hq#^R)""\6+o`"dho^r(^o`"dh +o_\Reo^)MVo^D_Yo_&.jo_nFSm,YUOSZB0+rjiEDY,eCiNHHf_#3Q$j,C>`^[/RK8[C3OC\c@HL +s*t~> +p&>/CJrPkXrgj"^rga4^R$O2,Sc5A_X8fI*[HY7*]tpk79_SSk"q4>0jRE*Jo^;YXo^i"]o^D_\ +o_na\r;@N*rTrV#eBG@lV5pZ.[C3KOX/i(fLjM]/#3Z*q(1``-Y-bXGZF71?\cK3mlMlA~> +p&>/CJrPkXrgj"^rga4^R$O2,Sc5A_X8fI*[HY7*]tpk79_SSk"q4>0jRE*Jo^;YXo^i"]o^D_\ +o_na\r;@N*rTrV#eBG@lV5pZ.[C3KOX/i(fLjM]/#3Z*q(1``-Y-bXGZF71?\cK3mlMlA~> +p&>/CJrPkXrgj"^rga4^R$O2,Sc5A_X8fI*[HY7*]tpk79_SSk"q4>0jRE*Jo^;YXo^i"]o^D_\ +o_na\r;@N*rTrV#eBG@lV5pZ.[C3KOX/i(fLjM]/#3Z*q(1``-Y-bXGZF71?\cK3mlMlA~> +pAYAHKntnZSXlMQV>m7mSYD[LUAh"gX8fL*[HP1*]u.IVKeCNirVcBerUg*f!;,j\"8(s0bl5N`Yaq>jZMh0;ZE'guSW8;> +1)BinmK3Cm&/Jr8SZAp#['m9G[Bd6P[=7E@J,~> +pAYAHKntnZSXlMQV>m7mSYD[LUAh"gX8fL*[HP1*]u.IVKeCNirVcBerUg*f!;,j\"8(s0bl5N`Yaq>jZMh0;ZE'guSW8;> +1)BinmK3Cm&/Jr8SZAp#['m9G[Bd6P[=7E@J,~> +pAYAHKntnZSXlMQV>m7mSYD[LUAh"gX8fL*[HP1*]u.IVKeCNirVcBerUg*f!;,j\"8(s0bl5N`Yaq>jZMh0;ZE'guSW8;> +1)BinmK3Cm&/Jr8SZAp#['m9G[Bd6P[=7E@J,~> +pAY2GLm\14rh]Ros.ok!V5pGhri?"'!4Cq"s1nfERs5_G!WWH'!X&ogN84(&r;cKTr;cKPr;cKf +r;cKer;cKfr;u?8bl,Hq[[itiZF.-LZEgO-SX,([G[)U+$k +pAY2GLm\14rh]Ros.ok!V5pGhri?"'!4Cq"s1nfERs5_G!WWH'!X&ogN84(&r;cKTr;cKPr;cKf +r;cKer;cKfr;u?8bl,Hq[[itiZF.-LZEgO-SX,([G[)U+$k +pAY2GLm\14rh]Ros.ok!V5pGhri?"'!4Cq"s1nfERs5_G!WWH'!X&ogN84(&r;cKTr;cKPr;cKf +r;cKer;cKfr;u?8bl,Hq[[itiZF.-LZEgO-SX,([G[)U+$k +p\tPJJrZ.fSY`0gX8K:"X8]F'[Hb='[JdZ?]u.IZNE#QP"9pE)bk1N*!;,g[!;-!`"8)Qjo^D_Y +o_\Rio_naTh###(X.?)fZEgmGY-P+)V3[-nHZEO>#4M]o"q)G;EeTgMU8t>tY-Ru5!kP[hlMlA~> +p\tPJJrZ.fSY`0gX8K:"X8]F'[Hb='[JdZ?]u.IZNE#QP"9pE)bk1N*!;,g[!;-!`"8)Qjo^D_Y +o_\Rio_naTh###(X.?)fZEgmGY-P+)V3[-nHZEO>#4M]o"q)G;EeTgMU8t>tY-Ru5!kP[hlMlA~> +p\tPJJrZ.fSY`0gX8K:"X8]F'[Hb='[JdZ?]u.IZNE#QP"9pE)bk1N*!;,g[!;-!`"8)Qjo^D_Y +o_\Rio_naTh###(X.?)fZEgmGY-P+)V3[-nHZEO>#4M]o"q)G;EeTgMU8t>tY-Ru5!kP[hlMlA~> +p\tPJKp\="V5:5u[JI3-Ws,f:[CWcRk.1l-]"5Sk]C +p\tPJKp\="V5:5u[JI3-Ws,f:[CWcRk.1l-]"5Sk]C +p\tPJKp\="V5:5u[JI3-Ws,f:[CWcRk.1l-]"5Sk]C +q#:\IJq]S_V5po-[Bfe>!4)R2!4)R2j155urON3F_n3(;@0ZB+"9oMrSF$4Q!;,s_!;-9h!;,s_ +!;,m]!;-'b!;,s_!VFn<`"oDEV5po-X0T%3X/2AXP)+g?HZsL3/c6)#$jHn;"pPPX4C!#RI=dHE +SYDs]X0T%>]!f2X]!],?lMlA~> +q#:\IJq]S_V5po-[Bfe>!4)R2!4)R2j155urON3F_n3(;@0ZB+"9oMrSF$4Q!;,s_!;-9h!;,s_ +!;,m]!;-'b!;,s_!VFn<`"oDEV5po-X0T%3X/2AXP)+g?HZsL3/c6)#$jHn;"pPPX4C!#RI=dHE +SYDs]X0T%>]!f2X]!],?lMlA~> +q#:\IJq]S_V5po-[Bfe>!4)R2!4)R2j155urON3F_n3(;@0ZB+"9oMrSF$4Q!;,s_!;-9h!;,s_ +!;,m]!;-'b!;,s_!VFn<`"oDEV5po-X0T%3X/2AXP)+g?HZsL3/c6)#$jHn;"pPPX4C!#RI=dHE +SYDs]X0T%>]!f2X]!],?lMlA~> +p\tDKNL6H:X8]F%[0X@P[C3KN]"5<0\dGjV[^s&d]`!ETJZN1,;6q +A9.Zr&:K.dOIE#BX/iP6[^E]S]!_OK!2f&]J,~> +p\tDKNL6H:X8]F%[0X@P[C3KN]"5<0\dGjV[^s&d]`!ETJZN1,;6q +A9.Zr&:K.dOIE#BX/iP6[^E]S]!_OK!2f&]J,~> +p\tDKNL6H:X8]F%[0X@P[C3KN]"5<0\dGjV[^s&d]`!ETJZN1,;6q +A9.Zr&:K.dOIE#BX/iP6[^E]S]!_OK!2f&]J,~> +p\tDKNgcN8X8]F)[JdZ:[G&1l[Jm`A]>;+dRr&Z,!X&oF:rN#)r;cKfr;cKLr;cKUr;cKhr;l97 +qSWH9SXTPYrj)O($)3uVOH,$KJqAFMHN83eEW^H)G^016%>':iP+/#CX0T%=[C3L@\c]@O[@$:[ +J,~> +p\tDKNgcN8X8]F)[JdZ:[G&1l[Jm`A]>;+dRr&Z,!X&oF:rN#)r;cKfr;cKLr;cKUr;cKhr;l97 +qSWH9SXTPYrj)O($)3uVOH,$KJqAFMHN83eEW^H)G^016%>':iP+/#CX0T%=[C3L@\c]@O[@$:[ +J,~> +p\tDKNgcN8X8]F)[JdZ:[G&1l[Jm`A]>;+dRr&Z,!X&oF:rN#)r;cKfr;cKLr;cKUr;cKhr;l97 +qSWH9SXTPYrj)O($)3uVOH,$KJqAFMHN83eEW^H)G^016%>':iP+/#CX0T%=[C3L@\c]@O[@$:[ +J,~> +q#CAJ"H]"FX/l6*"1knO[Jm`>[CWrWoXY%1lad))rji9N_6g)!7.UH`$kjRJ[.NP[#5%lmo_na\ +n,37YrqurkrVcB`r;l97qSWZ?R[TeDX/iP3ri6C&U7IU3NeiLFKnB;Pqg89i%>':iNL$$(X/iP3 +[C3LA\cB/:\cK49li2J~> +q#CAJ"H]"FX/l6*"1knO[Jm`>[CWrWoXY%1lad))rji9N_6g)!7.UH`$kjRJ[.NP[#5%lmo_na\ +n,37YrqurkrVcB`r;l97qSWZ?R[TeDX/iP3ri6C&U7IU3NeiLFKnB;Pqg89i%>':iNL$$(X/iP3 +[C3LA\cB/:\cK49li2J~> +q#CAJ"H]"FX/l6*"1knO[Jm`>[CWrWoXY%1lad))rji9N_6g)!7.UH`$kjRJ[.NP[#5%lmo_na\ +n,37YrqurkrVcB`r;l97qSWZ?R[TeDX/iP3ri6C&U7IU3NeiLFKnB;Pqg89i%>':iNL$$(X/iP3 +[C3LA\cB/:\cK49li2J~> +q#:PFL6.mqV5sU'!P5]9\cB.n\cB/;\d,[W_7R(DGS]lP"U5AD1o0dBr;cKfr<)]jrUfOV!;,aY +!;-0e!;-0e!qbj/qSWQ4R%9eKX8T@(X8f"!SX,S'Nr=e4Kc,;jJq\f1KntG=OH>ctU8=orZF.*O +[CWrWrON->]!\i5m/MS~> +q#:PFL6.mqV5sU'!P5]9\cB.n\cB/;\d,[W_7R(DGS]lP"U5AD1o0dBr;cKfr<)]jrUfOV!;,aY +!;-0e!;-0e!qbj/qSWQ4R%9eKX8T@(X8f"!SX,S'Nr=e4Kc,;jJq\f1KntG=OH>ctU8=orZF.*O +[CWrWrON->]!\i5m/MS~> +q#:PFL6.mqV5sU'!P5]9\cB.n\cB/;\d,[W_7R(DGS]lP"U5AD1o0dBr;cKfr<)]jrUfOV!;,aY +!;-0e!;-0e!qbj/qSWQ4R%9eKX8T@(X8f"!SX,S'Nr=e4Kc,;jJq\f1KntG=OH>ctU8=orZF.*O +[CWrWrON->]!\i5m/MS~> +q#CAG"cf%JX/iQ*[Ih$1[J7<5[HkC)[C6(G"hhpfVN":=!WrifPjJ#?#5%lmo_na\oDJ[]rr!&n +rVcBerUfXY!;-9h!p%kTr58rUUR7F>V5po&ZEjJ1&uD.iQBmVoNfK*ZLkpb@LkUP=rf.5FQBn#0 +U8=pi[K!f<[J7?4[/m=omJh\~> +q#CAG"cf%JX/iQ*[Ih$1[J7<5[HkC)[C6(G"hhpfVN":=!WrifPjJ#?#5%lmo_na\oDJ[]rr!&n +rVcBerUfXY!;-9h!p%kTr58rUUR7F>V5po&ZEjJ1&uD.iQBmVoNfK*ZLkpb@LkUP=rf.5FQBn#0 +U8=pi[K!f<[J7?4[/m=omJh\~> +q#CAG"cf%JX/iQ*[Ih$1[J7<5[HkC)[C6(G"hhpfVN":=!WrifPjJ#?#5%lmo_na\oDJ[]rr!&n +rVcBerUfXY!;-9h!p%kTr58rUUR7F>V5po&ZEjJ1&uD.iQBmVoNfK*ZLkpb@LkUP=rf.5FQBn#0 +U8=pi[K!f<[J7?4[/m=omJh\~> +q#:\JJrQ7jX/iP3[C+Go$FRIR]tM7u[$uXln,`\*/>Vq:r;cK[rP8QR\d'cZE(:3ZDFUmSXTPD"-S\)P5C7?OH0=%rg*STs/Q1+[IUm3ZF[? +q#:\JJrQ7jX/iP3[C+Go$FRIR]tM7u[$uXln,`\*/>Vq:r;cK[rP8QR\d'cZE(:3ZDFUmSXTPD"-S\)P5C7?OH0=%rg*STs/Q1+[IUm3ZF[? +q#:\JJrQ7jX/iP3[C+Go$FRIR]tM7u[$uXln,`\*/>Vq:r;cK[rP8QR\d'cZE(:3ZDFUmSXTPD"-S\)P5C7?OH0=%rg*STs/Q1+[IUm3ZF[? +p\tSLNL6H:X/iP6]!]hp#/.po[$"i+n,`\*7(r6;r<)]jrUfsb"8(s0bl#Ba]q1=IR[pL[riuj2 +ZE(%&U7IjDRf8TYP*V8sP)tukOStILS"caUX0T&&\d#IJ]!\iHT^Mi1~> +p\tSLNL6H:X/iP6]!]hp#/.po[$"i+n,`\*7(r6;r<)]jrUfsb"8(s0bl#Ba]q1=IR[pL[riuj2 +ZE(%&U7IjDRf8TYP*V8sP)tukOStILS"caUX0T&&\d#IJ]!\iHT^Mi1~> +p\tSLNL6H:X/iP6]!]hp#/.po[$"i+n,`\*7(r6;r<)]jrUfsb"8(s0bl#Ba]q1=IR[pL[riuj2 +ZE(%&U7IjDRf8TYP*V8sP)tukOStILS"caUX0T&&\d#IJ]!\iHT^Mi1~> +p\tSSNL$-3X/iY6]!^"u$amRR]"5>`_mZD$/arfF"rgRlrUg*f"8)Qjo_n^jo_na\pAG*crVcBc +r<)]jrUg$d"8)Qjo_8:fo_naLgs#Z6&>"f?QCXkQX0Se3ZE(%&V5!s[s-`tSReW0KS,Sr^U8t,k +ZF087!O]N<[/m=tn,In~> +p\tSSNL$-3X/iY6]!^"u$amRR]"5>`_mZD$/arfF"rgRlrUg*f"8)Qjo_n^jo_na\pAG*crVcBc +r<)]jrUg$d"8)Qjo_8:fo_naLgs#Z6&>"f?QCXkQX0Se3ZE(%&V5!s[s-`tSReW0KS,Sr^U8t,k +ZF087!O]N<[/m=tn,In~> +p\tSSNL$-3X/iY6]!^"u$amRR]"5>`_mZD$/arfF"rgRlrUg*f"8)Qjo_n^jo_na\pAG*crVcBc +r<)]jrUg$d"8)Qjo_8:fo_naLgs#Z6&>"f?QCXkQX0Se3ZE(%&V5!s[s-`tSReW0KS,Sr^U8t,k +ZF087!O]N<[/m=tn,In~> +p\tPKLmXa-X/iP6ZHTla_nj0lRs5_ +p\tPKLmXa-X/iP6ZHTla_nj0lRs5_ +p\tPKLmXa-X/iP6ZHTla_nj0lRs5_ +p](8I#b%<\V5pZ.ZF.rg#JIac]:bHh#4MZt)dLVcrUfUX!;-!`"8)Qjo^;Y[o_na\rVZfajOF(F +#a^7$P+A/?X/l0(s/Q="X/2Y`U@t,ZV4sgcX8fL*[IUm7[CWrT[C*<;NUd%!~> +p](8I#b%<\V5pZ.ZF.rg#JIac]:bHh#4MZt)dLVcrUfUX!;-!`"8)Qjo^;Y[o_na\rVZfajOF(F +#a^7$P+A/?X/l0(s/Q="X/2Y`U@t,ZV4sgcX8fL*[IUm7[CWrT[C*<;NUd%!~> +p](8I#b%<\V5pZ.ZF.rg#JIac]:bHh#4MZt)dLVcrUfUX!;-!`"8)Qjo^;Y[o_na\rVZfajOF(F +#a^7$P+A/?X/l0(s/Q="X/2Y`U@t,ZV4sgcX8fL*[IUm7[CWrT[C*<;NUd%!~> +p\tPOKp\F%V5po-[Ec>i[^s&`_n3:HMC7lp!sU$8o_8:do_na\pAG*crVcB`r;cK_r;cKar<)]Q +eBIm0$GDd\Kohb"V5po&r3H=&qPF(`rMBLos0D[4n@JY-s1/?@ZEg$Jo)F4~> +p\tPOKp\F%V5po-[Ec>i[^s&`_n3:HMC7lp!sU$8o_8:do_na\pAG*crVcB`r;cK_r;cKar<)]Q +eBIm0$GDd\Kohb"V5po&r3H=&qPF(`rMBLos0D[4n@JY-s1/?@ZEg$Jo)F4~> +p\tPOKp\F%V5po-[Ec>i[^s&`_n3:HMC7lp!sU$8o_8:do_na\pAG*crVcB`r;cK_r;cKar<)]Q +eBIm0$GDd\Kohb"V5po&r3H=&qPF(`rMBLos0D[4n@JY-s1/?@ZEg$Jo)F4~> +p](8I#*>CHV5pZ&rjC%_#e%=X_n2e8FVF6G!Xs_RrquihgAM6JrVcBerUfj_"n_ccm+fh_`"/2d +KohUkV5pZ&ZF.!D[Bfb3r1sIhV5!sc!NW'pX8fL*[I1U+ZMh04X.+k8s*t~> +p](8I#*>CHV5pZ&rjC%_#e%=X_n2e8FVF6G!Xs_RrquihgAM6JrVcBerUfj_"n_ccm+fh_`"/2d +KohUkV5pZ&ZF.!D[Bfb3r1sIhV5!sc!NW'pX8fL*[I1U+ZMh04X.+k8s*t~> +p](8I#*>CHV5pZ&rjC%_#e%=X_n2e8FVF6G!Xs_RrquihgAM6JrVcBerUfj_"n_ccm+fh_`"/2d +KohUkV5pZ&ZF.!D[Bfb3r1sIhV5!sc!NW'pX8fL*[I1U+ZMh04X.+k8s*t~> +p\tSPKp\="V5:K'[C+Am!4Dd:#/.jh[&&pZn,`Y"AG#ct!;-*c#5%lmo_na\p&+m_r;?Wfm/7%Y +m+g+h`!X2[J?j*V5pGhqlB\$!OfE%\coLI[B$-eo`'F~> +p\tSPKp\="V5:K'[C+Am!4Dd:#/.jh[&&pZn,`Y"AG#ct!;-*c#5%lmo_na\p&+m_r;?Wfm/7%Y +m+g+h`!X2[J?j*V5pGhqlB\$!OfE%\coLI[B$-eo`'F~> +p\tSPKp\="V5:K'[C+Am!4Dd:#/.jh[&&pZn,`Y"AG#ct!;-*c#5%lmo_na\p&+m_r;?Wfm/7%Y +m+g+h`!X2[J?j*V5pGhqlB\$!OfE%\coLI[B$-eo`'F~> +p\tYRKohaoV5:5u[C*TRd(0Rl]!f2`_niLFKcT[b!Xr)qlMU_Tr;?Wflhq%[rVcBerUg'e!q,.! +rko8ZA:B,aOIMf;V6[/0ZMq67ZF.*GZLb-qZN%<5]!^q:#dq+PZF70HVOR8YJ,~> +p\tYRKohaoV5:5u[C*TRd(0Rl]!f2`_niLFKcT[b!Xr)qlMU_Tr;?Wflhq%[rVcBerUg'e!q,.! +rko8ZA:B,aOIMf;V6[/0ZMq67ZF.*GZLb-qZN%<5]!^q:#dq+PZF70HVOR8YJ,~> +p\tYRKohaoV5:5u[C*TRd(0Rl]!f2`_niLFKcT[b!Xr)qlMU_Tr;?Wflhq%[rVcBerUg'e!q,.! +rko8ZA:B,aOIMf;V6[/0ZMq67ZF.*GZLb-qZN%<5]!^q:#dq+PZF70HVOR8YJ,~> +pAYGQOI2T0V5po0[E?&b]>;=qVN>N^!X0!/o_na\r;?`irVcB[r;cKhr;cKfr;cKfr<)]jrUfXY +"8)$BeGdApPU'siLle'rV5pZ&ZMM!-ZM1C$ZF-b4ZMq8s\d,OP[C3ZSX-WJZJ,~> +pAYGQOI2T0V5po0[E?&b]>;=qVN>N^!X0!/o_na\r;?`irVcB[r;cKhr;cKfr;cKfr<)]jrUfXY +"8)$BeGdApPU'siLle'rV5pZ&ZMM!-ZM1C$ZF-b4ZMq8s\d,OP[C3ZSX-WJZJ,~> +pAYGQOI2T0V5po0[E?&b]>;=qVN>N^!X0!/o_na\r;?`irVcB[r;cKhr;cKfr;cKfr<)]jrUfXY +"8)$BeGdApPU'siLle'rV5pZ&ZMM!-ZM1C$ZF-b4ZMq8s\d,OP[C3ZSX-WJZJ,~> +pAYMSNgQB.V5po0[CWcl\cB/;\d#j[_6fbm2t@"O$ruZmr;cKcrj~> +pAYMSNgQB.V5po0[CWcl\cB/;\d#j[_6fbm2t@"O$ruZmr;cKcrj~> +pAYMSNgQB.V5po0[CWcl\cB/;\d#j[_6fbm2t@"O$ruZmr;cKcrj~> +pAYGNNfoj*X/iP3[E5ub[_9SjY*OMWo)\q$KAc\.o^)MVo_SM'o^:Ma`5Gmo,@PqQOID`:V5po- +]!\rW[Jmc9[J7'*[0!qI[H5""[K!f>[B#Vhs*t~> +pAYGNNfoj*X/iP3[E5ub[_9SjY*OMWo)\q$KAc\.o^)MVo_SM'o^:Ma`5Gmo,@PqQOID`:V5po- +]!\rW[Jmc9[J7'*[0!qI[H5""[K!f>[B#Vhs*t~> +pAYGNNfoj*X/iP3[E5ub[_9SjY*OMWo)\q$KAc\.o^)MVo_SM'o^:Ma`5Gmo,@PqQOID`:V5po- +]!\rW[Jmc9[J7'*[0!qI[H5""[K!f>[B#Vhs*t~> +pAYALNfoj%V5pp$[E6#[]*6$_VOD3/o`>1!/CaOp"8)Qjo_/4co_na\q#(3br;?WfpAG!`rqurk +rVcBfr>YCabdM$q%Ph^GLmF?tV5pZ&ZF.9O]!],W]!h:>#e%=P]!\uX]!^b5!4Dg;!4Dg;!k#(` +qu;0~> +pAYALNfoj%V5pp$[E6#[]*6$_VOD3/o`>1!/CaOp"8)Qjo_/4co_na\q#(3br;?WfpAG!`rqurk +rVcBfr>YCabdM$q%Ph^GLmF?tV5pZ&ZF.9O]!],W]!h:>#e%=P]!\uX]!^b5!4Dg;!4Dg;!k#(` +qu;0~> +pAYALNfoj%V5pp$[E6#[]*6$_VOD3/o`>1!/CaOp"8)Qjo_/4co_na\q#(3br;?WfpAG!`rqurk +rVcBfr>YCabdM$q%Ph^GLmF?tV5pZ&ZF.9O]!],W]!h:>#e%=P]!\uX]!^b5!4Dg;!4Dg;!k#(` +qu;0~> +pAYMTLmXR#V5pZ&]"5 +pAYMTLmXR#V5pZ&]"5 +pAYMTLmXR#V5pZ&]"5 +pAYGQLm"3tV5po0[EZ8_[JdZB[_'An]<7HE*VTU:/>Vq:r;cK`r;cK\r;cKZr;cK^r>>1f]j)K\ +!Y[=tH\IQPSY`BfZF.-K[^rle\d5^T]!eZ6KE(t%~> +pAYGQLm"3tV5po0[EZ8_[JdZB[_'An]<7HE*VTU:/>Vq:r;cK`r;cK\r;cKZr;cK^r>>1f]j)K\ +!Y[=tH\IQPSY`BfZF.-K[^rle\d5^T]!eZ6KE(t%~> +pAYGQLm"3tV5po0[EZ8_[JdZB[_'An]<7HE*VTU:/>Vq:r;cK`r;cK\r;cKZr;cK^r>>1f]j)K\ +!Y[=tH\IQPSY`BfZF.-K[^rle\d5^T]!eZ6KE(t%~> +pAYGQNfo]sV5:K'[F2Vd[Iq*8_8a*[Lg1/\!WsB``:Wm("8)Qjo_/4`o_&._o]?#eoY!X$$j$J? +11Y`cQBn)9X/iP6[CWc_\coLMZDIU$J,~> +pAYGQNfo]sV5:K'[F2Vd[Iq*8_8a*[Lg1/\!WsB``:Wm("8)Qjo_/4`o_&._o]?#eoY!X$$j$J? +11Y`cQBn)9X/iP6[CWc_\coLMZDIU$J,~> +pAYGQNfo]sV5:K'[F2Vd[Iq*8_8a*[Lg1/\!WsB``:Wm("8)Qjo_/4`o_&._o]?#eoY!X$$j$J? +11Y`cQBn)9X/iP6[CWc_\coLMZDIU$J,~> +pAYMXNfod#V5:K*[CWcg])K,J]>M_%Rt +pAYMXNfod#V5:K*[CWcg])K,J]>M_%Rt +pAYMXNfod#V5:K*[CWcg])K,J]>M_%Rt +pAYGTNfoj%SZAg![E?&\[JdZF]>;=qXHn)_7!t64jS8ZRo_JFio_na\rVcBfr<)]jrUg$d!;-3f +!;-*c"8)Qjo_A@go_na\X>KeU%NRiGG_M6FU8=orZF.-K^q'ZVZEg5)J,~> +pAYGTNfoj%SZAg![E?&\[JdZF]>;=qXHn)_7!t64jS8ZRo_JFio_na\rVcBfr<)]jrUg$d!;-3f +!;-*c"8)Qjo_A@go_na\X>KeU%NRiGG_M6FU8=orZF.-K^q'ZVZEg5)J,~> +pAYGTNfoj%SZAg![E?&\[JdZF]>;=qXHn)_7!t64jS8ZRo_JFio_na\rVcBfr<)]jrUg$d!;-3f +!;-*c"8)Qjo_A@go_na\X>KeU%NRiGG_M6FU8=orZF.-K^q'ZVZEg5)J,~> +pAYPTNfoj%SZAg!]!],Wbdn7k]!f2Y]>;=qU5a;?m/-_]oYUP.m$o?u!YP\X6tCFoQBn8AX/iP3 +[CWcW[Df]][CWcOX/5iH~> +pAYPTNfoj%SZAg!]!],Wbdn7k]!f2Y]>;=qU5a;?m/-_]oYUP.m$o?u!YP\X6tCFoQBn8AX/iP3 +[CWcW[Df]][CWcOX/5iH~> +pAYPTNfoj%SZAg!]!],Wbdn7k]!f2Y]>;=qU5a;?m/-_]oYUP.m$o?u!YP\X6tCFoQBn8AX/iP3 +[CWcW[Df]][CWcOX/5iH~> +pAYMVNfo^!V5:K*[CWdF\cB.^])K,C]>;+^RtY:Hrquihp\b3drVcBQr;cKfr<)]jrUfg^!;-6g +"8()j)u9UH"sZTQG_M6MSY`BmZF.9O`OZ&WrON->ZE'`"J,~> +pAYMVNfo^!V5:K*[CWdF\cB.^])K,C]>;+^RtY:Hrquihp\b3drVcBQr;cKfr<)]jrUfg^!;-6g +"8()j)u9UH"sZTQG_M6MSY`BmZF.9O`OZ&WrON->ZE'`"J,~> +pAYMVNfo^!V5:K*[CWdF\cB.^])K,C]>;+^RtY:Hrquihp\b3drVcBQr;cKfr<)]jrUfg^!;-6g +"8()j)u9UH"sZTQG_M6MSY`BmZF.9O`OZ&WrON->ZE'`"J,~> +pAYPWNfoj%V5pZ.[CWcRrON!:r42m9f"(pj]"7mLs18HAVNu[3h"gmKo_A@ko_na\rVcBerUg!c +!;-*c!;-*c#5%lmo_na\q>CB5:^m.$%gFCNA9`fkSYDs]X0T%B[E#id[CWrW]!\rOX/hfkJ,~> +pAYPWNfoj%V5pZ.[CWcRrON!:r42m9f"(pj]"7mLs18HAVNu[3h"gmKo_A@ko_na\rVcBerUg!c +!;-*c!;-*c#5%lmo_na\q>CB5:^m.$%gFCNA9`fkSYDs]X0T%B[E#id[CWrW]!\rOX/hfkJ,~> +pAYPWNfoj%V5pZ.[CWcRrON!:r42m9f"(pj]"7mLs18HAVNu[3h"gmKo_A@ko_na\rVcBerUg!c +!;-*c!;-*c#5%lmo_na\q>CB5:^m.$%gFCNA9`fkSYDs]X0T%B[E#id[CWrW]!\rOX/hfkJ,~> +p\t_TNfK9gSXlge[CWcW]!_4B!4CRm!4Da9!OfB7]*5:,Na[D/rVZ`grquihn,3@\rVcBdr;cKS +r +p\t_TNfK9gSXlge[CWcW]!_4B!4CRm!4Da9!OfB7]*5:,Na[D/rVZ`grquihn,3@\rVcBdr;cKS +r +p\t_TNfK9gSXlge[CWcW]!_4B!4CRm!4Da9!OfB7]*5:,Na[D/rVZ`grquihn,3@\rVcBdr;cKS +r +p\tYRLlRX]SY`BpZF[HOrji*;oXY%1gq!Zs]!],\[f3lE[&0CJ<5&8/o_SLgo_na\l2:VSr;?Wf +n,3=[PT0;t#S&UfA9ETfSYc=d!j]5Aa1;;Z])K,:ZMp[$R/_[~> +p\tYRLlRX]SY`BpZF[HOrji*;oXY%1gq!Zs]!],\[f3lE[&0CJ<5&8/o_SLgo_na\l2:VSr;?Wf +n,3=[PT0;t#S&UfA9ETfSYc=d!j]5Aa1;;Z])K,:ZMp[$R/_[~> +p\tYRLlRX]SY`BpZF[HOrji*;oXY%1gq!Zs]!],\[f3lE[&0CJ<5&8/o_SLgo_na\l2:VSr;?Wf +n,3=[PT0;t#S&UfA9ETfSYc=d!j]5Aa1;;Z])K,:ZMp[$R/_[~> +p\t_OLlRXeSY`Bm[C*TW[C+)es0_p7rjr?@TU9k&h"(CDo_eXfo_A@bo_JFco_eXio_na\r;?Wf +r;?]P>R^9,&Jd,qA9EKcQD14V[Bd6K]"5;k\coLQ[B$U6rhT[bs8RT~> +p\t_OLlRXeSY`Bm[C*TW[C+)es0_p7rjr?@TU9k&h"(CDo_eXfo_A@bo_JFco_eXio_na\r;?Wf +r;?]P>R^9,&Jd,qA9EKcQD14V[Bd6K]"5;k\coLQ[B$U6rhT[bs8RT~> +p\t_OLlRXeSY`Bm[C*TW[C+)es0_p7rjr?@TU9k&h"(CDo_eXfo_A@bo_JFco_eXio_na\r;?Wf +r;?]P>R^9,&Jd,qA9EKcQD14V[Bd6K]"5;k\coLQ[B$U6rhT[bs8RT~> +p\tMNLkq([SY`BmrjBn[&@K*\[CWcW[^ +p\tMNLkq([SY`BmrjBn[&@K*\[CWcW[^ +p\tMNLkq([SY`BmrjBn[&@K*\[CWcW[^ +q#CAG&;Z@,R[p:U[C*TW[CWcW]!]\ls0_p7rjr`ETTXOfV#BrarUg'eo_na\q#( +q#CAG&;Z@,R[p:U[C*TW[CWcW]!]\ls0_p7rjr`ETTXOfV#BrarUg'eo_na\q#( +q#CAG&;Z@,R[p:U[C*TW[CWcW]!]\ls0_p7rjr`ETTXOfV#BrarUg'eo_na\q#( +q#:eTLkq(SSY`Bm[C*TW[E5u[[Jd]:[L'RQ]<7unKk*Tik5>;PpAG*crVcBar<;ilrR>p.n,`k9 +4B,a0JrQ4nri?(,!P5\_\dZ!X[CWZLV59`ORZ`:$s*t~> +q#:eTLkq(SSY`Bm[C*TW[E5u[[Jd]:[L'RQ]<7unKk*Tik5>;PpAG*crVcBar<;ilrR>p.n,`k9 +4B,a0JrQ4nri?(,!P5\_\dZ!X[CWZLV59`ORZ`:$s*t~> +q#:eTLkq(SSY`Bm[C*TW[E5u[[Jd]:[L'RQ]<7unKk*Tik5>;PpAG*crVcBar<;ilrR>p.n,`k9 +4B,a0JrQ4nri?(,!P5\_\dZ!X[CWZLV59`ORZ`:$s*t~> +q#:_MLkq(WSZB'(]"5;l\cB/:\du3[[CWNJ]>]PFVS"csh[Bd3J]"5;r\dc'Y]!\rOZDFCgR[TCnr;V9~> +q#:_MLkq(WSZB'(]"5;l\cB/:\du3[[CWNJ]>]PFVS"csh[Bd3J]"5;r\dc'Y]!\rOZDFCgR[TCnr;V9~> +q#:_MLkq(WSZB'(]"5;l\cB/:\du3[[CWNJ]>]PFVS"csh[Bd3J]"5;r\dc'Y]!\rOZDFCgR[TCnr;V9~> +q>U_KLkq(SSYE0jrj;j>[CWcc\dl-VZECXEY,7M=HXn^)h"1IEo\o`Oo]25f#4;O$"sZE5@;^[V +QD14VX8]NO])B#BZE'gmR[TV"Hi*hn~> +q>U_KLkq(SSYE0jrj;j>[CWcc\dl-VZECXEY,7M=HXn^)h"1IEo\o`Oo]25f#4;O$"sZE5@;^[V +QD14VX8]NO])B#BZE'gmR[TV"Hi*hn~> +q>U_KLkq(SSYE0jrj;j>[CWcc\dl-VZECXEY,7M=HXn^)h"1IEo\o`Oo]25f#4;O$"sZE5@;^[V +QD14VX8]NO])B#BZE'gmR[TV"Hi*hn~> +q>UhNJr#GQSZB0+]"5;l\fA,h]!],\[CWrWZEC@;XJMDJIV;:g7)\`irVcB]r;cK`r;cKfr<)]j +rUg!c"73*O%."$-%OXY>>]PFVSYE0cZF.*O]!^&!!O]N:[0X(=V59`RR$*1!s*t~> +q>UhNJr#GQSZB0+]"5;l\fA,h]!],\[CWrWZEC@;XJMDJIV;:g7)\`irVcB]r;cK`r;cKfr<)]j +rUg!c"73*O%."$-%OXY>>]PFVSYE0cZF.*O]!^&!!O]N:[0X(=V59`RR$*1!s*t~> +q>UhNJr#GQSZB0+]"5;l\fA,h]!],\[CWrWZEC@;XJMDJIV;:g7)\`irVcB]r;cK`r;cKfr<)]j +rUg!c"73*O%."$-%OXY>>]PFVSYE0cZF.*O]!^&!!O]N:[0X(=V59`RR$*1!s*t~> +qYq(QJr#SQSY`Bu[C*TW[CWcc\e;E^[Bcs9Y,8%bOF:tN1(u3tm/?kbo_na\r;?Wfqu$Neq>CCNirUem84:LKV#nnmV;IO^"NL$.7WrfT7[F)Sa[0a.>V59`RR$*8Pq#>j~> +qYq(QJr#SQSY`Bu[C*TW[CWcc\e;E^[Bcs9Y,8%bOF:tN1(u3tm/?kbo_na\r;?Wfqu$Neq>CCNirUem84:LKV#nnmV;IO^"NL$.7WrfT7[F)Sa[0a.>V59`RR$*8Pq#>j~> +qYq(QJr#SQSY`Bu[C*TW[CWcc\e;E^[Bcs9Y,8%bOF:tN1(u3tm/?kbo_na\r;?Wfqu$Neq>CCNirUem84:LKV#nnmV;IO^"NL$.7WrfT7[F)Sa[0a.>V59`RR$*8Pq#>j~> +qYptULlRLaSY`Bp[^rlSrON!:b.7S\rji`MZE(./VPTrOKlUEf*=N?=SF#hF!;-3f!;,p^#5$uX +CEs;mklM5./O<-?Fb5XCU8=piZ2qPEf"(mi])K)EZE(%&V4F'DP)atas*t~> +qYptULlRLaSY`Bp[^rlSrON!:b.7S\rji`MZE(./VPTrOKlUEf*=N?=SF#hF!;-3f!;,p^#5$uX +CEs;mklM5./O<-?Fb5XCU8=piZ2qPEf"(mi])K)EZE(%&V4F'DP)atas*t~> +qYptULlRLaSY`Bp[^rlSrON!:b.7S\rji`MZE(./VPTrOKlUEf*=N?=SF#hF!;-3f!;,p^#5$uX +CEs;mklM5./O<-?Fb5XCU8=piZ2qPEf"(mi])K)EZE(%&V4F'DP)atas*t~> +qYq%WLlRLaV5pZ&[C3ZS]!_LJ!4C.a!4D^8(:CTOX/;_fSW\\NA5YT,%K[%qN6LY\rquiho)/R\ +rV[)qrUfa;`10XL$jPhq#o59^;Ik$+Ng?F=X8fR.]!^G,!4D^8#dq7O[Bcj6V5=0^".GC5L%PCq~> +qYq%WLlRLaV5pZ&[C3ZS]!_LJ!4C.a!4D^8(:CTOX/;_fSW\\NA5YT,%K[%qN6LY\rquiho)/R\ +rV[)qrUfa;`10XL$jPhq#o59^;Ik$+Ng?F=X8fR.]!^G,!4D^8#dq7O[Bcj6V5=0^".GC5L%PCq~> +qYq%WLlRLaV5pZ&[C3ZS]!_LJ!4C.a!4D^8(:CTOX/;_fSW\\NA5YT,%K[%qN6LY\rquiho)/R\ +rV[)qrUfa;`10XL$jPhq#o59^;Ik$+Ng?F=X8fR.]!^G,!4D^8#dq7O[Bcj6V5=0^".GC5L%PCq~> +qu6hDLlRLYRf9,hX0T.@]!],W[Jm`;[Fr+k[Iq*2[Jmc;[2,g>VOa3BKm7B<7OJZI!XoJg:kPjf +h#?p`rUg'eo_nF\o_na\o_nFKjP7tTK3U5H$jPbo$jI_(5uM6;KoMRmV5sU$!4Cgt&@K*W[CWcW +[CWrW]!\iLX/5fd"e(gALjaF;s*t~> +qu6hDLlRLYRf9,hX0T.@]!],W[Jm`;[Fr+k[Iq*2[Jmc;[2,g>VOa3BKm7B<7OJZI!XoJg:kPjf +h#?p`rUg'eo_nF\o_na\o_nFKjP7tTK3U5H$jPbo$jI_(5uM6;KoMRmV5sU$!4Cgt&@K*W[CWcW +[CWrW]!\iLX/5fd"e(gALjaF;s*t~> +qu6hDLlRLYRf9,hX0T.@]!],W[Jm`;[Fr+k[Iq*2[Jmc;[2,g>VOa3BKm7B<7OJZI!XoJg:kPjf +h#?p`rUg'eo_nF\o_na\o_nFKjP7tTK3U5H$jPbo$jI_(5uM6;KoMRmV5sU$!4Cgt&@K*W[CWcW +[CWrW]!\iLX/5fd"e(gALjaF;s*t~> +qu77VLlRX]R[p:UX0T.@]!],\[JdZ<[CWdE\cB.n\cB/:\cB/:])K)HZE'guSXl(&HYZk]1)'Nd +#n/(96tC\0XM)ROe.9dA[&g'nN/WC"6mNES$jPVk%1XU<7TXAPKoMRmV5pZr[/mkHik#/t'"YK^ +[C*TR[Bcj0SXl4:P)b-@nGe"~> +qu77VLlRX]R[p:UX0T.@]!],\[JdZ<[CWdE\cB.n\cB/:\cB/:])K)HZE'guSXl(&HYZk]1)'Nd +#n/(96tC\0XM)ROe.9dA[&g'nN/WC"6mNES$jPVk%1XU<7TXAPKoMRmV5pZr[/mkHik#/t'"YK^ +[C*TR[Bcj0SXl4:P)b-@nGe"~> +qu77VLlRX]R[p:UX0T.@]!],\[JdZ<[CWdE\cB.n\cB/:\cB/:])K)HZE'guSXl(&HYZk]1)'Nd +#n/(96tC\0XM)ROe.9dA[&g'nN/WC"6mNES$jPVk%1XU<7TXAPKoMRmV5pZr[/mkHik#/t'"YK^ +[C*TR[Bcj0SXl4:P)b-@nGe"~> +qu7+RLlRLWQCXkKX/iP6ZMq63])B#>]!],\[Jm`;[G\Ur[Ih$A[^EEHX/;V\QA'a)?qrm+#5J?"% +0$tK)_ +qu7+RLlRLWQCXkKX/iP6ZMq63])B#>]!],\[Jm`;[G\Ur[Ih$A[^EEHX/;V\QA'a)?qrm+#5J?"% +0$tK)_ +qu7+RLlRLWQCXkKX/iP6ZMq63])B#>]!],\[Jm`;[G\Ur[Ih$A[^EEHX/;V\QA'a)?qrm+#5J?"% +0$tK)_ +qu6\FM#ND=QC=A@X/iQ'[0aFP]!],W[CWcRrON!:e%-'tZE(%#SXYq!I<&jr5pm/V!Y?,!3D<[n +I>*ZHSYE0cZEgmu])K,;Z4=:JZF.!=X/2AUR#ZuFBC,YK~> +qu6\FM#ND=QC=A@X/iQ'[0aFP]!],W[CWcRrON!:e%-'tZE(%#SXYq!I<&jr5pm/V!Y?,!3D<[n +I>*ZHSYE0cZEgmu])K,;Z4=:JZF.!=X/2AUR#ZuFBC,YK~> +qu6\FM#ND=QC=A@X/iQ'[0aFP]!],W[CWcRrON!:e%-'tZE(%#SXYq!I<&jr5pm/V!Y?,!3D<[n +I>*ZHSYE0cZEgmu])K,;Z4=:JZF.!=X/2AUR#ZuFBC,YK~> +qu7"WJr#5CP+%r4V5=-krNZO5ZF.":[0F4M]!],\[FVo$[C3KKZDF:iSWJPREb&'61)@S*%i-`\ +:0_[bJr#_`U8t?#[H+q![JI3/X8f$rSHPCIKmR(is*t~> +qu7"WJr#5CP+%r4V5=-krNZO5ZF.":[0F4M]!],\[FVo$[C3KKZDF:iSWJPREb&'61)@S*%i-`\ +:0_[bJr#_`U8t?#[H+q![JI3/X8f$rSHPCIKmR(is*t~> +qu7"WJr#5CP+%r4V5=-krNZO5ZF.":[0F4M]!],\[FVo$[C3KKZDF:iSWJPREb&'61)@S*%i-`\ +:0_[bJr#_`U8t?#[H+q![JI3/X8f$rSHPCIKmR(is*t~> +qu?\Js,I>?Ng?6)SXlVQWr]N,qm-1.!4r-:"hM+Q[CWd&])T2;WsbYmRui>JCLC%03?>g8$PkK] +:0_R_Knu%\Sc5\i[HG.#[K!N5X0V`*rh]Xc"I>.*I9c"9J,~> +qu?\Js,I>?Ng?6)SXlVQWr]N,qm-1.!4r-:"hM+Q[CWd&])T2;WsbYmRui>JCLC%03?>g8$PkK] +:0_R_Knu%\Sc5\i[HG.#[K!N5X0V`*rh]Xc"I>.*I9c"9J,~> +qu?\Js,I>?Ng?6)SXlVQWr]N,qm-1.!4r-:"hM+Q[CWd&])T2;WsbYmRui>JCLC%03?>g8$PkK] +:0_R_Knu%\Sc5\i[HG.#[K!N5X0V`*rh]Xc"I>.*I9c"9J,~> +qu6tNJqAf=Nf]?gQN!HRV>%"kZE*u1s0W-D[CWcW[CWcWrjC^r&[epMX/2AXQB$B;DI?@63AM)Z +!YQ8(5#,?uI=d9:S"ca[ZEh'L[I1U-[CWsK[K!Q3Wski*V59oWRZ`bgJo4QNs*t~> +qu6tNJqAf=Nf]?gQN!HRV>%"kZE*u1s0W-D[CWcW[CWcWrjC^r&[epMX/2AXQB$B;DI?@63AM)Z +!YQ8(5#,?uI=d9:S"ca[ZEh'L[I1U-[CWsK[K!Q3Wski*V59oWRZ`bgJo4QNs*t~> +qu6tNJqAf=Nf]?gQN!HRV>%"kZE*u1s0W-D[CWcW[CWcWrjC^r&[epMX/2AXQB$B;DI?@63AM)Z +!YQ8(5#,?uI=d9:S"ca[ZEh'L[I1U-[CWsK[K!Q3Wski*V59oWRZ`bgJo4QNs*t~> +qu6eGI=d9/reUT7s-\eP8KoVIiU8=ok[CWcRo"+k/#.h4M]!\rOri?$prga7^QB6oVEa7`+J,~> +qu6eGI=d9/reUT7s-\eP8KoVIiU8=ok[CWcRo"+k/#.h4M]!\rOri?$prga7^QB6oVEa7`+J,~> +qu6eGI=d9/reUT7s-\eP8KoVIiU8=ok[CWcRo"+k/#.h4M]!\rOri?$prga7^QB6oVEa7`+J,~> +qZ$PC!eQ,[rJ1c?OHPoqR[Te9RerZRV>RCnZN%<9ZF.*O[CZ:DrON!:qmm!>]"5;\]!_OK't(Wa +[C*'9V4F*;NeMh#B3\M05rft#!Yl_25#,3mGC>('P+%rd"i +R[0+sLj*+as*t~> +qZ$PC!eQ,[rJ1c?OHPoqR[Te9RerZRV>RCnZN%<9ZF.*O[CZ:DrON!:qmm!>]"5;\]!_OK't(Wa +[C*'9V4F*;NeMh#B3\M05rft#!Yl_25#,3mGC>('P+%rd"i +R[0+sLj*+as*t~> +qZ$PC!eQ,[rJ1c?OHPoqR[Te9RerZRV>RCnZN%<9ZF.*O[CZ:DrON!:qmm!>]"5;\]!_OK't(Wa +[C*'9V4F*;NeMh#B3\M05rft#!Yl_25#,3mGC>('P+%rd"i +R[0+sLj*+as*t~> +q>UGAr-eNq%Y]^pNJNUVP*2,sR[Te9r13_]r2]e%"1>_J])K)<]!_OK"1>_O[Iq-0[K!9;U77I/ +Kme/_B4+e97QDL(!YcY15#,3mEd`@lOHuH6V5po0ZF[XH[Jm`;[JdZ?[CWcW[C-">s/Z-qrL3_K +"-.tW:?);(~> +q>UGAr-eNq%Y]^pNJNUVP*2,sR[Te9r13_]r2]e%"1>_J])K)<]!_OK"1>_O[Iq-0[K!9;U77I/ +Kme/_B4+e97QDL(!YcY15#,3mEd`@lOHuH6V5po0ZF[XH[Jm`;[JdZ?[CWcW[C-">s/Z-qrL3_K +"-.tW:?);(~> +q>UGAr-eNq%Y]^pNJNUVP*2,sR[Te9r13_]r2]e%"1>_J])K)<]!_OK"1>_O[Iq-0[K!9;U77I/ +Kme/_B4+e97QDL(!YcY15#,3mEd`@lOHuH6V5po0ZF[XH[Jm`;[JdZ?[CWcW[C-">s/Z-qrL3_K +"-.tW:?);(~> +q#C;5rHJ0f!JQ.)M#ND@OHPomQBmu*R[X5Hrh]Up!2]Xps0;d8]!],Wost44]"7mK(:pob]!\T8 +V4Ep6Lk:%qCM-mM8No-T^B,#g/NH9u?ugICLlI^kSY`0`ZEjJ;"hM+Q[CWsJ[0!qI])B&9X8f$r +Sc>/YP5gODLj`gls*t~> +q#C;5rHJ0f!JQ.)M#ND@OHPomQBmu*R[X5Hrh]Up!2]Xps0;d8]!],Wost44]"7mK(:pob]!\T8 +V4Ep6Lk:%qCM-mM8No-T^B,#g/NH9u?ugICLlI^kSY`0`ZEjJ;"hM+Q[CWsJ[0!qI])B&9X8f$r +Sc>/YP5gODLj`gls*t~> +q#C;5rHJ0f!JQ.)M#ND@OHPomQBmu*R[X5Hrh]Up!2]Xps0;d8]!],Wost44]"7mK(:pob]!\T8 +V4Ep6Lk:%qCM-mM8No-T^B,#g/NH9u?ugICLlI^kSY`0`ZEjJ;"hM+Q[CWsJ[0!qI])B&9X8f$r +Sc>/YP5gODLj`gls*t~> +p&G&&!,MROs)S-`!I]1kIK+otM#ND;OH,?aP5^dGSc,AcX/5frs0DX3%(`jX[CWrW]!],\[C-"F +!k#VIrj!-:V4F':Ne2\"CM.$W;GKD2*PVXe*A'9;=C>ogI=d98QCXbHV>de![04(K[CWsG[/dB. +X8f!uSXQ"1rf.):I +p&G&&!,MROs)S-`!I]1kIK+otM#ND;OH,?aP5^dGSc,AcX/5frs0DX3%(`jX[CWrW]!],\[C-"F +!k#VIrj!-:V4F':Ne2\"CM.$W;GKD2*PVXe*A'9;=C>ogI=d98QCXbHV>de![04(K[CWsG[/dB. +X8f!uSXQ"1rf.):I +p&G&&!,MROs)S-`!I]1kIK+otM#ND;OH,?aP5^dGSc,AcX/5frs0DX3%(`jX[CWrW]!],\[C-"F +!k#VIrj!-:V4F':Ne2\"CM.$W;GKD2*PVXe*A'9;=C>ogI=d98QCXbHV>de![04(K[CWsG[/dB. +X8f!uSXQ"1rf.):I +nc&u-B4l!qDJjK=GC=]6I0#.UqM597LlRLYrg!PQrga(dSc5JcWrTI([0aFP[CWcW[C*TWrj;j> +[C*UFX8e_#QB$cLGB.>/?s$/n4u+.o!YGVW/NH*l=DN,)I>*ZHR[p"Gri?()rNua=[C*UF[K!Q4 +WrTI)V>m(fRZ`^1M#Vl'CYf#@~> +nc&u-B4l!qDJjK=GC=]6I0#.UqM597LlRLYrg!PQrga(dSc5JcWrTI([0aFP[CWcW[C*TWrj;j> +[C*UFX8e_#QB$cLGB.>/?s$/n4u+.o!YGVW/NH*l=DN,)I>*ZHR[p"Gri?()rNua=[C*UF[K!Q4 +WrTI)V>m(fRZ`^1M#Vl'CYf#@~> +nc&u-B4l!qDJjK=GC=]6I0#.UqM597LlRLYrg!PQrga(dSc5JcWrTI([0aFP[CWcW[C*TWrj;j> +[C*UFX8e_#QB$cLGB.>/?s$/n4u+.o!YGVW/NH*l=DN,)I>*ZHR[p"Gri?()rNua=[C*UF[K!Q4 +WrTI)V>m(fRZ`^1M#Vl'CYf#@~> +mJdE%B4PXfCN=IoGPusfJcURWreUT7!f`5%rg!YTSYD\SV#[RqZMq65]!]-H[2?3W[Bd*=V59`K +OGJ^:Ebf;q=Ah^V4>I\e!Yl_-1-SH8B5;^>I>EoLSXlURX/iP,rNcC0rj)O(s/#adrgF(TLkpY2 +I +mJdE%B4PXfCN=IoGPusfJcURWreUT7!f`5%rg!YTSYD\SV#[RqZMq65]!]-H[2?3W[Bd*=V59`K +OGJ^:Ebf;q=Ah^V4>I\e!Yl_-1-SH8B5;^>I>EoLSXlURX/iP,rNcC0rj)O(s/#adrgF(TLkpY2 +I +mJdE%B4PXfCN=IoGPusfJcURWreUT7!f`5%rg!YTSYD\SV#[RqZMq65]!]-H[2?3W[Bd*=V59`K +OGJ^:Ebf;q=Ah^V4>I\e!Yl_-1-SH8B5;^>I>EoLSXlURX/iP,rNcC0rj)O(s/#adrgF(TLkpY2 +I +l2M#tA7T=gCN=W>rHAobGC>(!OHuH.V5=-kriuO)rNcC&s/#ad$C[9DNfJ^> +GB._*g])d~> +l2M#tA7T=gCN=W>rHAobGC>(!OHuH.V5=-kriuO)rNcC&s/#ad$C[9DNfJ^> +GB._*g])d~> +l2M#tA7T=gCN=W>rHAobGC>(!OHuH.V5=-kriuO)rNcC&s/#ad$C[9DNfJ^> +GB._*g])d~> +k5PHe@K'p>CBABoDZ"PSG632:GQ*$jJcLN(L^oT6R[ono[GC>'sLm"'mSY`1\WrTI'X8\sqSc>/YQ3`M,LjaJkEb%kt +s*t~> +k5PHe@K'p>CBABoDZ"PSG632:GQ*$jJcLN(L^oT6R[ono[GC>'sLm"'mSY`1\WrTI'X8\sqSc>/YQ3`M,LjaJkEb%kt +s*t~> +k5PHe@K'p>CBABoDZ"PSG632:GQ*$jJcLN(L^oT6R[ono[GC>'sLm"'mSY`1\WrTI'X8\sqSc>/YQ3`M,LjaJkEb%kt +s*t~> +j8T9^=BJg9AGg* +j8T9^=BJg9AGg* +j8T9^=BJg9AGg* +hZ!UO=8lJ)@/FU9CBSNqF`M^*I0tR^LlIFVP*VQ-Rf8iZV4sgbSc=ugNeiL>Id"cUAg_`Q4&e7LkUP2I +hZ!UO=8lJ)@/FU9CBSNqF`M^*I0tR^LlIFVP*VQ-Rf8iZV4sgbSc=ugNeiL>Id"cUAg_`Q4&e7LkUP2I +hZ!UO=8lJ)@/FU9CBSNqF`M^*I0tR^LlIFVP*VQ-Rf8iZV4sgbSc=ugNeiL>Id"cUAg_`Q4&e7LkUP2I +g]%CG9N"bir`B8-?sI7AB*i?kDK9cEI=6^!re:B."HAM)QBqK +g]%CG9N"bir`B8-?sI7AB*i?kDK9cEI=6^!re:B."HAM)QBqK +g]%CG9N"bir`B8-?sI7AB*i?kDK9cEI=6^!re:B."HAM)QBqK +fDc7F7S-0H;GpS$@:3JRrau@LDK9rFrdFcts+UH3s,d8@reM2=I;IEmJCNjuNI=d')reLW9OH07#!07&7!/:E#s*+K\!b>P2ec1.~> +fDc7F7S-0H;GpS$@:3JRrau@LDK9rFrdFcts+UH3s,d8@reM2=I;IEmJCNjuNI=d')reLW9OH07#!07&7!/:E#s*+K\!b>P2ec1.~> +fDc7F7S-0H;GpS$@:3JRrau@LDK9rFrdFcts+UH3s,d8@reM2=I;IEmJCNjuNI=d')reLW9OH07#!07&7!/:E#s*+K\!b>P2ec1.~> +e,KV45!_b8;HNj"$s[=RB5;:#DK9lBGC0::qLSp"GB\(?B41^@s%`Sc#=1O//KG#s!knUA/M]=P +:0:n3CN=H>rI+]tre:<,rIk6'rI+]d"D_XT=%:^>J,~> +e,KV45!_b8;HNj"$s[=RB5;:#DK9lBGC0::qLSp"GB\(?B41^@s%`Sc#=1O//KG#s!knUA/M]=P +:0:n3CN=H>rI+]tre:<,rIk6'rI+]d"D_XT=%:^>J,~> +e,KV45!_b8;HNj"$s[=RB5;:#DK9lBGC0::qLSp"GB\(?B41^@s%`Sc#=1O//KG#s!knUA/M]=P +:0:n3CN=H>rI+]tre:<,rIk6'rI+]d"D_XT=%:^>J,~> +ci4A:5t4=8:/4\h>[V+AB)l`HD?=j&FoHRbHiA6hEY3)"?tWkL=ADU_8O5X+3AMrd])Vd^%5L+= +:0_1>CN=H>I=6>Y[`:s*t~> +ci4A:5t4=8:/4\h>[V+AB)l`HD?=j&FoHRbHiA6hEY3)"?tWkL=ADU_8O5X+3AMrd])Vd^%5L+= +:0_1>CN=H>I=6>Y[`:s*t~> +ci4A:5t4=8:/4\h>[V+AB)l`HD?=j&FoHRbHiA6hEY3)"?tWkL=ADU_8O5X+3AMrd])Vd^%5L+= +:0_1>CN=H>I=6>Y[`:s*t~> +bPqr,3Bf`#:/Y1r>[V+ABE)cGDZ4GNBDu<<=T;.r8HhCD4u+lD\Glmd/M]=M:/Y2%B5@HdrceBj +!I&nhI11=JHZs[SDJj)t>Y-s(s*t~> +bPqr,3Bf`#:/Y1r>[V+ABE)cGDZ4GNBDu<<=T;.r8HhCD4u+lD\Glmd/M]=M:/Y2%B5@HdrceBj +!I&nhI11=JHZs[SDJj)t>Y-s(s*t~> +bPqr,3Bf`#:/Y1r>[V+ABE)cGDZ4GNBDu<<=T;.r8HhCD4u+lD\Glmd/M]=M:/Y2%B5@HdrceBj +!I&nhI11=JHZs[SDJj)t>Y-s(s*t~> +aSuW'3Bf`(:01P">[Uh9@/ja>B4,+[ra>_-$Vjf!:.[`;5!C_R/[k]Z/IO +aSuW'3Bf`(:01P">[Uh9@/ja>B4,+[ra>_-$Vjf!:.[`;5!C_R/[k]Z/IO +aSuW'3Bf`(:01P">[Uh9@/ja>B4,+[ra>_-$Vjf!:.[`;5!C_R/[k]Z/IO +`W$<$3CZJ5;GpRu='&Z+=9)b)=T2(q8HhCD3B8ZA[/^.X%5Kq-8PWAm?tX+iCN==dEX-Aj?sHc. +8NG/tJ,~> +`W$<$3CZJ5;GpRu='&Z+=9)b)=T2(q8HhCD3B8ZA[/^.X%5Kq-8PWAm?tX+iCN==dEX-Aj?sHc. +8NG/tJ,~> +`W$<$3CZJ5;GpRu='&Z+=9)b)=T2(q8HhCD3B8ZA[/^.X%5Kq-8PWAm?tX+iCN==dEX-Aj?sHc. +8NG/tJ,~> +_uBip3Bfo(r(d5h"'AH!=Ski!8O5X+3AN?;/$f0`-S7)65!_b<='T-GBDu]HDZ4DPDJT5a#%Ut: +:.[o8ci8L~> +_uBip3Bfo(r(d5h"'AH!=Ski!8O5X+3AN?;/$f0`-S7)65!_b<='T-GBDu]HDZ4DPDJT5a#%Ut: +:.[o8ci8L~> +_uBip3Bfo(r(d5h"'AH!=Ski!8O5X+3AN?;/$f0`-S7)65!_b<='T-GBDu]HDZ4DPDJT5a#%Ut: +:.[o8ci8L~> +_#FTo3B98h5t:iFqbI&\#!kF:3AN?;YlF\S"u82&5tOsUr`fG2r+H%;s'u@>=&MUZ5s@-Ns*t~> +_#FTo3B98h5t:iFqbI&\#!kF:3AN?;YlF\S"u82&5tOsUr`fG2r+H%;s'u@>=&MUZ5s@-Ns*t~> +_#FTo3B98h5t:iFqbI&\#!kF:3AN?;YlF\S"u82&5tOsUr`fG2r+H%;s'u@>=&MUZ5s@-Ns*t~> +^Ae9e1-%Ao4p4GC8O5rG62j%N3AN06/$8jO/cRRA3Bf`#8PW#Y=BJg0=BABq;G9PL4>Jb;s*t~> +^Ae9e1-%Ao4p4GC8O5rG62j%N3AN06/$8jO/cRRA3Bf`#8PW#Y=BJg0=BABq;G9PL4>Jb;s*t~> +^Ae9e1-%Ao4p4GC8O5rG62j%N3AN06/$8jO/cRRA3Bf`#8PW#Y=BJg0=BABq;G9PL4>Jb;s*t~> +]Di*f1,:jR5!_L555mSA1B/r+rsC,*/M](A3C,r#7fGs[:.bFSs$6]H1bHlMJ,~> +]Di*f1,:jR5!_L555mSA1B/r+rsC,*/M](A3C,r#7fGs[:.bFSs$6]H1bHlMJ,~> +]Di*f1,:jR5!_L555mSA1B/r+rsC,*/M](A3C,r#7fGs[:.bFSs$6]H1bHlMJ,~> +\GlO\pG2_"V#LNE/M\pW1&s913W:f6/]dsB~> +\GlO\pG2_"V#LNE/M\pW1&s913W:f6/]dsB~> +\GlO\pG2_"V#LNE/M\pW1&s913W:f6/]dsB~> +[/U=^-S6\n/LR.ioe",^J,~> +[/U=^-S6\n/LR.ioe",^J,~> +[/U=^-S6\n/LR.ioe",^J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +JcC<$J,~> +%%EndData +showpage +%%Trailer +end +%%EOF diff -r 000000000000 -r 8319d82cab07 fig/codesegment.graffle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fig/codesegment.graffle Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,445 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle6 + 169.5.0.253125 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {559.20001220703125, 782.79998779296875}} + Class + SolidGraphic + ID + 2 + Style + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2011-11-12 11:03:25 +0000 + Creator + Nobuyasu Oshiro + DisplayScale + 1 in = 1.00000 in + GraphDocumentVersion + 12 + GraphicsList + + + Bounds + {{366.49999356269836, 106.55999761819839}, {65, 24}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Size + 11 + + ID + 37 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\deftab720 +\pard\pardeftab720\qc\partightenfactor0 + +\f0\fs22 \cf0 goto cs2(c)} + + Wrap + NO + + + Bounds + {{209.99999356269836, 106.55999761819839}, {78, 24}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Size + 11 + + ID + 36 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\deftab720 +\pard\pardeftab720\qc\partightenfactor0 + +\f0\fs22 \cf0 goto cs1(a+b)} + + Wrap + NO + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 35 + Points + + {323.99999356269836, 144} + {426.68373636901379, 143.8290591686964} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 33 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 12 + + Head + + ID + 33 + + ID + 34 + Points + + {183, 144} + {323.99999356269836, 144} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 3 + + + + Bounds + {{287.99999356269836, 117}, {72, 54}} + Class + ShapedGraphic + ID + 33 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0 + +\f0\fs24 \cf0 cs1} + VerticalPad + 0.0 + + + + Bounds + {{147, 117}, {72, 54}} + Class + ShapedGraphic + ID + 3 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0 + +\f0\fs24 \cf0 cs0} + VerticalPad + 0.0 + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoLineLength + 0.20000000298023224 + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2016-02-14 19:41:55 +0000 + Modifier + utah + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {595.20001220703125, 841.79998779296875} + + NSPrintReverseOrientation + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + Expanded_Canvases + + Frame + {{507, -237}, {989, 938}} + ShowInfo + + ShowRuler + + Sidebar + + SidebarWidth + 200 + TopSlabHeight + 250 + VisibleRegion + {{0, 0}, {475, 780}} + Zoom + 1 + ZoomValues + + + Canvas 1 + 1 + 1 + + + + + diff -r 000000000000 -r 8319d82cab07 fig/codesegment.pdf Binary file fig/codesegment.pdf has changed diff -r 000000000000 -r 8319d82cab07 fig/codesegment.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fig/codesegment.xbb Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,8 @@ +%%Title: ./fig/codesegment.pdf +%%Creator: extractbb 20140317 +%%BoundingBox: 0 0 305 85 +%%HiResBoundingBox: 0.000000 0.000000 305.000000 85.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Sun Feb 28 03:31:57 2016 + diff -r 000000000000 -r 8319d82cab07 fig/qualType.graffle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fig/qualType.graffle Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,854 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle + 139.18.0.187838 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {1118.4000244140625, 782.79998779296875}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2014-02-10 06:36:22 +0000 + Creator + utah + DisplayScale + 1 0/72 in = 1 0/72 in + GraphDocumentVersion + 8 + GraphicsList + + + Bounds + {{517, 118}, {131, 24}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Color + + w + 0 + + Font + Helvetica + Size + 12 + + ID + 18 + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 isConstQualified()} + + + + Class + LineGraphic + ID + 17 + OrthogonalBarAutomatic + + OrthogonalBarPoint + {0, 0} + OrthogonalBarPosition + -1 + Points + + {585, 99} + {585, 162} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 2 + TailArrow + 0 + + + + + Bounds + {{531, 153}, {108, 54}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 9 + + HFlip + YES + ID + 16 + Magnets + + {1, 0.5} + {1, -0.5} + {-1, 0.5} + {-1, -0.5} + {0.5, 1} + {-0.5, 1} + {0.5, -1} + {-0.5, -1} + + Shape + Rectangle + Style + + fill + + Color + + b + 0.999991 + g + 0.999974 + r + 1 + + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs32 \cf0 true} + VerticalPad + 0 + + + + Class + LineGraphic + ID + 15 + OrthogonalBarAutomatic + + OrthogonalBarPoint + {0, 0} + OrthogonalBarPosition + -1 + Points + + {639, 72} + {756, 72} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 2 + TailArrow + 0 + + + + + Class + LineGraphic + ID + 14 + OrthogonalBarAutomatic + + OrthogonalBarPoint + {0, 0} + OrthogonalBarPosition + -1 + Points + + {414, 72} + {531, 72} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 2 + TailArrow + 0 + + + + + Bounds + {{654.5, 36}, {86, 24}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Color + + w + 0 + + Font + Helvetica + Size + 12 + + ID + 13 + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 getTypePtr()} + + + + Bounds + {{421.5, 39}, {102, 24}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Color + + w + 0 + + Font + Helvetica + Size + 12 + + ID + 12 + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 getPointeeType()} + + Wrap + NO + + + Bounds + {{209, 39}, {77, 24}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Color + + w + 0 + + Font + Helvetica + Size + 12 + + ID + 11 + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 getTypePtr()} + + Wrap + NO + + + Class + LineGraphic + ID + 8 + OrthogonalBarAutomatic + + OrthogonalBarPoint + {0, 0} + OrthogonalBarPosition + -1 + Points + + {189, 72} + {306, 72} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 2 + TailArrow + 0 + + + + + Bounds + {{756, 45}, {108, 54}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 9 + + HFlip + YES + ID + 7 + Magnets + + {1, 0.5} + {1, -0.5} + {-1, 0.5} + {-1, -0.5} + {0.5, 1} + {-0.5, 1} + {0.5, -1} + {-0.5, -1} + + Shape + Rectangle + Style + + fill + + Color + + b + 0.999991 + g + 0.999974 + r + 1 + + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs28 \cf0 Type\ +(IntegerType)} + VerticalPad + 0 + + + + Bounds + {{531, 45}, {108, 54}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 9 + + HFlip + YES + ID + 6 + Magnets + + {1, 0.5} + {1, -0.5} + {-1, 0.5} + {-1, -0.5} + {0.5, 1} + {-0.5, 1} + {0.5, -1} + {-0.5, -1} + + Shape + Rectangle + Style + + fill + + Color + + b + 0.999991 + g + 0.999974 + r + 1 + + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs28 \cf0 QualType B} + VerticalPad + 0 + + + + Bounds + {{306, 45}, {108, 54}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 9 + + HFlip + YES + ID + 5 + Magnets + + {1, 0.5} + {1, -0.5} + {-1, 0.5} + {-1, -0.5} + {0.5, 1} + {-0.5, 1} + {0.5, -1} + {-0.5, -1} + + Shape + Rectangle + Style + + fill + + Color + + b + 0.999991 + g + 0.999974 + r + 1 + + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs28 \cf0 Type\ +(PointerType)} + VerticalPad + 0 + + + + Bounds + {{81, 45}, {108, 54}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 9 + + HFlip + YES + ID + 4 + Magnets + + {1, 0.5} + {1, -0.5} + {-1, 0.5} + {-1, -0.5} + {0.5, 1} + {-0.5, 1} + {0.5, -1} + {-0.5, -1} + + Shape + Rectangle + Style + + fill + + Color + + b + 0.999991 + g + 0.999974 + r + 1 + + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs28 \cf0 QualType A} + VerticalPad + 0 + + + + GridInfo + + SnapsToGrid + YES + + GuidesLocked + NO + GuidesVisible + YES + HPages + 2 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2014-02-10 07:28:25 +0000 + Modifier + utah + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {595.20001220703125, 841.79998779296875} + + NSPrintReverseOrientation + + int + 0 + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + + name + Canvas 1 + + + Frame + {{475, 130}, {967, 938}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{81, 0}, {832, 783}} + Zoom + 1 + ZoomValues + + + Canvas 1 + 1 + 1 + + + + + diff -r 000000000000 -r 8319d82cab07 fig/qualType.pdf Binary file fig/qualType.pdf has changed diff -r 000000000000 -r 8319d82cab07 fig/qualType.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fig/qualType.xbb Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,8 @@ +%%Title: ./fig/qualType.pdf +%%Creator: extractbb 20140317 +%%BoundingBox: 0 0 1181 257 +%%HiResBoundingBox: 0.000000 0.000000 1180.500000 256.500000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Sun Feb 28 03:31:57 2016 + diff -r 000000000000 -r 8319d82cab07 mediabb.sty --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mediabb.sty Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,99 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mediabb}[2006/10/26 v1.9 iNOUE Koich! ] +\@ifpackageloaded{graphics}{}{\RequirePackage[dvipdfm]{graphicx}} +\define@key{Gin}{usebb}[true]{\expandafter\let\expandafter\if@usebb\csname if#1\endcsname} +\let\if@usebb\iffalse +\define@key{Gin}{mediaboxonly}[/MediaBox]{\@ifundefined{Gread@find@#1}% + {\def\Gread@rect@box{/MediaBox}\expandafter\let\expandafter\if@Gread@find@only\csname if#1\endcsname}% + {\def\Gread@rect@box{#1}\let\if@Gread@find@only\iftrue}} +\let\if@Gread@find@only\iffalse +\def\Gread@rect@box{/MediaBox} +\define@key{Gin}{autoebb}[always]{\csname Gread@ebb@#1\endcsname} +\def\Gread@ebb@always{\let\if@Gread@ebb@always\iftrue} +\let\if@Gread@ebb@always\iffalse +\let\Gread@ebb@true\Gread@ebb@always +\def\Gread@ebb@never{\let\if@Gread@ebb@never\iftrue} +\let\Gread@ebb@false\Gread@ebb@never +\let\if@Gread@ebb@never\iffalse +\let\Ginclude@pdf\Ginclude@eps +\def\Gread@pdf#1{% + \begingroup + \if@usebb\else + \@tempcnta\z@ + \loop + \ifnum\@tempcnta<\@xxxii + \catcode\@tempcnta14 + \advance\@tempcnta\@ne + \repeat + \@tempcnta127 + \loop + \ifnum\@tempcnta<\@cclvi + \catcode\@tempcnta14 + \advance\@tempcnta\@ne + \repeat + \let\do\@makeother\dospecials\catcode`\ 10 + \catcode\endlinechar10 + \immediate\openin\@inputcheck#1 + \ifeof\@inputcheck + \@latex@error{File `#1' not found}\@ehc + \else + \Gread@true + \let\@tempa\@empty + \let\@tempb\@empty + \loop + \read\@inputcheck to\@tempc + \ifeof\@inputcheck + \Gread@false + \else + \edef\@tempa{\@tempb\@tempc}\let\@tempb\@tempc + \edef\@tempc{\@tempa\Gread@rect@box}% + \csname Gread@find@\Gread@rect@box\expandafter\endcsname\@tempc[\@nnil]\\% + \fi + \ifGread@ + \repeat + \immediate\closein\@inputcheck + \fi + \fi + \ifGin@bbox + \else + \Gread@bmp{\Gin@base.bb}% + \fi + \endgroup + \expandafter\Gread@parse@bb\@gtempa\\} +\def\def@Gread@find#1#2{\ifx\@nnil#2\expandafter\@gobble\else + \@namedef{Gread@find@#1}##1#1##2[##3##4]##5\\{% + \ifx\@nnil##3\else + \gdef\@gtempa{##3##4 }% + \if@Gread@find@only + \Gread@false + \else + \def\Gread@rect@box{#1}% + \fi + \Gin@bboxtrue + \fi + \if@Gread@find@only\else + \csname Gread@find@#2\expandafter\endcsname\@tempa#2[\@nnil]\\% + \fi}% + \expandafter\def@Gread@find\fi{#2}} +\def@Gread@find{/MediaBox}{/CropBox}{/BleedBox}{/TrimBox}{/ArtBox}\@nnil +\@namedef{Gread@find@/ArtBox}#1/ArtBox#2[#3#4]#5\\{% + \ifx\@nnil#3\else + \gdef\@gtempa{#3#4 }% + \Gread@false + \Gin@bboxtrue + \fi} +\def\Gread@bmp#1{% + \if@Gread@ebb@never\else + \if@Gread@ebb@always\else + \immediate\openin\@inputcheck#1 % + \ifeof\@inputcheck + \Gread@ebb@always + \else + \immediate\closein\@inputcheck + \fi + \fi + \immediate\write18{\if@Gread@ebb@always\else[ '\Gin@base\Gin@ext' -nt '\Gin@base.bb' ] && \fi + \ifx\@nnil\filename@area\@nnil\else cd '\filename@area' && \fi ebb '\filename@base\Gin@ext'}% + \fi + \Gread@eps{#1}} +\DeclareGraphicsRule{.pdf}{pdf}{*}{} diff -r 000000000000 -r 8319d82cab07 paper.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper.tex Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,586 @@ +\documentclass[conference]{IEEEtran} + +\usepackage[cmex10]{amsmath} +\usepackage{url} +\usepackage{listings} +\usepackage[dvipdfmx]{graphicx} + +\lstset{ + frame=single, + keepspaces=true, + stringstyle={\ttfamily}, + commentstyle={\ttfamily}, + identifierstyle={\ttfamily}, + keywordstyle={\ttfamily}, + basicstyle={\ttfamily}, + breaklines=true, + xleftmargin=0zw, + xrightmargin=0zw, + framerule=.2pt, + columns=[l]{fullflexible}, + numbers=left, + stepnumber=1, + numberstyle={\scriptsize}, + numbersep=1em, + language=c, + tabsize=4, + lineskip=-0.5zw, + escapechar={@}, +} + +\ifCLASSINFOpdf + % \usepackage[pdftex]{graphicx} + % declare the path(s) where your graphic files are + % \graphicspath{{../pdf/}{../jpeg/}} + % and their extensions so you won't have to specify these with + % every instance of \includegraphics + % \DeclareGraphicsExtensions{.pdf,.jpeg,.png} +\else + % or other class option (dvipsone, dvipdf, if not using dvips). graphicx + % will default to the driver specified in the system graphics.cfg if no + % driver is specified. + % \usepackage[dvips]{graphicx} + % declare the path(s) where your graphic files are + % \graphicspath{{../eps/}} + % and their extensions so you won't have to specify these with + % every instance of \includegraphics + % \DeclareGraphicsExtensions{.eps} +\fi + + +% correct bad hyphenation here +\hyphenation{op-tical net-works semi-conduc-tor} + + +\begin{document} +% +% paper title +% Titles are generally capitalized except for words such as a, an, and, as, +% at, but, by, for, in, nor, of, on, or, the, to and up, which are usually +% not capitalized unless they are the first or last word of the title. +% Linebreaks \\ can be used within to get better formatting as desired. +% Do not put math or special symbols in the title. +\title{LLVM 㨠Clang を利用ã—ãŸæ–°ã—ã„言語ã®å®Ÿè£…} + +% author names and affiliations +% use a multiple column layout for up to three different +% affiliations +\author{ +\IEEEauthorblockN{徳森 æµ·æ–—} +\IEEEauthorblockA{ç‰çƒå¤§å­¦ \\ Email: kaito@cr.ie.u-ryukyu.ac.jp} +\and +\IEEEauthorblockN{河野 真治} +\IEEEauthorblockA{ç‰çƒå¤§å­¦ \\ Email: kono@ie.u-ryukyu.ac.jp} +} + +% make the title area +\maketitle + +% no keywords + + + + +% For peer review papers, you can put extra information on the cover +% page as needed: +% \ifCLASSOPTIONpeerreview +% \begin{center} \bfseries EDICS Category: 3-BBND \end{center} +% \fi +% +% For peerreview papers, this IEEEtran command inserts a page break and +% creates the second title. It will be ignored for other modes. +\IEEEpeerreviewmaketitle + +本章ã§ã¯ LLVM 㨠Clang を利用ã—ãŸæ–°ã—ã„プログラミング言語ã®ã‚³ãƒ³ãƒ‘イラã®å®Ÿè£…ã‚’è¡Œã†æ–¹æ³•ã‚’ Continuaton based C ã¨ã„ã†è¨€èªžã®å®Ÿè£…例ã¨ã¨ã‚‚ã«èª¬æ˜Žã™ã‚‹. +ã¾ãŸ, ã“ã®å®Ÿè£…ã§ã¯ LLVM IR ã«å¤‰æ›´ã‚’加ãˆã‚‹ã“ã¨ã¯ã—ãªã„. LLVM IR ã«å¤‰æ›´ã‚’加ãˆã‚‹äº‹ã¯å¯èƒ½ã§ã‚ã‚‹ãŒ, ãã†ã—ãŸå ´åˆæœ€é©åŒ–ã‚’å«ã‚€ LLVM ã®å…¨ã¦ã®ãƒ‘スãŒãã®å¤‰æ›´ã®å½±éŸ¿ã‚’å—ã‘, 対応ã•ã›ãªã‘ã‚Œã°ãªã‚‰ããªã‚‹. ã“ã‚Œã¯å¤§å¤‰é›£ã—ãç¾å®Ÿçš„ã§ãªã„. + +\section{Continuation based C} +今回例ã¨ã—ã¦ç”¨ã„ã‚‹ Continuation based C \cite{CbC2011}(以下 CbC) 㯠code segment ã¨ã„ã†å‡¦ç†å˜ä½ã‚’æŒã¤. +code segment ã®å®£è¨€ã¯ \_\_code ã¨ã„ã†åž‹ã‚’用ã„ã¦è¡Œã†ã¨ã™ã‚‹. リスト \ref{code_simple} ã¯æœ€ã‚‚基本的㪠CbC ã®ã‚³ãƒ¼ãƒ‰ã®ä¸€ä¾‹ã§, 図 \ref {fig:code_simple}ã¯ãれを図示ã—ãŸã‚‚ã®ã§ã‚ã‚‹. + +ç¾åœ¨ã® code segment ã‹ã‚‰æ¬¡ã® code segment ã¸ã®å‡¦ç†ã®ç§»å‹•ã¯ goto ã®ã‚ã¨ã« code segment åã¨å¼•æ•°ã‚’並ã¹ã¦è¨˜è¿°ã™ã‚‹ã“ã¨ã§æ¬¡ã® code segment ã¸ã¨å‡¦ç†ã‚’移㙠(ã“れを軽é‡ç¶™ç¶šã¨å‘¼ã¶) . +軽é‡ç¶™ç¶šã§ã¯ Secheme ã® call/cc ç­‰ã®ç¶™ç¶šã¨ç•°ãªã‚Šå‘¼ã³å‡ºã—å…ƒã®ç’°å¢ƒã‚’æŒãŸãªã„. + +\begin{lstlisting}[frame=lrbt,label=code_simple,caption={\footnotesize code segment ã®è»½é‡ç¶™ç¶š}] +__code cs0(int a, int b){ + goto cs1(a+b); +} + +__code cs1(int c){ + goto cs2(c); +} +\end{lstlisting} + +\begin{figure}[htp] + \begin{center} + \scalebox{0.55}{\includegraphics{fig/codesegment.pdf}} + \end{center} + \caption{code segment ã®è»½é‡ç¶™ç¶š} + \label{fig:code_simple} +\end{figure} + + +\section{clangAST ã«ã¤ã„ã¦} +LLVM 㨠clang を用ã„ãŸã‚³ãƒ³ãƒ‘イラã®å®Ÿè£…ã§ã¯åŸºæœ¬çš„ã« clang ã®ä¸­é–“表ç¾ã§ã‚ã‚‹ clangAST を組ã¿ç«‹ã¦ã¦ã„ãã“ã¨ã«ãªã‚‹. clangAST ã¯ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®è§£æžçµæžœã‚’ä¿æŒã—ãŸãƒ„リーã§ã‚ã‚‹. AST 㯠``-Xclang -ast-dump'' ã¨ã„ã†ã‚ªãƒ—ションを付加ã™ã‚‹ã“ã¨ã§è¡¨ç¤ºã™ã‚‹ã“ã¨ã‚‚ã§ãã‚‹. 例ãˆã°ãƒªã‚¹ãƒˆ\ref{ASTSampleCode}コンパイル時ã«ã‚ªãƒ—ション ``-Xclang -ast-dump'' を付与ã—ãŸå ´åˆã¯å‡ºåŠ›çµæžœã¨ã—ã¦ãƒªã‚¹ãƒˆ\ref{AST}ãŒå¾—られる. 出力ã•ã‚ŒãŸ AST ã®å„行㌠AST ã®ãƒŽãƒ¼ãƒ‰ ãªã£ã¦ãŠã‚Š, å„ノード㯠Decl, Stmt, Expr ã¨ã„ã£ãŸã‚¯ãƒ©ã‚¹ã‚’継承ã—ãŸã‚‚ã®ã«ãªã£ã¦ã„ã‚‹. ãã‚Œãžã‚Œã®ç°¡å˜ãªèª¬æ˜Žã‚’以下ã«è¨˜ã™ (å„クラスã®è©³ç´°ãªå®Ÿè£…㯠clang documentation\cite{clang} ã‚’å‚考ã«). + +\begin{description} + \item[Decl]\mbox{}\\ + 宣言や定義を表ã™ã‚¯ãƒ©ã‚¹ã§ã‚ã‚Š, 関数ã®å®£è¨€ã‚’表㙠FunctionDecl, 変数ã®å®£è¨€ã‚’表㙠VarDecl ç­‰ã®ã‚µãƒ–クラスãŒå­˜åœ¨ã™ã‚‹. + \item[Stmt]\mbox{}\\ + 一ã¤ã®æ–‡ã«å¯¾å¿œã™ã‚‹ã‚¯ãƒ©ã‚¹ã§ã‚ã‚Š, if æ–‡ã¨å¯¾å¿œã™ã‚‹ IfStmt, 宣言文ã¨å¯¾å¿œã™ã‚‹ DeclStmt, return æ–‡ã¨å¯¾å¿œã™ã‚‹ ReturnStmt ç­‰ã®ã‚µãƒ–クラスãŒå­˜åœ¨ã™ã‚‹. + \item[Expr]\mbox{}\\ + 一ã¤ã®å¼ã«å¯¾å¿œã™ã‚‹ã‚¯ãƒ©ã‚¹ã§ã‚ã‚Š, 関数呼ã³å‡ºã—ã¨å¯¾å¿œã™ã‚‹ CallExpr, キャストã¨å¯¾å¿œã™ã‚‹ CastExpr ç­‰ã®ã‚µãƒ–クラスãŒå­˜åœ¨ã™ã‚‹. +\end{description} + +ã“れらをè¸ã¾ãˆã¦, ソースコード\ref{ASTSampleCode}ã¨å‡ºåŠ›ã•ã‚ŒãŸ AST( リスト\ref{AST} ) ã«æ³¨ç›®ã™ã‚‹. + +1行目㮠TranslationUnitDecl ãŒæ ¹ãƒŽãƒ¼ãƒ‰ã«å½“ãŸã‚‹. TranslationUnitDecl ã¯ç¿»è¨³å˜ä½ã‚’表ã™ã‚¯ãƒ©ã‚¹ã§ã‚ã‚Š, ã“ã® AST ãŒä¸€ã¤ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¨å¯¾å¿œã—ã¦ã„ã‚‹ã“ã¨ãŒã‚ã‹ã‚‹. 実際ã«ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®å†…容ãŒå映ã•ã‚Œã¦ã„ã‚‹ã®ã¯5行目以é™ã®ãƒŽãƒ¼ãƒ‰ã§, 5行目㮠FunctionDecl ãŒã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰\ref{ASTSampleCode}ã®1行目, add 関数ã®å®šç¾©éƒ¨åˆ†ã«å½“ãŸã‚‹. ソースコード\ref{ASTSampleCode}ã®7行目㮠add 関数ã®å‘¼ã³å‡ºã—ã¯, AST ã§ã¯ãƒªã‚¹ãƒˆ\ref{AST}ã®21行目, CallExpr ã§è¡¨ã•ã‚Œã¦ã„ã‚‹. ã“ã® CallExpr ã®ä¸‹ã®ãƒŽãƒ¼ãƒ‰ã‚’見ã¦ã„ãã¨23行目㮠DeclRefExpr ãŒé–¢æ•°ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’æŒã£ã¦ãŠã‚Š, ã“れ㌠add 関数ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ä¸€è‡´ã™ã‚‹ã“ã¨ã‹ã‚‰, CallExpr ã¯å‘¼ã³å‡ºã™é–¢æ•°ã¸ã®å‚照をæŒã£ã¦ã„ã‚‹ã“ã¨ãŒã‚ã‹ã‚‹. ã“れらã®ãƒŽãƒ¼ãƒ‰ä»¥å¤–ã«ã¤ã„ã¦ã‚‚ return 文㯠ReturnStmt, 変数宣言㯠VarDecl ã¨ã„ã†ã‚ˆã†ã«, å„ノードãŒã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®ã„ãšã‚Œã‹ã®éƒ¨åˆ†ã«å¯¾å¿œã—ã¦ã„ã‚‹ã“ã¨ãŒèª­ã¿å–れる. + +\begin{lstlisting}[frame=lrbt, label=ASTSampleCode, caption={sample.c}] +int add(int a, int b){ + return a + b; +} + +int main(){ + int res; + res = add(1,1); + return res; +} +\end{lstlisting} +\begin{lstlisting}[frame=lrbt, label=AST, caption={sample.c ã® AST}] +TranslationUnitDecl 0x102020cd0 <> +|-TypedefDecl 0x1020211b0 <> __int128_t '__int128' +|-TypedefDecl 0x102021210 <> __uint128_t 'unsigned __int128' +|-TypedefDecl 0x102021560 <> __builtin_va_list '__va_list_tag [1]' +|-FunctionDecl 0x102021700 add 'int (int, int)' +| |-ParmVarDecl 0x1020215c0 a 'int' +| |-ParmVarDecl 0x102021630 b 'int' +| `-CompoundStmt 0x102021878 +| `-ReturnStmt 0x102021858 +| `-BinaryOperator 0x102021830 'int' '+' +| |-ImplicitCastExpr 0x102021800 'int' +| | `-DeclRefExpr 0x1020217b0 'int' lvalue ParmVar 0x1020215c0 'a' 'int' +| `-ImplicitCastExpr 0x102021818 'int' +| `-DeclRefExpr 0x1020217d8 'int' lvalue ParmVar 0x102021630 'b' 'int' +`-FunctionDecl 0x1020218f0 main 'int ()' + `-CompoundStmt 0x1020523c0 + |-DeclStmt 0x102052210 + | `-VarDecl 0x1020219a0 res 'int' + |-BinaryOperator 0x102052338 'int' '=' + | |-DeclRefExpr 0x102052228 'int' lvalue Var 0x1020219a0 'res' 'int' + | `-CallExpr 0x102052300 'int' + | |-ImplicitCastExpr 0x1020522e8 'int (*)(int, int)' + | | `-DeclRefExpr 0x102052250 'int (int, int)' Function 0x102021700 'add' 'int (int, int)' + | |-IntegerLiteral 0x102052278 'int' 1 + | `-IntegerLiteral 0x102052298 'int' 1 + `-ReturnStmt 0x1020523a0 + `-ImplicitCastExpr 0x102052388 'int' + `-DeclRefExpr 0x102052360 'int' lvalue Var 0x1020219a0 'res' 'int' +\end{lstlisting} + + +\section{æ–°ã—ã„åž‹(\_\_code)を実装ã™ã‚‹ã«ã¯} +clang ã§æ–°ã—ã„型を扱ãˆã‚‹ã‚ˆã†ã«ã™ã‚‹ãŸã‚ã«ã¯, キーワードを登録ã™ã‚‹, 識別å­ã‚’登録ã™ã‚‹, QualType ã®æ‰±ã† Type ã®ç™»éŒ²ã‚’ã™ã‚‹ã¨ã„ã£ãŸä½œæ¥­ãŒå¿…è¦ã§ã‚ã‚‹. ã“れらを順ã«èª¬æ˜Žã™ã‚‹. + +clang ã§ã¯, 予約語ã¯å…¨ã¦ \$(CLANG)\footnote{clang ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’展開ã—ãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ãƒ‘ス}/include/ clang/Basic/TokenKinds.def ã«å®šç¾©ã•ã‚Œã¦ãŠã‚Š, ã“ã“ã§å®šç¾©ã—ãŸäºˆç´„語ã®é ­ã« kw\_ を付ã‘ãŸã‚‚ã®ãŒãã®äºˆç´„語㮠ID ã¨ãªã‚‹. ã“ã“ã«, 次ã®ã‚ˆã†ã«å¤‰æ›´ã‚’加ãˆã¦ \_\_code を追加ã—ãŸ. ã“れ㧠\_\_code ã«å¯¾å¿œã™ã‚‹ token ã® id ㌠kw\_\_\_code ã«ãªã‚‹. ã“ã“ã§ä½¿ã‚ã‚Œã¦ã„ã‚‹ KEYWORD マクロã¯äºˆç´„語ã®å®šç¾©ã«ç”¨ã„られるもã®ã§, 第一引数ãŒç™»éŒ²ã—ãŸã„予約語, 第二引数ãŒãã®äºˆç´„語ãŒåˆ©ç”¨ã•ã‚Œã‚‹ç¯„囲を表ã™. KEYALL ã¯å…¨ã¦ã® C, C++ ã§ã‚µãƒãƒ¼ãƒˆã•ã‚Œã‚‹ã“ã¨ã‚’示ã—, ã“ã®ä»–ã«ã¯ C++ ã®äºˆç´„語ã§ã‚ã‚‹ã“ã¨ã‚’示㙠KEYCXX ã‚„ C++11 以é™ã§åˆ©ç”¨ã•ã‚Œã‚‹ã“ã¨ã‚’示㙠KEYCXX11 ç­‰ãŒã‚ã‚‹. code segment 㯠C ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«é–¢ã‚らãšã‚µãƒãƒ¼ãƒˆã•ã‚Œã‚‹ã¹ãã§ã‚ã‚‹ã®ã§ KEYALL ã‚’é¸æŠžã—ãŸ. + +\begin{lstlisting}[frame=lrbt,label=token,caption={キーワードã®ç™»éŒ²}] + : +KEYWORD(__func__ , KEYALL) +KEYWORD(__objc_yes , KEYALL) +KEYWORD(__objc_no , KEYALL) + +#ifndef noCbC // CbC Keywords. +KEYWORD(__code , KEYALL) + : +#endif + : +\end{lstlisting} + +予約語を定義ã—ãŸã“ã¨ã§, clang ã®å­—å¥è§£æžå™¨ãŒå„予約語をèªè­˜ã§ãるよã†ã«ãªã£ãŸ. ã—ã‹ã—, ã¾ã äºˆç´„語をèªè­˜ã§ãるよã†ã«ãªã£ãŸã ã‘㧠\_\_code ã¨ã„ã†åž‹è‡ªä½“ã¯ç”¨æ„ã•ã‚Œã¦ã„ãªã„. + +clang ã§ã¯åž‹ã®è­˜åˆ¥å­ã®ç®¡ç†ã« TypeSpecType ã¨ã„ㆠenum を用ã„ã‚‹. ã“ã® enum ã®å®šç¾©ã¯ \$(CLANG)/include/clang/Basic/Specifiers.h ã§è¡Œã‚ã‚Œã¦ãŠã‚Š, ã“れを以下ã®ã‚ˆã†ã«ç·¨é›†ã—ãŸ. + +\begin{lstlisting}[frame=lrbt,label=TST,caption={TypeSpecTypeã®ç™»éŒ²}] +enum TypeSpecifierType { + TST_unspecified, + TST_void, + : +#ifndef noCbC + TST___code, +#endif + : +\end{lstlisting} +ã“ã‚Œã«åŠ ãˆã¦ã•ã‚‰ã« QualType ãŒç”¨ã„ã‚‹ Type を作らãªã‘ã‚Œã°ãªã‚‰ãªã„. + +QualType ã¯å¤‰æ•°ã‚„関数等ã®åž‹æƒ…報をæŒã¤ã‚¯ãƒ©ã‚¹ã§, const, volatile ç­‰ã®ä¿®é£¾å­ã®æœ‰ç„¡ã‚’示ã™ãƒ•ãƒ©ã‚°ã¨, int, char, * (ãƒã‚¤ãƒ³ã‚¿) ç­‰ã®åž‹æƒ…報をæŒã¤ Type オブジェクトã¸ã®ãƒã‚¤ãƒ³ã‚¿ã‚’æŒã¤. QualType ã®æŒã¤ Type オブジェクト㯠getTypePtr 関数を呼ã³å‡ºã™ã“ã¨ã§å–å¾—ã§ã, Type クラス㯠isIntegerType, isVoidType, isPointerType ã¨è¨€ã£ãŸé–¢æ•°ã‚’æŒã¤ã®ã§, ã“れを利用ã—ã¦åž‹ã‚’調ã¹ã‚‹ã“ã¨ãŒã§ãã‚‹. ã¾ãŸ, ãƒã‚¤ãƒ³ã‚¿åž‹ã§ã‚ã‚‹å ´åˆã«ã¯ getPointeeType ã¨ã„ã†é–¢æ•°ã‚’呼ã³å‡ºã™ã“ã¨ã§ãã®ãƒã‚¤ãƒ³ã‚¿ãŒæŒ‡ã™åž‹ã® Type ã‚’æŒã¤ QualType ã‚’å¾—ã‚‹ã“ã¨ãŒã§ã, ãれを通ã—ã¦ãƒã‚¤ãƒ³ã‚¿ã®æŒ‡ã™åž‹ã‚’知るã“ã¨ãŒå¯èƒ½ã§ã‚ã‚‹. é…列やå‚照等ã«å¯¾ã—ã¦ã‚‚åŒæ§˜ã«, ãã‚Œãžã‚Œè¦ç´ , å‚照元㮠Type ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã‚’æŒã¤ QualType を得る関数ãŒå­˜åœ¨ã™ã‚‹. 修飾å­ã®æœ‰ç„¡ã¯ const ãªã‚‰ isConstQualified, volatile ãªã‚‰ isVolatileQualified ã¨ã„ã£ãŸé–¢æ•°ã‚’用ã„ã¦ç¢ºèªã§ãã‚‹. + +ã“ã“ã§, 以下ã«ä¸€ã¤ã®ä¾‹ã¨ã—㦠``const int *'' åž‹ã«å¯¾å¿œã™ã‚‹ QualType を表ã—ãŸå›³ã‚’示ã™. + +\begin{figure}[htpb] + \begin{center} + \scalebox{0.2}{\includegraphics{fig/qualType.pdf}} + \end{center} + \caption{const int * ã«å¯¾å¿œã™ã‚‹ QualType} + \label{fig:qual} +\end{figure} + +図\ref{fig:qual}ã® QualType A ㌠const int * åž‹ã®å¤‰æ•°, ã‚‚ã—ãã¯é–¢æ•°ã®æŒã¤ QualType ã§ã‚ã‚‹. ã“ã‚Œã®æŒã¤ getTypePtr 関数を呼ã³å‡ºã™ã“ã¨ã§, PointerType ã‚’å¾—ã‚‹ã“ã¨ãŒã§ãã‚‹. ã“ã® PointerType ãŒã©ã®åž‹ã«å¯¾ã™ã‚‹ãƒã‚¤ãƒ³ã‚¿ã‹ã‚’知るã«ã¯å‰è¿°ã—ãŸã¨ãŠã‚Š getPointeeType を呼ã³å‡ºã›ã°è‰¯ã„. ãã†ã—ã¦å‘¼ã³å‡ºã•ã‚ŒãŸã®ãŒ QualType B ã§ã‚ã‚‹. ã“ã®ä¾‹ã® QualType 㯠const int * åž‹ã«å¯¾å¿œã™ã‚‹ã‚‚ã®ã§ã‚ã‚‹ã®ã§, ã“ã“ã§å–å¾—ã§ã㟠QualType B ã®getTypePtr 関数を呼ã³å‡ºã™ã¨, 当然 IntegerType ãŒå¾—られる. ã¾ãŸ, ã“ã®æ™‚ int ã«ã¯ const ãŒã‹ã‹ã£ã¦ã„ã‚‹ã®ã§, QualType B ã® isConstQualified 関数を呼ã¶ã¨ true ãŒè¿”ã‚‹. + + +ã“ã®ã‚ˆã†ã«, clang ã§ã¯è¤‡é›‘ãªåž‹ã‚’æŒã¤é–¢æ•°, 変数ã§ã‚‚ãã®åž‹ã‚’表ã™ãŸã‚ã«æŒã¤ QualType ã¯ä¸€ã¤ã§ã‚ã‚Š, ãã‚ŒãŒæŒ‡ã™ Type を辿るã“ã¨ã§å®Œå…¨ãªåž‹ã‚’知るã“ã¨ãŒã§ãã‚‹. + +ã“ã® Type ã®å®šç¾©ã¯ \$(CLANG)/include/clang/AST/BuiltinTypes.def ã§è¡Œã‚ã‚Œã¦ã„ã‚‹ã®ã§, ã“れを編集ã™ã‚‹(リスト\ref{clangType}). ã“ã“ã§ä½¿ç”¨ã•ã‚Œã¦ã„るマクロã«ã¯ç¬¦å·ä»˜ãæ•´æ•°ã§ã‚ã‚‹ã“ã¨ã‚’示㙠SIGNED\_TYPE や符å·ç„¡ã—æ•´æ•°ã§ã‚ã‚‹ã“ã¨ã‚’示㙠UNSIGNED\_TYPE ç­‰ãŒã‚ã‚Š, ãれら㯠BUILTIN\_TYPE マクロを拡張ã™ã‚‹ã‚‚ã®ã§ã‚ã‚‹. \_\_code åž‹ã¯ç¬¦å·ç„¡ã—,有りã¨ã„ã£ãŸæ€§è³ªã‚’ä¿ã¤å¿…è¦ã¯ãªã„ãŸã‚, 今回㯠BUILTIN\_TYPE を使ã†ã¹ãã§ã‚ã‚‹. + +\begin{lstlisting}[frame=lrbt,label=clangType,caption={Typeã®ç™»éŒ²}] + : +// 'bool' in C++, '_Bool' in C99 +UNSIGNED_TYPE(Bool, BoolTy) + +// 'char' for targets where it's unsigned +SHARED_SINGLETON_TYPE(UNSIGNED_TYPE(Char_U, CharTy)) + +// 'unsigned char', explicitly qualified +UNSIGNED_TYPE(UChar, UnsignedCharTy) + +#ifndef noCbC +BUILTIN_TYPE(__Code, __CodeTy) +#endif + : +\end{lstlisting} + +ã“ã“ã¾ã§ã®å¤‰æ›´ã§ clang ㌠\_\_code 型を扱ãˆã‚‹ã‚ˆã†ã«ãªã‚Š, \_\_code åž‹ã®é–¢æ•°, å³ã¡ code segment を解æžã™ã‚‹æº–å‚™ãŒæ•´ã£ãŸ. +次㯠\_\_code 型を解æžã— clangAST ã«å¤‰æ›ã§ãるよã†ã«ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„. clang ã§ã¯åž‹ã®æ§‹æ–‡è§£æžã¯ Parser クラス㮠ParseDeclarationSpecifiers 関数ã§è¡Œã‚れる. ã“ã®é–¢æ•°ã®ã‚‚ã¤å·¨å¤§ãª switch 文㫠kw\_\_\_code ãŒæ¥ãŸæ™‚ã®å‡¦ç†ã‚’加ãˆã¦ã‚„ã‚Œã°è‰¯ã„. 具体的ã«ã¯ switch 文内ã«ä»¥ä¸‹ã®ã‚ˆã†ã«è¨˜è¿°ã‚’加ãˆãŸ. ã¾ãŸ, ã“ã®é–¢æ•°ã®å®šç¾©ã¯ \$(CLANG)/lib/Parse/ParseDecl.cpp ã§è¡Œã‚ã‚Œã¦ã„ã‚‹. + +\begin{lstlisting}[frame=lrbt,label=parse__Code,caption={\_\_code ã® parse}] + case tok::kw___code: { + LangOptions* LOP; + LOP = const_cast(&getLangOpts()); + LOP->HasCodeSegment = 1; + isInvalid = DS.SetTypeSpecType(DeclSpec::TST___code, Loc, PrevSpec, DiagID); + break; + } +\end{lstlisting} + +é‡è¦ãªã®ã¯ 5行目ã§ã‚ã‚‹. SetTypeSpecType 関数ã¯ãã®åã®é€šã‚Š TypeSpecType を設定ã™ã‚‹é–¢æ•°ã§ã‚ã‚Š, ã“ã“㧠\_\_code 型㌠DeclSpec ã«ç™»éŒ²ã•ã‚Œã‚‹. DeclSpec 㯠型ã®è­˜åˆ¥å­ã‚’æŒã¤ãŸã‚ã®ã‚¯ãƒ©ã‚¹ã§ã‚ã‚Š, 後㫠QualType ã«å¤‰æ›ã•ã‚Œã‚‹. + +\section{オプションã®è¿½åŠ } +リスト\ref{parse__Code} ã§ã¯æ–°ãŸã«ä½œæˆã—㟠HasCodeSegment ã¨ã„ã†ã‚ªãƒ—ションを変更ã™ã‚‹å‡¦ç†ã‚’è¡Œã£ã¦ã„ã‚‹(4行目). ã“ã®ã‚ªãƒ—ションã®å€¤ã‚’変更ã—ã¦ã„ã‚‹ã®ã¯ã‚³ãƒ¼ãƒ‰å†…ã« code segment ãŒå­˜åœ¨ã™ã‚‹ã“ã¨ã‚’ LLVM ã«ä¼ãˆ, 最é©åŒ–を利用ã™ã‚‹ãŸã‚ã§ã‚ã‚‹. ã“ã®ã‚ªãƒ—ション㯠LangOptions ã¨ã„ã†ã‚¯ãƒ©ã‚¹ã«ã‚ˆã£ã¦ç®¡ç†ã•ã‚Œã¦ã„ã‚‹. LangOptions ã¯ã‚³ãƒ³ãƒ‘イル時ã®ã‚ªãƒ—ションã®ã†ã¡, プログラミング言語ã«é–¢ã‚るオプションを管ç†ã™ã‚‹ã‚¯ãƒ©ã‚¹ã§ã‚ã‚Š, ãれら㯠\$(CLANG)/include/clang/Basic/ LangOptions.def ã§å®šç¾©ã•ã‚Œã‚‹. ã“れを以下ã®ãƒªã‚¹ãƒˆ \ref{langOpt} ã®ã‚ˆã†ã«å¤‰æ›´ã—㦠HasCodeSegment ã¨ã„ã†ã‚ªãƒ—ションを追加ã—ãŸ. LANGOPT マクロã®å¼•æ•°ã¯ç¬¬ä¸€å¼•æ•°ã‹ã‚‰é †ã«ã‚ªãƒ—ションå, å¿…è¦ãƒ“ット数, デフォルトã®å€¤, オプションã®èª¬æ˜Ž ã¨ãªã£ã¦ã„ã‚‹. + +\begin{lstlisting}[frame=lrbt,label=langOpt,caption={LangOptions ã®è¿½åŠ }] + : +LANGOPT(ApplePragmaPack, 1, 0, "Apple gcc-compatible #pragma pack handling") + +BENIGN_LANGOPT(RetainCommentsFromSystemHeaders, 1, 0, "retain documentation comments from system headers in the AST") + +#ifndef noCbC +LANGOPT(HasCodeSegment , 1, 0, "CbC") +#endif + : +\end{lstlisting} + +ãŸã ã—ã“ã®ã‚ªãƒ—ション㯠clang 内ã§æœ‰åŠ¹ãªã‚‚ã®ã§, LLVM IR ã®å‡¦ç†ä»¥é™ã‚‚有効ã«ã—ã¦ãŠããŸã„å ´åˆ LLVM å´ã§ã‚‚オプションを新設ã—, 引ã継ãå¿…è¦ãŒã‚ã‚‹. + +clang ã®ã‚ªãƒ—ションã®å€¤ã¯ \$(CLANG)/lib/CodeGen/BackendUtil.cpp 内㮠CreateTargetMachine 関数(\ref{option})ã§è¡Œã‚れる. + +\begin{lstlisting}[frame=lrbt,label=option,caption={clang ã‹ã‚‰ LLVM ã¸ã®ã‚ªãƒ—ションã®å¼•ã継ãŽ}] + : + Options.PositionIndependentExecutable = LangOpts.PIELevel != 0; + Options.EnableSegmentedStacks = CodeGenOpts.EnableSegmentedStacks; +#ifndef noCbC + Options.HasCodeSegment = LangOpts.HasCodeSegment; + Options.GuaranteedTailCallOpt = LangOpts.HasCodeSegment; +#endif + : +\end{lstlisting} + +LLVM ã®ã‚ªãƒ—ション㯠TargetOptions ã¨ã„ã†ã‚¯ãƒ©ã‚¹ãŒç®¡ç†ã—ã¦ãŠã‚Š, ãã®å®šç¾©ã¯ \$(LLVM)\footnote{LLVMã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’インストールã—ãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ãƒ‘ス}/include/llvm/Target/ TargetOptions.h ã§è¡Œã‚ã‚Œã¦ã„ã‚‹. ã“ã¡ã‚‰ã¯ãƒžã‚¯ãƒ­ã¯ä½¿ã£ã¦ãŠã‚‰ãšãƒ“ットフィールドを用ã„ã¦å®šç¾©ã•ã‚Œã¦ã„ã‚‹. + +\begin{lstlisting}[frame=lrbt,label=option,caption={clang ã‹ã‚‰ LLVM ã¸ã®ã‚ªãƒ—ションã®å¼•ã継ãŽ}] + class TargetOptions { + : + /// Emit target-specific trap instruction for 'unreachable' IR instructions. + unsigned TrapUnreachable : 1; + + /// EmulatedTLS - This flag enables emulated TLS model, using emutls + /// function in the runtime library.. + unsigned EmulatedTLS : 1; + #ifndef noCbC + unsigned HasCodeSegment : 1; + #endif + : +\end{lstlisting} + + +\section{æ–°ã—ã„構文(軽é‡ç¶™ç¶š)ã®è¿½åŠ } +次ã¯æ–°ã—ã„構文ã®è¿½åŠ ã«ã¤ã„ã¦. ã“ã“ã§ã¯ CbC ã®è»½é‡ç¶™ç¶šã®ãŸã‚ã®æ§‹æ–‡ã‚’追加ã™ã‚‹. + +CbC ã§è»½é‡ç¶™ç¶šã¯ goto ã« code segment åã‚’æ·»ãˆã‚‹ã“ã¨ã§è¡Œã†. ã“ã®æ–°ã—ã„ goto syntax を追加ã™ã‚‹. 継続ã®ãŸã‚ã® goto syntax ã¯, goto ã®å¾Œã«é–¢æ•°å‘¼ã³å‡ºã—ã¨åŒã˜æ§‹æ–‡ãŒæ¥ã‚‹å½¢ã«ãªã‚‹. ã—ãŸãŒã£ã¦, goto ã®æ§‹æ–‡è§£æžã‚’è¡Œã†éš›ã«ã“ã®æ§‹æ–‡ã‚‚解æžã§ãるよã†ã«å¤‰æ›´ã‚’加ãˆã‚‹å¿…è¦ãŒã‚ã‚‹. clang ㌠goto æ–‡ã®æ§‹æ–‡è§£æžã‚’è¡Œã£ã¦ã„ã‚‹ã®ã¯, Parser クラス㮠ParseStatementOrDeclarationAfterAttributes 関数ã§ã‚ã‚Š, ã“ã®é–¢æ•°ã¯ \$(clang)/lib/Parse/ParseStmt.cpp ã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹. ã“ã®é–¢æ•°å†…ã«ã‚‚ switch æ–‡ãŒã‚ã‚Š, ã“ã®ä¸­ã® kw\_goto ãŒæ¥ãŸæ™‚ã®å‡¦ç†ã«æ‰‹ã‚’加ãˆã‚‹. 具体的ã«ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«å¤‰æ›´ã—ãŸ. + + +\begin{lstlisting}[frame=lrbt,label=ParseStmt,caption={goto æ–‡ã®æ§‹æ–‡è§£æž}] + : +case tok::kw_goto: // C99 6.8.6.1: goto-statement +#ifndef noCbC + if (!(NextToken().is(tok::identifier) && PP.LookAhead(1).is(tok::semi)) && // C: 'goto' identifier ';' + NextToken().isNot(tok::star)) { // C: 'goto' '*' expression ';' + SemiError = "goto code segment"; + return ParseCbCGotoStatement(Attrs, Stmts); // CbC: goto codesegment statement + } +#endif + Res = ParseGotoStatement(); + SemiError = "goto"; + break; + : +\end{lstlisting} + +ifndef, endif マクロã§å›²ã¾ã‚ŒãŸéƒ¨åˆ†ãŒè¿½åŠ ã—ãŸã‚³ãƒ¼ãƒ‰ã§ã‚ã‚‹. åˆã‚ã® if æ–‡ã¯, token ã®å…ˆèª­ã¿ã‚’è¡Œã„, ã“ã® goto ㌠C ã® goto æ–‡ã®ãŸã‚ã®ã‚‚ã®ãªã®ã‹, ãã†ã§ãªã„ã®ã‹ã‚’判断ã—ã¦ã„ã‚‹. C ã®ãŸã‚ã® goto ã§ãªã„ã¨åˆ¤æ–­ã—ãŸå ´åˆã®ã¿ ParseCbCGotoStatement 関数ã«å…¥ã‚Š, 継続構文ã®æ§‹æ–‡è§£æžã‚’è¡Œã†. ParseCbCGotoStatement 関数ã¯ç‹¬è‡ªã«å®šç¾©ã—ãŸé–¢æ•°ã§, ãã®å†…容を以下ã®ãƒªã‚¹ãƒˆ\ref{ParseCbCGotoStmt} ã«ç¤ºã™. ã“ã®ã‚ˆã†ã«, é•·ã„処ç†ã‚’追加ã™ã‚‹å ´åˆã«ã¯åˆ¥ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’作æˆã—, ãã“ã«é–¢æ•°ã¨ã—ã¦å‡¦ç†ã‚’定義ã™ã‚‹ã»ã†ãŒ LLVM, clang ã®ã‚¢ãƒƒãƒ—デートã®éš›ã«å¤‰æ›´ãŒæ¥½ã«ãªã‚‹ãŸã‚良ã„. + +\begin{lstlisting}[frame=lrbt,label=ParseCbCGotoStmt,caption={ParseCbCGotoStatement}] +StmtResult Parser::ParseCbCGotoStatement(ParsedAttributesWithRange &Attrs,StmtVector &Stmts) { + assert(Tok.is(tok::kw_goto) && "Not a goto stmt!"); + ParseScope CompoundScope(this, Scope::DeclScope); + StmtVector CompoundedStmts; + + SourceLocation gotoLoc = ConsumeToken(); // eat the 'goto'. + StmtResult gotoRes; + Token TokAfterGoto = Tok; + Stmtsp = &Stmts; + + gotoRes = ParseStatementOrDeclaration(Stmts, false); + if (gotoRes.get() == NULL) + return StmtError(); + else if (gotoRes.get()->getStmtClass() != Stmt::CallExprClass) { // if it is not function call + Diag(TokAfterGoto, diag::err_expected_ident_or_cs); + return StmtError(); + } + + assert((Attrs.empty() || gotoRes.isInvalid() || gotoRes.isUsable()) && + "attributes on empty statement"); + if (!(Attrs.empty() || gotoRes.isInvalid())) + gotoRes = Actions.ProcessStmtAttributes(gotoRes.get(), Attrs.getList(), Attrs.Range); + if (gotoRes.isUsable()) + CompoundedStmts.push_back(gotoRes.release()); + + // add return; after goto codesegment(); + if (Actions.getCurFunctionDecl()->getResultType().getTypePtr()->is__CodeType()) { + ExprResult retExpr; + StmtResult retRes; + retRes = Actions.ActOnReturnStmt(gotoLoc, retExpr.get(), getCurScope()); + if (retRes.isUsable()) + CompoundedStmts.push_back(retRes.release()); + } + return Actions.ActOnCompoundStmt(gotoLoc, Tok.getLocation(), CompoundedStmts, false); +} +\end{lstlisting} + +ã“ã®é–¢æ•°ã§ã¯, goto ã®å¾Œã®æ§‹æ–‡ã‚’解æžã—ã¦é–¢æ•°å‘¼ã³å‡ºã—ã® Stmt を生æˆã™ã‚‹. ãã®å¾Œ, tail call elimination ã®æ¡ä»¶ã‚’満ãŸã™ãŸã‚ã«ç›´å¾Œã« return statement ã®ç”Ÿæˆã‚‚è¡Œã†. 関数呼ã³å‡ºã—ã®è§£æžéƒ¨åˆ†ã¯ ParseStatementOrDeclaration 関数ã«ä»»ã›, goto ã®å¾Œã«é–¢æ•°å‘¼ã³å‡ºã—ã®æ§‹æ–‡ãŒãã¦ã„ãªã„å ´åˆã«ã¯ã‚¨ãƒ©ãƒ¼ã‚’出力ã™ã‚‹. + +return statement ã®ç”Ÿæˆã¯ ActOnReturnStmt 関数を用ã„ã‚‹ã“ã¨ã§æ¥½ã«è¡Œã†ã“ã¨ãŒå‡ºæ¥ã‚‹. 具体的ã«ã¯, 引数ã¨ã—ã¦ã‚½ãƒ¼ãƒ‰ã‚³ãƒ¼ãƒ‰ã®ä½ç½®ã‚’示㙠SourceLocation, Expr, 解æžä¸­ã®ã‚¹ã‚³ãƒ¼ãƒ—を示㙠scope を与ãˆã‚Œã°è‰¯ã„. SouceLocation 㯠Token ã‹ã‚‰å–å¾—ã§ãã‚‹. Expr ã¯å®£è¨€ã—ã¦ç”Ÿæˆã•ã‚ŒãŸã‚‚ã®ã‚’ã™ãã«åˆ©ç”¨ã—ã¦è‰¯ã„. ãã—ã¦ã‚¹ã‚³ãƒ¼ãƒ—ã¯, getCurScope 関数ã«ã‚ˆã£ã¦å–å¾—ã§ãã‚‹ç¾åœ¨ã®ã‚¹ã‚³ãƒ¼ãƒ—を与ãˆã‚Œã°è‰¯ã„. + +ã“ã†ã—ã¦å¾—られãŸäºŒã¤ã® Stmt ã‚’ StmtVector ã«å…¥ã‚Œ, ActOnCompoundStmt 関数ã«ä¸Žãˆã‚‹ã“ã¨ã§é©åˆ‡ãª Stmt ãŒå¾—られる. + +\section{最é©åŒ–パスã®é¸æŠž} +LLVM ã§ã¯æœ€é©åŒ–ã‚’å«ã‚ã™ã¹ã¦ã®å‡¦ç†ãŒãƒ‘スã«ã‚ˆã£ã¦è¡Œã‚れる. 最é©åŒ–パスをé¸æŠžã™ã‚‹ã“ã¨ã§ä»»æ„ã®æœ€é©åŒ–を利用ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã‚‹. パス㯠PassManager ã«ã‚ˆã£ã¦ç®¡ç†ã•ã‚Œã‚‹. 基本的ãªãƒ‘スã®ã‚»ãƒƒãƒˆã‚’追加ã—ã¦ãれる populateFunctionPassManager, populateModulePassManager ç­‰ãŒå­˜åœ¨ã—, clang ã§ã‚‚ãれを用ã„ã¦ãƒ‘スã®è¿½åŠ ã‚’è¡Œã£ã¦ã„ã‚‹. ãªãŠ, functionPassManager ã¯é–¢æ•°å˜ä½ã§åƒãパス㮠PassManager ã§, modulePassManager ã¯ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«(ファイル)å˜ä½ã§åƒãパス㮠PassManager ã§ã‚ã‚‹. + +CbC ã§ã¯ tail call elimination ã¨ã„ã†æœ€é©åŒ–を強制ã™ã‚‹. ãã®ãŸã‚ã“ã“ã§ã¯ TailCallElimPass ã®è¿½åŠ ã‚’例ã¨ã—ã¦ç¤ºã™. + +clang ã§ã¯ \$(CLANG)/lib/CodeGen/BackendUtil.cpp ã® CreatePasses 関数ã‹ã‚‰ populateModulePassManager 関数を呼ã³å‡ºã—ã¦ãƒ‘スã®è¿½åŠ ã‚’è¡Œã£ã¦ã„ã‚‹. clang ã§ã¯æœ€é©åŒ–レベルを 2 以上ã«ã—ãŸå ´åˆã« tail call elimination ãŒæœ‰åŠ¹åŒ–ã•ã‚Œã‚‹ãŒã“れをレベルã«ã‹ã‹ã‚らãšè¿½åŠ ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´ã—㟠(リスト\ref{PassManager}). 変数 MPM ㌠PassManager ã§, add 関数を用ã„㦠pass ã®ç™»éŒ²ã‚’è¡Œã†. add 関数ã®å¼•æ•°ã« createTailCallEliminationPass 関数を指定ã™ã‚‹ã“ã¨ã§ tail call elimination pass ãŒè¿½åŠ ã•ã‚Œã‚‹. + +\begin{lstlisting}[frame=lrbt,label=PassManager,caption={tail call elimnation pass ã®è¿½åŠ }] + : + if (OptLevel == 0) { + : +#ifndef noCbC + MPM.add(createTailCallEliminationPass(true)); // Eliminate tail calls +#endif + : + } + : +#ifndef noCbC + MPM.add(createTailCallEliminationPass(false)); // Eliminate tail calls +#else + MPM.add(createTailCallEliminationPass()); // Eliminate tail calls +#endif + : +\end{lstlisting} + +\section{calling convention ã®é¸æŠž} +LLVM IR ã«ã¯é–¢æ•°å‘¼ã³å‡ºã—ã«æ§˜ã€…ãªãƒ•ãƒ©ã‚°ã‚’ã¤ã‘ã‚‹ã“ã¨ãŒå‡ºæ¥ã‚‹. ãã®ã†ã¡ã®ä¸€ã¤ã«å‘¼ã³å‡ºã—è¦ç´„ãŒã‚ã‚‹. LLVM ãŒã‚µãƒãƒ¼ãƒˆã™ã‚‹å‘¼ã³å‡ºã—è¦ç´„㯠ccc, fastcc, cc 10, cc 11 等多数存在ã™ã‚‹. ãã®ä¸€éƒ¨ã‚’ç°¡æ½”ã«ã¾ã¨ã‚ã‚‹ã¨ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚‹ (詳ã—ã㯠LLVM IR Language Reference\cite{LLVMIR}). + +\begin{description} + \item[ccc]\mbox{}\\ + 特ã«æŒ‡å®šã•ã‚Œã¦ã„ãªã„å ´åˆã«ã¯ã“ã‚Œã«ãªã‚‹. C ã®å‘¼ã³å‡ºã—è¦ç´„ã«å¯¾å¿œã—, å¯å¤‰é•·å¼•æ•°ã‚’サãƒãƒ¼ãƒˆã™ã‚‹. プロトタイプ宣言ã¨é–¢æ•°ã®å®šç¾©ã®ä¸ä¸€è‡´ã‚’許ã™. + \item[fastcc]\mbox{}\\ + ã“ã®è¦ç´„を指定ã™ã‚‹ã¨, 情報をレジスタを用ã„ã¦æ¸¡ã™ç­‰ã—ã¦, å¯èƒ½ãªé™ã‚Šé«˜é€Ÿãªå‘¼ã³å‡ºã—を試ã¿ã‚‹ã‚ˆã†ã«ãªã‚‹. ã“ã®å‘¼ã³å‡ºã—è¦ç´„ã¯å¯å¤‰å¼•æ•°ã‚’サãƒãƒ¼ãƒˆã›ãš, 呼ã³å‡ºã•ã‚Œã‚‹é–¢æ•°ã®ãƒ—ロトタイプã¨å‘¼ã³å‡ºã•ã‚Œã‚‹é–¢æ•°ãŒæ­£ç¢ºã«ä¸€è‡´ã™ã‚‹å¿…è¦ãŒã‚ã‚‹. + \item[cc 10]\mbox{}\\ + Glasgow Haskell Compiler ã®ãŸã‚ã«å®Ÿè£…ã•ã‚ŒãŸå‘¼ã³å‡ºã—è¦ç´„. X86 ã§ã®ã¿ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ãŠã‚Š, 引数ã«é–¢ã™ã‚‹ã„ãã¤ã‹ã®åˆ¶é™ã‚’ã‚‚ã¤. レジスタ内ã®å€¤ã‚’å…¨ã¦æ¸¡ã—, 呼ã³å‡ºã•ã‚ŒãŸé–¢æ•°ã¯ãƒ¬ã‚¸ã‚¹ã‚¿ã®å€¤ã‚’ä¿å­˜ã§ããªã„. ã“ã®å‘¼ã³å‡ºã—è¦ç´„ã¯é–¢æ•°åž‹ãƒ—ログラミング言語を実装ã™ã‚‹éš›ã«ä½¿ç”¨ã•ã‚Œã‚‹ register pinning ã¨ã„ã†æŠ€è¡“ã®ä»£ã‚ã‚Šã¨ã—ã¦ç‰¹å®šã®çŠ¶æ³ã§ã—ã‹ä½¿ç”¨ã—ã¦ã¯ãªã‚‰ãªã„. + \item[cc 11]\mbox{}\\ + High-Performance Erlang ã®ãŸã‚ã«å®Ÿè£…ã•ã‚ŒãŸå‘¼ã³å‡ºã—è¦ç´„. 通常㮠C ã®å‘¼ã³å‡ºã—è¦ç´„以上ã«å¼•æ•°ã‚’渡ã™ãŸã‚ã«ãƒ¬ã‚¸ã‚¹ã‚¿ã‚’利用ã™ã‚‹. X86 ã§ã®ã¿ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ãŠã‚Š, cc 10 åŒæ§˜ã« register pinning を用ã„ã‚‹. +\end{description} + +ã“ã®å‘¼å‡ºã—è¦ç´„㯠LLVM IR 以é™ã§åˆ©ç”¨ã•ã‚Œã‚‹ã®ã§ clang ㌠clangAST ã‚’ LLVM IR ã«å¤‰æ›ã™ã‚‹å‰ã«ä»˜åŠ ã™ã‚‹ã®ãŒè‰¯ã„. 今回㯠clang ãŒé–¢æ•°å‘¼ã³å‡ºã—ã®æƒ…報を設定ã™ã‚‹ arrangeLLVMFunctionInfo ã¨ã„ã†é–¢æ•°å†…ã§è¡Œã£ãŸ. ã“ã®é–¢æ•°ã¯ \$(CLANG)/lib/CodeGen /CGCall.cpp ã«ã‚ã‚‹. ã“ã®é–¢æ•°ã«ä»¥ä¸‹ã®ãƒªã‚¹ãƒˆ \ref{CC} ã«ç¤ºã•ã‚Œã‚‹ã‚³ãƒ¼ãƒ‰ã‚’加ãˆãŸ. 5 行目㌠fastcc を設定ã—ã¦ã„る箇所ã§ã‚ã‚‹. ã“ã® CC ãŒå¾Œã®å‡¦ç†ã§åˆ©ç”¨ã•ã‚Œã‚‹ã“ã¨ã§ fastcc ãŒè¨­å®šã•ã‚Œã‚‹. allowsOptionalArgs 関数ã¯å¯å¤‰é•·å¼•æ•°ã‚’æŒã¤ã‹ã©ã†ã‹ã‚’判別ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã—ã¦ã„ã‚‹. + +\begin{lstlisting}[frame=lrbt,label=CC,caption={fastcc ã®è¿½åŠ }] + : +#ifndef noCbC + if(resultType.getTypePtr()->is__CodeType()){ + if(!required.allowsOptionalArgs()) + CC = llvm::CallingConv::Fast; + } +#endif + : +\end{lstlisting} + +\section{動作確èª} + +ã“ã“ã¾ã§ã®å®Ÿè£…㧠clang を用ã„㦠CbC ã®åŸºæœ¬çš„ãªæ§‹æ–‡ã‚’解釈ã§ãるよã†ã«ãªã£ãŸ. ãŠã•ã‚‰ã„ã™ã‚‹ã¨ä»¥ä¸‹ã®æ©Ÿèƒ½ã‚’実装ã—ãŸ. + +\begin{itemize} +\item \_\_code åž‹ã®ç™»éŒ² +\item code segment ã®æ§‹æ–‡è§£æž +\item 軽é‡ç¶™ç¶šã®ãŸã‚ã®æ§‹æ–‡ã®å®Ÿè£… +\item tail call elimination ã®å¼·åˆ¶ +\item fastcc 指定 +\end{itemize} + +æ­£ã—ã実装出æ¥ã¦ã„ã‚‹ã‹ç¢ºèªã™ã‚‹ãŸã‚ã« LLVM IR, アセンブリコードã®äºŒç¨®ã‚’出力ã™ã‚‹. LLVM IR ã¯ã‚³ãƒ³ãƒ‘イル時㫠-S -emit-llvm ã¨ã„ã†ã‚ªãƒ—ションをã¤ã‘ã‚‹ã“ã¨ã§å‡ºåŠ›ã§ãã‚‹. リスト \ref{evalCbC} ãŒå…ƒã®ã‚³ãƒ¼ãƒ‰, リスト \ref{evalIR} ㌠LLVM IR, リスト \ref{evalAsm} ãŒã‚¢ã‚»ãƒ³ãƒ–リコードã§ã‚ã‚‹. + +CbC ã®ã‚³ãƒ¼ãƒ‰ã«ã¯æœ¬æ¥ C ã«ã¯å­˜åœ¨ã—ãªã„ \_\_code åž‹, goto ã«ã‚ˆã‚‹è»½é‡ç¶™ç¶šã®æ§‹æ–‡ãŒå­˜åœ¨ã™ã‚‹ãŒ, 今回ã®å®Ÿè£…ã«ã‚ˆã‚Šã‚³ãƒ³ãƒ‘イルãŒå¯èƒ½ã§ã‚ã‚‹. 出力ã•ã‚ŒãŸ LLVM IR を確èªã™ã‚‹ã¨, code segment ã®å‘¼ã³å‡ºã—時㫠tail call ã§ã‚ã‚‹ã“ã¨ã‚’示㙠tail フラグ, fastcc ã®é–¢æ•°å‘¼ã³å‡ºã—è¦ç´„, 呼ã³å‡ºã—直後㮠return æ–‡ãŒå®Ÿè£…ã—ãŸã¨ãŠã‚Šãã¡ã‚“ã¨ä»˜åŠ ã•ã‚Œã¦ã„ã‚‹ã“ã¨ãŒã‚ã‹ã‚‹. + +アセンブリコードã®æ–¹ã§ã¯ code segment f\_g0 ã¸ã®é·ç§»ãŒ call 命令ã§ãªã jmp 命令ã§è¡Œã‚ã‚Œã¦ãŠã‚Š, ãã¡ã‚“㨠tail call elimination ãŒå¼·åˆ¶ã•ã‚Œã¦ã„ã‚‹ã“ã¨ãŒã‚ã‹ã‚‹. ã“ã‚Œã¯ã‚ªãƒ—ションã®å¼•ã継ãŽãŒæ­£ã—ãè¡Œã‚ã‚ŒãŸã“ã¨ã‚’示ã™. + +\begin{lstlisting}[frame=lrbt,label=evalCbC,caption={CbCã®ã‚³ãƒ¼ãƒ‰}] +__code f(int i,stack sp) { + int k,j; + k = 3+i; + goto f_g0(i,k,sp); +} +\end{lstlisting} + +\begin{lstlisting}[frame=lrbt,label=evalIR,caption={出力ã•ã‚ŒãŸ LLVM IR}] +define fastcc void @f(i32 %i, i8* %sp) #0 { +entry: +%add = add nsw i32 3, %i +tail call fastcc void @f_g0(i32 %i, i32 %add, i8* %sp) +ret void +} +\end{lstlisting} + +\begin{lstlisting}[frame=lrbt,label=evalAsm,caption={出力ã•ã‚ŒãŸã‚¢ã‚»ãƒ³ãƒ–リコード}] + .cfi_startproc +## BB#0: ## %entry + subq $24, %rsp + Ltmp9: + .cfi_def_cfa_offset 32 + movl %edi, %eax + addl $3, %eax + movq %rsi, 16(%rsp) ## 8-byte Spill + movl %eax, %esi + movq 16(%rsp), %rdx ## 8-byte Reload + addq $24, %rsp + jmp _f_g0 ## TAILCALL + .cfi_endproc +\end{lstlisting} + +\section{軽é‡ç¶™ç¶šã®è©•ä¾¡} +今回実装ã—㟠CbC ã®è»½é‡ç¶™ç¶šã‚’評価ã™ã‚‹. 比較対象㯠C ã®é–¢æ•°å‘¼ã³å‡ºã—ã¨ã—, ãã‚Œãžã‚Œã‚’大é‡ã«è¡Œã£ãŸæ™‚ã®æ™‚é–“ã®å·®ã‚’確èªã™ã‚‹. 計測ã«ä½¿ç”¨ã—ãŸã‚³ãƒ¼ãƒ‰ã¯ãƒªã‚¹ãƒˆ \ref{calc},\ref{calcCbC} ã§, çµæžœã¯è¡¨\ref{comp} ã§ã‚ã‚‹. + +çµæžœã‚ˆã‚Š, 軽é‡ç¶™ç¶šãŒé–¢æ•°å‘¼ã³å‡ºã—よりも高速ã§ã‚ã‚‹ã“ã¨ãŒã‚ã‹ã‚‹. 軽é‡ç¶™ç¶šã§ã¯ tail call elimination ç­‰ã«ã‚ˆã£ã¦ã‚¹ã‚¿ãƒƒã‚¯æ“作ã®å‡¦ç†ãŒçœã‹ã‚Œã‚‹ã®ã§ãã®å½±éŸ¿ã ã‚ã†. + +\begin{lstlisting}[frame=lrbt,label=calc,caption={Cã®è¨ˆæ¸¬ç”¨ã‚³ãƒ¼ãƒ‰}] +#define LOOP 500000000 + +#include +#include + +int func4(int a, int b){ + return a+b; +} + +int func3(int a, int b){ + return func4(b,b/a); +} + +int func2(int a, int b){ + return func3(b,a*b); +} + +int func1(int a, int b){ + return func2(b,a+b); +} + +int start_func(int loop){ + int i, a; + a = 0; + for (i=0;i +#include + +__code code4(int a, int b, int loop, int ans){ + goto start_code(ans+a+b, loop-1); +} + +__code code3(int a, int b, int loop, int ans){ + goto code4(b,b/a,loop, ans); +} + +__code code2(int a, int b, int loop, int ans){ + goto code3(b,a*b,loop, ans); +} + +__code code1(int a, int b, int loop, int ans){ + goto code2(b,a+b,loop, ans); +} + +__code start_code(int ans, int loop){ + if (loop>0) + goto code1(1,2,loop, ans); + else + goto print(ans); +} + +int main( int ac, char *av[]){ + goto start_code(0,LOOP); + return 0; +} + +__code print(int a){ + printf("%d\n",a); + exit(0); +} +\end{lstlisting} + +\begin{table}[htpb] + \centering + \begin{tabular}{|l|r|} \hline + & 実行速度 (s) \\ \hline + 関数呼ã³å‡ºã— & 4.85 \\ \hline + 軽é‡ç¶™ç¶š & 3.10 \\ \hline + \end{tabular} + \caption{関数呼ã³å‡ºã—ã¨è»½é‡ç¶™ç¶šã®é€Ÿåº¦æ¯”較} + \label{comp} +\end{table} + +\section{ã¾ã¨ã‚} +本章ã§ã¯ LLVM 㨠Clang を利用ã—ãŸã‚ªãƒªã‚¸ãƒŠãƒ«ã®è¨€èªžã®ã‚³ãƒ³ãƒ‘イラã®å®Ÿè£…ã‚’è¡Œã£ãŸ. æ–°ã—ã„型や構文ã®å®Ÿè£…方法, オプションã®ä½œã‚Šæ–¹, 最é©åŒ–ã®è¿½åŠ ã¨å¼·åˆ¶ã®æ–¹æ³•ã«ã¤ã„ã¦èª¬æ˜Žã‚’è¡Œã„, æ­£ã—ãコンパイルã§ãã‚‹ã“ã¨ã‚’確èªã—ãŸ. é‡è¦ãªã®ã¯ LLVM IR ã®æ”¹å¤‰ã‚’è¡Œã‚ãªã„ã“ã¨ã§, ã“ã‚Œã«ã‚ˆã‚Šãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã®å‡¦ç†ã‚’ãã®ã¾ã¾åˆ©ç”¨ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã‚‹. 今回実装ã—ãŸè¨€èªžã¯ C ベースãªè¨€èªžã§ã‚ã‚‹ãŸã‚ clang を利用ã—ãŸãŒ, å¿…è¦ã«å¿œã˜ã¦ä»–ã®ãƒ•ãƒ­ãƒ³ãƒˆã‚¨ãƒ³ãƒ‰ã‚’利用ã™ã‚‹ã“ã¨, 一ã‹ã‚‰ãƒ•ãƒ­ãƒ³ãƒˆã‚¨ãƒ³ãƒ‰ã‚’書ãã“ã¨ã‚’検討ã™ã‚‹ã®ã‚‚良ã„. + +\nocite{CbC2011, LLVMIR, LLVM, clang, repo} +\bibliographystyle{IEEEtran} +\bibliography{IEEEabrv,reference} + +% that's all folks +\end{document} diff -r 000000000000 -r 8319d82cab07 reference.bib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/reference.bib Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,26 @@ +@article{CbC2011, + author = {Shinji Kono}, + title = {Demonstration of Continuation based C on GCC}, + journal = {Continuation Workshop}, + year = {2011} +} + +@manual{LLVMIR, +author = "{LLVM Language Reference Manual}", +title = "{\\http://llvm.org/docs/LangRef.html}", +} + +@manual{LLVM, +author = "{LLVM Documentation}", +title = "{\\http://llvm.org/docs/index.html}", +} + +@manual{clang, +author = "{clang documentation}", +title = "{\\http://clang.llvm.org/docs/index.html}", +} + +@misc{repo, +title="{CbC compiler repository}", + url = "ssh://one@firefly.cr.ie.u-ryukyu.ac.jp/hg/CbC/CbC_LLVM" +} diff -r 000000000000 -r 8319d82cab07 testflow/README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testflow/README Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,82 @@ + +January 10, 2007 + + +This is the "testflow" diagnostic suite which is designed to test LaTeX +"print work flow" and to provide lots of helpful information to assist +users in getting their LaTeX system configured and/or upgraded in order +to produce good PS/PDF output. + +Although originally designed for IEEEtran users, testflow will be of +interest to anyone who uses LaTeX to make PostScript or PDF output. + +Extensive usage documentation is contained in "testflow_doc.pdf" + +The control test reference files are available in both PostScript and PDF, +each in A4 and US Letter paper sizes. + + +For helpful tips, answers to frequently asked questions and other support, +visit the testflow home page at my website: + +http://www.michaelshell.org/tex/testflow/ + + +Enjoy! + +Michael Shell +http://www.michaelshell.org/ + +******* +Version 1.1 (2007/01/10) changes: + + 1. New duplex page test. + + 2. New test for Palladio hinting. + + 3. Updated documentation to cover the newer systems. + +********************************* Files ********************************** + +README - This file. + +testflow_doc.pdf - The user manual. + +testflow.tex - The LaTeX test file. + +testflow_ctl_LTR.ps - Control file in PostScript, US Letter paper format. + +testflow_ctl_LTR.pdf - Control file in PDF, US Letter paper format. + +testflow_ctl_A4.ps - Control file in PostScript, A4 paper format. + +testflow_ctl_A4.pdf - Control file in PDF, A4 paper format. + +*************************************************************************** +Legal Notice: +This code is offered as-is without any warranty either expressed or +implied; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE! +User assumes all risk. +In no event shall IEEE or any contributor to this code be liable for +any damages or losses, including, but not limited to, incidental, +consequential, or any other damages, resulting from the use or misuse +of any information contained here. + +All comments are the opinions of their respective authors and are not +necessarily endorsed by the IEEE. + +This work is distributed under the LaTeX Project Public License (LPPL) +( http://www.latex-project.org/ ) version 1.3, and may be freely used, +distributed and modified. A copy of the LPPL, version 1.3, is included +in the base LaTeX documentation of all distributions of LaTeX released +2003/12/01 or later. +Retain all contribution notices and credits. +** Modified files should be clearly indicated as such, including ** +** renaming them and changing author support contact information. ** + +File list of work: testflow_doc.pdf, testflow.tex, testflow_ctl_LTR.ps, + testflow_ctl_LTR.pdf, testflow_ctl_A4.ps, + testflow_ctl_A4.pdf + +*************************************************************************** diff -r 000000000000 -r 8319d82cab07 testflow/testflow.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testflow/testflow.tex Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,593 @@ + +%% testflow.tex +%% V1.1 +%% 2007/01/10 +%% Copyright (c) 2002-2007 by Michael Shell and The LaTeX3 Project +%% See: http://www.michaelshell.org/ +%% for current contact information. +%% +%% A test page based on Rainer Schoepf's testpage.tex which is part of the +%% LaTeX2e system with added modifications to add tests to verify PS/PDF +%% output by Michael Shell. +%% +%% For complete usage documentation, see the file testflow_doc.pdf +%% +%% Support sites: +%% http://www.michaelshell.org/tex/testflow/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/testflow/ +%% +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%% +%% This work is distributed under the LaTeX Project Public License (LPPL) +%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, +%% distributed and modified. A copy of the LPPL, version 1.3, is included +%% in the base LaTeX documentation of all distributions of LaTeX released +%% 2003/12/01 or later. +%% Retain all contribution notices and credits. +%% ** Modified files should be clearly indicated as such, including ** +%% ** renaming them and changing author support contact information. ** +%% +%% File list of work: testflow.tex, testflow_ctl_A4.ps, testflow_ctl_A4.pdf, +%% testflow_ctl_LTR.ps, testflow_ctl_LTR.pdf, +%% testflow_doc.pdf +%%************************************************************************* +% +% Changelog: +% +% 1.1 (2007/01/10) +% 1. new duplex test +% 2. tests for Palladio hinting +% +% 1.0 (2002/04/08) Initial release + + + + +% ***** To prevent testflow from prompting user on the console, ***** +% ***** uncomment one each of the two pairs below: ***** +% +% *** paper size (choose one) *** +%\def\papertype{letterpaper} +%\def\papertype{a4paper} +% +% *** duplex page test (choose one) *** +%\def\makeduplexpage{yes} +%\def\makeduplexpage{no} + + + + +\def\docversion{1.1} +\def\docbuildcode{0000} + +\newif\ifmakeduplextest +\makeduplextestfalse +\newif\ifneeduserresponse +\needuserresponsetrue + +\def\useryesstring{yes} +\def\usernostring{no} +\def\userystring{y} +\def\usernstring{n} + +\ifx\papertype\TESTFLOWundefined +\typeout{} +\typeout{ This is the testflow.tex (V\docversion) test page generator.} +\typeout{ See the testflow_doc.pdf file for full documentation.} + +\typeout{} +\typeout{**********************************************************} +\typeout{* Enter paper type in form of document class option,% +\space\space\space\space\space*} +\typeout{* e.g., `a4paper' or `letterpaper' (without the quotes).\space*} +\typein[\papertype]{******************************************% +****************} +\fi + +\ifx\makeduplexpage\TESTFLOWundefined +\loop +\typeout{} +\typeout{**************************************************************} +\typeout{* Do you wish to make a second page to test duplex printing?% +\space*} +\typeout{* Enter `yes' or `no' (without the quotes).% +\space\space\space\space\space\space\space\space\space\space\space\space\space +\space\space\space\space\space*} +\typein[\makeduplexpage]{******************************************% +********************} +\ifx\makeduplexpage\useryesstring\makeduplextesttrue\needuserresponsefalse\fi +\ifx\makeduplexpage\usernostring\makeduplextestfalse\needuserresponsefalse\fi +\ifx\makeduplexpage\userystring\makeduplextesttrue\needuserresponsefalse\fi +\ifx\makeduplexpage\usernstring\makeduplextestfalse\needuserresponsefalse\fi +\ifneeduserresponse +\repeat +\else +\ifx\makeduplexpage\useryesstring\makeduplextesttrue\fi +\ifx\makeduplexpage\userystring\makeduplextesttrue\fi +\fi + + + +% declare symbols for lasy test +\DeclareSymbolFont{lasy}{U}{lasy}{m}{n} +\SetSymbolFont{lasy}{bold}{U}{lasy}{b}{n} +\DeclareMathSymbol\lasymho {\mathord}{lasy}{"30} +\DeclareMathSymbol\lasyJoin {\mathrel}{lasy}{"31} +\DeclareMathSymbol\lasyBox {\mathord}{lasy}{"32} +\DeclareMathSymbol\lasyDiamond {\mathord}{lasy}{"33} +\DeclareMathSymbol\lasyleadsto {\mathrel}{lasy}{"3B} +\DeclareMathSymbol\lasysqsubset{\mathrel}{lasy}{"3C} +\DeclareMathSymbol\lasysqsupset{\mathrel}{lasy}{"3D} +\DeclareMathSymbol\lasylhd {\mathbin}{lasy}{"01} +\DeclareMathSymbol\lasyunlhd {\mathbin}{lasy}{"02} +\DeclareMathSymbol\lasyrhd {\mathbin}{lasy}{"03} +\DeclareMathSymbol\lasyunrhd {\mathbin}{lasy}{"04} + + + +\documentclass[\papertype, 10pt]{article} + +\typeout{-- Option summary:} +\typeout{-- Paper size: \papertype} +\ifmakeduplextest +\typeout{-- With duplex test page} +\else +\typeout{-- No duplex test page} +\fi + + +% enable Times fonts +\renewcommand{\sfdefault}{phv} +\renewcommand{\rmdefault}{ptm} +\renewcommand{\ttdefault}{pcr} + +\def\fontsubfuzz{.9pt} + +\def\tenptsize{\fontsize{10}{12pt}\selectfont} +\def\nineptsize{\fontsize{9}{11pt}\selectfont} +\def\eightptsize{\fontsize{8}{10pt}\selectfont} +\def\sevenptsize{\fontsize{7}{9pt}\selectfont} +\def\sixptsize{\fontsize{6}{8pt}\selectfont} +\def\fiveptsize{\fontsize{5}{7pt}\selectfont} + + +\pagestyle{empty} +\thispagestyle{empty} + +\nofiles + +\setlength{\oddsidemargin}{0pt} +\setlength{\evensidemargin}{0pt} +\setlength{\marginparwidth}{1in} +\setlength{\marginparsep}{0pt} + +\setlength{\topmargin}{0pt} +\setlength{\headheight}{0pt} +\setlength{\headsep}{0pt} +\setlength{\topskip}{0pt} + +\setlength{\footskip}{0pt} + +\setlength{\textwidth}{\paperwidth} +\addtolength{\textwidth}{-2in} +\setlength{\textheight}{\paperheight} +\addtolength{\textheight}{-2in} + +\setlength{\parindent}{0pt} +\setlength{\parskip}{0pt} + +\setlength{\unitlength}{1sp} + + +\newcounter{textheight} +\newcounter{textwidth} + +\setcounter{textheight}{\textheight} +\setcounter{textwidth}{\textwidth} + + + +\newlength{\help} + +\newcounter{help} + +\newcounter{in} +\newcounter{halfin} +\newcounter{fifthin} +\newcounter{tenthin} +\newcounter{twtin} + +\newcounter{mm} +\newcounter{tmm} +\newcounter{frmm} +\newcounter{fvmm} +\newcounter{tenmm} + +\newcounter{foo} + +\newcounter{x} +\newcounter{y} + +\newcommand{\addtox}{\addtocounter{x}} +\newcommand{\addtoy}{\addtocounter{y}} + +\newcommand{\putxy}{\put(\value{x},\value{y})} +\newcommand{\multiputxy}{\multiput(\value{x},\value{y})} + +\newcommand{\sethelpcounter}[2]{% + \setlength{\help}{#2}\setcounter{#1}{\help}} + + +\newenvironment{testflowpage}{\setlength{\help}{1in} +\setcounter{in}{\help} + +\setlength{\help}{0.5in} +\setcounter{halfin}{\help} + +\setlength{\help}{0.2in} +\setcounter{fifthin}{\help} + +\setlength{\help}{0.1in} +\setcounter{tenthin}{\help} + +\setlength{\help}{0.05in} +\setcounter{twtin}{\help} + + +\setlength{\help}{1mm} +\setcounter{mm}{\help} + +\setlength{\help}{2mm} +\setcounter{tmm}{\help} + +\setlength{\help}{4mm} +\setcounter{frmm}{\help} + +\setlength{\help}{5mm} +\setcounter{fvmm}{\help} + +\setlength{\help}{10mm} +\setcounter{tenmm}{\help} + + +\begin{picture}(0,0) +\scriptsize + +\put(0,-\value{textheight}){% + \framebox(\value{textwidth},\value{textheight}){}} + +% left mm ruler +\setcounter{x}{0} +\sethelpcounter{y}{-0.45\textheight} +\putxy{\line(-1,0){\value{in}}} + + +\addtox{-\value{fvmm}} +\addtoy{-\value{tmm}} +\multiputxy(-\value{fvmm},0){5}{\line(0,1){\value{frmm}}} + + +\addtoy{\value{mm}} +\multiput(-\value{mm},\value{y})(-\value{mm},0){25}% + {\line(0,1){\value{tmm}}} + +\addtoy{\value{frmm}} +\setcounter{foo}{5} +\multiput(-\value{fvmm},\value{y})(-\value{fvmm},0){4}{% + \makebox(0,0){\arabic{foo}}\addtocounter{foo}{5}} + + +% left in ruler +\setcounter{x}{0} +\sethelpcounter{y}{-0.55\textheight} +\putxy{\line(-1,0){\value{in}}} + +\addtox{-\value{tenthin}} +\addtoy{-\value{tenthin}} +\multiputxy(-\value{tenthin},0){10}{\line(0,1){\value{fifthin}}} + +\addtox{\value{twtin}} +\addtoy{\value{twtin}} +\multiputxy(-\value{tenthin},0){10}{\line(0,1){\value{tenthin}}} + +\setcounter{foo}{1} + +\addtox{-\value{twtin}} +\addtoy{\value{tenthin}} +\addtoy{\value{tenthin}} +\multiputxy(-\value{tenthin},0){9}{% + \makebox(0,0){\arabic{foo}}\addtocounter{foo}{1}} + +% right mm ruler +\sethelpcounter{x}{\textwidth} +\sethelpcounter{y}{-0.45\textheight} +\putxy{\line(1,0){\value{in}}} + +\addtox{\value{mm}} +\addtoy{-\value{mm}} +\multiputxy(\value{mm},0){25}{\line(0,1){\value{tmm}}} + +\addtox{\value{frmm}} +\addtoy{-\value{mm}} +\multiputxy(\value{fvmm},0){5}{\line(0,1){\value{frmm}}} + +\addtoy{\value{fvmm}} +\setcounter{foo}{5} +\multiputxy(\value{fvmm},0){4}{% + \makebox(0,0){\arabic{foo}}\addtocounter{foo}{5}} + +% right in ruler +\sethelpcounter{x}{\textwidth} +\sethelpcounter{y}{-0.55\textheight} +\putxy{\line(1,0){\value{in}}} + +\addtox{\value{tenthin}} +\addtoy{-\value{tenthin}} +\multiputxy(\value{tenthin},0){10}{% + \line(0,1){\value{fifthin}}} + +\addtox{-\value{twtin}} +\addtoy{\value{twtin}} +\multiputxy(\value{tenthin},0){10}{% + \line(0,1){\value{tenthin}}} + +\setcounter{foo}{1} +\addtox{\value{twtin}} +\addtoy{\value{tenthin}} +\addtoy{\value{tenthin}} +\multiputxy(\value{tenthin},0){9}{% + \makebox(0,0){\arabic{foo}}\addtocounter{foo}{1}} + + +% top mm ruler +\sethelpcounter{x}{0.45\textwidth} +\setcounter{y}{0} +\putxy{\line(0,1){\value{in}}} + +\addtox{-\value{tmm}} +\addtoy{\value{fvmm}} +\multiputxy(0,\value{fvmm}){5}{\line(1,0){\value{frmm}}} + +\addtox{\value{mm}} +\addtoy{-\value{frmm}} +\multiputxy(0,\value{mm}){25}{\line(1,0){\value{tmm}}} + +\setcounter{foo}{5} +\addtox{-\value{tmm}} +\addtoy{-\value{mm}} +\addtoy{\value{fvmm}} +\multiputxy(0,\value{fvmm}){4}{% + \makebox(0,0){\arabic{foo}\rule{5pt}{0pt}}\addtocounter{foo}{5}} + +% top in ruler +\sethelpcounter{x}{0.55\textwidth} +\setcounter{y}{0} +\putxy{\line(0,1){\value{in}}} + +\addtox{-\value{tenthin}} +\addtoy{\value{tenthin}} +\multiputxy(0,\value{tenthin}){10}{\line(1,0){\value{fifthin}}} + +\addtox{\value{twtin}} +\addtoy{-\value{twtin}} +\multiputxy(0,\value{tenthin}){10}{\line(1,0){\value{tenthin}}} + +\setcounter{foo}{1} +\addtox{-\value{tenthin}} +\addtoy{\value{twtin}} +\multiputxy(0,\value{tenthin}){9}{% + \makebox(0,0){\arabic{foo}}\addtocounter{foo}{1}} + +% bottom mm ruler +\sethelpcounter{x}{0.45\textwidth} +\setcounter{y}{-\textheight} +\putxy{\line(0,-1){\value{in}}} + +\addtox{-\value{tmm}} +\addtoy{-\value{fvmm}} +\multiputxy(0,-\value{fvmm}){5}{\line(1,0){\value{frmm}}} + +\addtox{\value{mm}} +\addtoy{\value{frmm}} +\multiputxy(0,-\value{mm}){25}{\line(1,0){\value{tmm}}} + +\setcounter{foo}{5} +\addtox{-\value{tmm}} +\addtoy{\value{mm}} +\addtoy{-\value{fvmm}} +\multiputxy(0,-\value{fvmm}){4}{% + \makebox(0,0){\arabic{foo}\rule{5pt}{0pt}}\addtocounter{foo}{5}} + + +% bottom in ruler +\sethelpcounter{x}{0.55\textwidth} +\setcounter{y}{-\textheight} +\putxy{\line(0,-1){\value{in}}} + +\addtox{-\value{tenthin}} +\addtoy{-\value{tenthin}} +\multiputxy(0,-\value{tenthin}){10}{\line(1,0){\value{fifthin}}} + +\addtox{\value{twtin}} +\addtoy{\value{twtin}} +\multiputxy(0,-\value{tenthin}){10}{\line(1,0){\value{tenthin}}} + +\setcounter{foo}{1} +\addtox{-\value{tenthin}} +\addtoy{-\value{twtin}} +\multiputxy(0,-\value{tenthin}){9}{% + \makebox(0,0){\arabic{foo}}\addtocounter{foo}{1}} + + +\end{picture} + +\setlength{\help}{\textwidth} +\addtolength{\help}{-1.25in} + +\vspace*{\baselineskip} +\mbox{}\hfill +\begin{minipage}{\help}\relax} +% end of testpage environment +{\end{minipage}\hfill\mbox{}\vfill\mbox{}} + + +\begin{document} + + +\begin{testflowpage} + +\centerline{\Huge A Test for \LaTeX\ PS/PDF Printing} +\vspace{0.75\baselineskip} +\centerline{\large Version \docversion\hspace{0.2in} Build Code: \docbuildcode} +\vspace{0.75\baselineskip} +\centerline{\large See the testflow home page for the latest news and FAQ:} +\centerline{\texttt{\footnotesize http://www.michaelshell.org/tex/testflow/}} +\vspace{1.5\baselineskip} +\centerline{\large\bfseries\scshape Notes} +\vspace{0.5\baselineskip} + +Document paper type selected under \LaTeX: \mbox{\ttfamily\papertype}\\ +Depends only on the base article.cls --- no other external packages are loaded.\\ +The main text font is Times Roman, the math font is Computer Modern.\\ +Imperial (0.1in) and metric (mm) rulers are provided to measure centering.\\ +The frame on this page should be centered on the paper and 1in (25.4mm) from the edges.\\ +To maintain accurate dimensions, do not scale page when printing.\\ +(i.e., deselect any ``fit to page" or ``shrink/expand page" options.)\\ +For complete usage information, read the \texttt{testflow\_doc.pdf} file. + +\vspace{1.0\baselineskip} +\centerline{\large\bfseries\scshape Palladio Font Hinting Test} +\vspace{0.5\baselineskip} + +\centerline{\renewcommand{\rmdefault}{ppl}\rmfamily\bfseries This is in bold Palatino/Palladio.} + + +\vspace{1.0\baselineskip} +\centerline{\large\bfseries\scshape Ligature Test} +\vspace{0.5\baselineskip} + +\makebox[0.85in][l]{\textbf{Ligatures}} ---~~~The office was affected by the five flawed mufflers. + +\makebox[0.85in][l]{\textbf{No Ligatures}} ---~~~The of\/f\/ice was a\/f\/fected by the f\/ive f\/lawed muf\/f\/lers. + + +\vspace{1.0\baselineskip} +\centerline{\large\bfseries\scshape Math Tests} +\vspace{0.5\baselineskip} + +\centerline{\normalsize\bfseries Large Delimiter and Operator Test} +\begin{center} +\begin{math} +I = \left[ + \begin{array}{cc} + 1 & 0\\ + 0 & 1 + \end{array} + \right]\quad \mbox{and} +\quad\Bigg(\sum\limits_{i=0}^{2} 2^i = 7 \Bigg) +\end{math} +\end{center} + +\vspace{0.25\baselineskip} + +\centerline{\normalsize\bfseries Minus Sign Test} +\begin{center} +\begin{math} +\mbox{If } a = 4\mbox{, then: } 2^{-a + 7} - 2^{a-3} = 2^{3} - 2^{1} = 6 +\end{math} +\end{center} + +\vspace{0.1\baselineskip} +\centerline{\normalsize\bfseries Problem Character, Times Roman and Font Kerning Tests} +\vspace{0.5\baselineskip} +% here is how we would directly access them within cmmi10 +%{\fontencoding{OML}\fontfamily{cmm}\fontshape{it}\selectfont +%\symbol{0}\hspace{1ex}\symbol{9}\hspace{1ex}\symbol{10}\hspace{1ex}\symbol{13} +%\hspace{1ex}\symbol{32}\hspace{1ex}\symbol{127}} +\centerline{\normalfont Math italic glyphs: $\mathnormal{\Gamma,~\Psi,~\Omega,~\gamma,~\psi,~\mbox{\t{\mbox{}\mbox{}}}}$} +\vspace{0.25\baselineskip} +\centerline{Large Times Roman italic: {\LARGE \textit{z}}\qquad GS kerning test: {\footnotesize The ``Problematic" little quotes.}} + +\vspace{0.25\baselineskip} +{\footnotesize\textbf{Note:} The math italic glyphs are in the control character positions +0, 9, 10, 13, 32 and 127.\hfill\\ +i.e., \texttt{\string\Gamma}, \texttt{\string\Psi}, \texttt{\string\Omega}, +\texttt{\string\gamma}, \texttt{\string\psi}, and the \texttt{\string\t\{xx\}} tie-after accent, respectively.} + + +\vspace{1.0\baselineskip} +\centerline{\large\bfseries\scshape Picture and Lasy Fonts Test} +\vspace{0.5\baselineskip} + +\def\lasyglyphs{\lasymho, \lasyJoin, \lasyBox, +\lasyDiamond, \lasyleadsto, \lasysqsubset, \lasysqsupset, +\lasylhd, \lasyunlhd, \lasyrhd, \lasyunrhd} + +\setlength{\unitlength}{1cm} + +\begin{center} + +\begin{picture}(12,2.4) +\qbezier(0,2.4)(2.25,2.8)(4.5,2.4) +\put(1,1.8){\oval(1,1)[tl]} +\put(3.5,1.8){\oval(1,1)[tr]} +\put(2.25,1.9){\oval(4,1)[t]} +\put(.2,1.5){\oval(1,2.2)[l]} +\put(1.5,1.5){\circle*{0.1}} +\put(1.5,1.5){\circle{1.2}} +\put(1.5,1.5){\vector(0,1){0.6}} +\put(1.5,1.5){\vector(1,0){0.6}} +\put(1.5,1.5){\vector(0,-1){0.6}} +\put(1.5,1.5){\vector(-1,0){0.6}} +\thicklines +\qbezier(0,0.6)(2.25,0.2)(4.5,0.6) +\put(0,0){\vector(1,0){11.5}} +\put(3,1.5){\circle*{0.1}} +\put(3,1.5){\circle{1.2}} +\put(3,1.5){\vector(0,1){0.6}} +\put(3,1.5){\vector(1,0){0.6}} +\put(3,1.5){\vector(0,-1){0.6}} +\put(3,1.5){\vector(-1,0){0.6}} +\put(1,1.2){\oval(1,1)[bl]} +\put(3.5,1.2){\oval(1,1)[br]} +\put(2.25,1.1){\oval(4,1)[b]} +\put(4.3,1.5){\oval(1,2.2)[r]} +\put(4.9,2.4){\makebox[0.75in][r]{10pt bold:\hspace{0.1in}}\tenptsize\boldmath$\lasyglyphs$} +\put(4.9,2.0){\makebox[0.75in][r]{10pt:\hspace{0.1in}}\tenptsize$\lasyglyphs$} +\put(4.9,1.65){\makebox[0.75in][r]{\nineptsize9pt:\hspace{0.1in}}\nineptsize$\lasyglyphs$} +\put(4.9,1.35){\makebox[0.75in][r]{\eightptsize8pt:\hspace{0.1in}}\eightptsize$\lasyglyphs$} +\put(4.9,1.1){\makebox[0.75in][r]{\sevenptsize7pt:\hspace{0.1in}}\sevenptsize$\lasyglyphs$} +\put(4.9,0.875){\makebox[0.75in][r]{\sixptsize6pt:\hspace{0.1in}}\sixptsize$\lasyglyphs$} +\put(4.9,0.675){\makebox[0.75in][r]{\fiveptsize5pt:\hspace{0.1in}}\fiveptsize$\lasyglyphs$} +\end{picture} +\end{center} +\end{testflowpage} + + +% Optional duplex test page +\ifmakeduplextest +\newpage +\begin{testflowpage} +\centerline{\Huge A Test for \LaTeX\ PS/PDF Printing} +\vspace{0.75\baselineskip} +\centerline{\large Version \docversion\hspace{0.2in} Build Code: \docbuildcode} +\vspace{1.0\baselineskip} +\centerline{\large\bfseries\scshape Duplex Alignment Test Side} +\mbox{}\vfill\mbox{} +\end{testflowpage} +\fi + +\end{document} + diff -r 000000000000 -r 8319d82cab07 testflow/testflow_ctl_A4.pdf Binary file testflow/testflow_ctl_A4.pdf has changed diff -r 000000000000 -r 8319d82cab07 testflow/testflow_ctl_A4.ps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testflow/testflow_ctl_A4.ps Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,3000 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software +%%Title: testflow.dvi +%%Pages: 2 +%%PageOrder: Ascend +%%BoundingBox: 0 0 595 842 +%%DocumentFonts: Times-Roman Courier Times-Bold Palatino-Bold CMMI10 +%%+ CMR10 CMEX10 CMR7 CMMI7 CMSY7 CMSY10 Times-Italic CMSY8 LCIRCLE10 +%%+ LINE10 LINEW10 LCIRCLEW10 LASYB10 CMMIB10 LASY10 LASY9 CMMI9 LASY8 +%%+ CMMI8 LASY7 LASY6 CMMI6 LASY5 CMMI5 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -t A4size testflow +%DVIPSParameters: dpi=7200 +%DVIPSSource: TeX output 2007.01.10:0228 +%%BeginProcSet: tex.pro 0 0 +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S +/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy +setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask +restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: alt-rule.pro 0 0 +%! +% Patch by TVZ +% Makes dvips files draw rules with stroke rather than fill. +% Makes narrow rules more predictable at low resolutions +% after distilling to PDF. +% May have unknown consequences for very thick rules. +% Tested only with dvips 5.85(k). +TeXDict begin +/QV { + gsave newpath /ruleY X /ruleX X + Rx Ry gt + { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry } + { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx } + ifelse + setlinewidth 0 setlinecap stroke grestore +} bind def +end + +%%EndProcSet +%%BeginProcSet: 8r.enc 0 0 +% File 8r.enc TeX Base 1 Encoding Revision 2.0 2002-10-30 +% +% @@psencodingfile@{ +% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, +% W. Schmidt, P. Lehman", +% version = "2.0", +% date = "30 October 2002", +% filename = "8r.enc", +% email = "tex-fonts@@tug.org", +% docstring = "This is the encoding vector for Type1 and TrueType +% fonts to be used with TeX. This file is part of the +% PSNFSS bundle, version 9" +% @} +% +% The idea is to have all the characters normally included in Type 1 fonts +% available for typesetting. This is effectively the characters in Adobe +% Standard encoding, ISO Latin 1, Windows ANSI including the euro symbol, +% MacRoman, and some extra characters from Lucida. +% +% Character code assignments were made as follows: +% +% (1) the Windows ANSI characters are almost all in their Windows ANSI +% positions, because some Windows users cannot easily reencode the +% fonts, and it makes no difference on other systems. The only Windows +% ANSI characters not available are those that make no sense for +% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen +% (173). quotesingle and grave are moved just because it's such an +% irritation not having them in TeX positions. +% +% (2) Remaining characters are assigned arbitrarily to the lower part +% of the range, avoiding 0, 10 and 13 in case we meet dumb software. +% +% (3) Y&Y Lucida Bright includes some extra text characters; in the +% hopes that other PostScript fonts, perhaps created for public +% consumption, will include them, they are included starting at 0x12. +% These are /dotlessj /ff /ffi /ffl. +% +% (4) hyphen appears twice for compatibility with both ASCII and Windows. +% +% (5) /Euro was assigned to 128, as in Windows ANSI +% +% (6) Missing characters from MacRoman encoding incorporated as follows: +% +% PostScript MacRoman TeXBase1 +% -------------- -------------- -------------- +% /notequal 173 0x16 +% /infinity 176 0x17 +% /lessequal 178 0x18 +% /greaterequal 179 0x19 +% /partialdiff 182 0x1A +% /summation 183 0x1B +% /product 184 0x1C +% /pi 185 0x1D +% /integral 186 0x81 +% /Omega 189 0x8D +% /radical 195 0x8E +% /approxequal 197 0x8F +% /Delta 198 0x9D +% /lozenge 215 0x9E +% +/TeXBase1Encoding [ +% 0x00 + /.notdef /dotaccent /fi /fl + /fraction /hungarumlaut /Lslash /lslash + /ogonek /ring /.notdef /breve + /minus /.notdef /Zcaron /zcaron +% 0x10 + /caron /dotlessi /dotlessj /ff + /ffi /ffl /notequal /infinity + /lessequal /greaterequal /partialdiff /summation + /product /pi /grave /quotesingle +% 0x20 + /space /exclam /quotedbl /numbersign + /dollar /percent /ampersand /quoteright + /parenleft /parenright /asterisk /plus + /comma /hyphen /period /slash +% 0x30 + /zero /one /two /three + /four /five /six /seven + /eight /nine /colon /semicolon + /less /equal /greater /question +% 0x40 + /at /A /B /C + /D /E /F /G + /H /I /J /K + /L /M /N /O +% 0x50 + /P /Q /R /S + /T /U /V /W + /X /Y /Z /bracketleft + /backslash /bracketright /asciicircum /underscore +% 0x60 + /quoteleft /a /b /c + /d /e /f /g + /h /i /j /k + /l /m /n /o +% 0x70 + /p /q /r /s + /t /u /v /w + /x /y /z /braceleft + /bar /braceright /asciitilde /.notdef +% 0x80 + /Euro /integral /quotesinglbase /florin + /quotedblbase /ellipsis /dagger /daggerdbl + /circumflex /perthousand /Scaron /guilsinglleft + /OE /Omega /radical /approxequal +% 0x90 + /.notdef /.notdef /.notdef /quotedblleft + /quotedblright /bullet /endash /emdash + /tilde /trademark /scaron /guilsinglright + /oe /Delta /lozenge /Ydieresis +% 0xA0 + /.notdef /exclamdown /cent /sterling + /currency /yen /brokenbar /section + /dieresis /copyright /ordfeminine /guillemotleft + /logicalnot /hyphen /registered /macron +% 0xD0 + /degree /plusminus /twosuperior /threesuperior + /acute /mu /paragraph /periodcentered + /cedilla /onesuperior /ordmasculine /guillemotright + /onequarter /onehalf /threequarters /questiondown +% 0xC0 + /Agrave /Aacute /Acircumflex /Atilde + /Adieresis /Aring /AE /Ccedilla + /Egrave /Eacute /Ecircumflex /Edieresis + /Igrave /Iacute /Icircumflex /Idieresis +% 0xD0 + /Eth /Ntilde /Ograve /Oacute + /Ocircumflex /Otilde /Odieresis /multiply + /Oslash /Ugrave /Uacute /Ucircumflex + /Udieresis /Yacute /Thorn /germandbls +% 0xE0 + /agrave /aacute /acircumflex /atilde + /adieresis /aring /ae /ccedilla + /egrave /eacute /ecircumflex /edieresis + /igrave /iacute /icircumflex /idieresis +% 0xF0 + /eth /ntilde /ograve /oacute + /ocircumflex /otilde /odieresis /divide + /oslash /ugrave /uacute /ucircumflex + /udieresis /yacute /thorn /ydieresis +] def + + +%%EndProcSet +%%BeginProcSet: texps.pro 0 0 +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 +ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ +pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get +div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type +/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end +definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup +sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll +mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ +exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} +forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def +end + +%%EndProcSet +%%BeginFont: CMMI5 +%!PS-AdobeFont-1.1: CMMI5 1.100 +%%CreationDate: 1996 Aug 02 08:21:10 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI5) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI5 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 59 /comma put +readonly def +/FontBBox{37 -250 1349 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA06DA87FC7163A5A2A756A598FAB07633 +89DE8BB201D5DB4627484A80A431B6AFDBBBF23D4157D4AFE17E6B1C853DD417 +25F84CD55402AB88AB7EEFDEDBF2C2C731BD25567C53B474CCF739188A930039 +098A197F9C4BE7594D79442B2C8A67447DE44698321145D7689B91EF235EA80E +B600AA8E238064F154284096C4C2554EFE8DDF13AFF8D3CE30E0999375C0FEE6 +F992DEA5FC3897E2CC8B7A90238E61E41622DE80F438DD994C73275CC52249D9 +F6686F87F394FB7BB668138B210BEC9E46415A1B58C990B81E7D7DD301143517 +4C2A259D2A0A1E200F8101469C10D7D537B0D4D39296A9AB3F132DA9A3B459B0 +F850E2B3A03BDCB35AEF82285D19C38F474FB414F8EC971B994D1C7DD753B271 +2B71549DF497C665DF0F266988209D9EB616E4D9BA229FF984E7A886DB01FD21 +48ED2E4859FD6416C2CE52537464EA884C8C9C2D1083E2B83BE4B766474C23B6 +6E8EC5003200AB10514BB44D14CA700416AB6B2683E80862E7D5B49A05526A32 +554BB23AB8B0824BBA198E3825CE82380CC0FECF46651E3E5D77F09465E73164 +20342822F29572BC7F73F2C3BF95ED3BB6FDEADC20C6AC866C4F2C679594D7E8 +8D944704A3C5D771DC39503BECAB89F34D8CDB8FDB91AFE21F3F0260D05E90C5 +73E2C13DFA022C4522E5918EE25038A0498FBB530DA33B0AE238B1C6ED03FC04 +2BFED8236E07820C5BAB411EAE1B31D93A2FA7C374B1725FEC359ABCB88E2C89 +214529A263D795AACB0B95A3AB2F4E08EF350C282CE521716DBB06E5B8291B3F +5D4ACA230FA192F64BC902A4C8842C0F916F92FBD002ADD408BF0401D0284FBB +F05D4C6DB631420747CC902C5E1617E6573612FB26C8378DF41FFB5048D3CF06 +4893DBA48EF4B043D760F60C75712169D16C83EE020C45369E443E853E1809DD +F395B812067D6FDBD26111B34F42C21036AF952D0D767FD17F6959D9FDD46005 +D64FFF54772B50BB9B173AE79702981F58F9F235C591F476A31852174DF0619C +A470359153DC32610E782B204E7945515464DACE9099B81EEECC7EBD4B5126AF +C3FD9DDFB329AF1C95C41FA4A5F6958869509A23BD7210386329771FA46FF926 +0E54AC35106253EE140449425A8670E1F92B178A02A58EB57540F4BD8110E548 +BB584EA6D625C5F5FE0124A98E49915F1A1B95D2125874360EED1C4379FEF3C6 +90E5780C20309F11F2F23FAD635C44BA030B39EFF083A3ECCDD2641DCC67E900 +CFE9B1E3FA03479C9040349B7C63F8F01B3C994320994053DAAB3419B2E6CBA8 +E77DEF65584F1F4A752C94405C2DA24429B01DFFF073D51672CA0A8BF163C25B +C7AFF6B42D0D8F13B854E1B43BF742C0C0BA111246F359A77E20E4C02DAA44C5 +C82B5CD3EC0614AC95E8858FD216EC2E7056CA6DDCB26B1FBC1311F042069F8E +6090C3DBB16F20899824250E71C0624499D399BD11D98456DC1D01C2C3A7D67E +52B0EA1C05B3C84053063A00D7B13FA0693A2972FE41FC68189CB93D3A0153B3 +DE44D4A5793FCF48DFE13A598A7F835C0813750113F198B82D1B11F4BEAA2DFD +9D350FFC391D202ABE1E79B3F9 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LASY5 +%!PS-AdobeFont-1.1: LASY5 1.001 +%%CreationDate: 1992 Oct 23 20:19:18 +%%RevisionDate: 2001 Jun 05 20:19:18 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LASY5) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /LASY5 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 1 /a1 put +dup 2 /a2 put +dup 3 /a3 put +dup 4 /a4 put +dup 48 /a48 put +dup 49 /a49 put +dup 50 /a50 put +dup 51 /a51 put +dup 59 /a59 put +dup 60 /a60 put +dup 61 /a61 put +readonly def +/FontBBox{-27 -229 1292 719}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C +705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4 +B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458 +99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646 +87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385 +B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A390AA21B4410ADD58DACB +2AD42A79FFCEBF5BCCCE8A581D96D6AAD643D895F9774CAC00A6A8D92AEC08A4 +A02A0CCF0E3F08DD617A811251C16AA014A03299D338CE083FB15024B9310FF8 +3C47BDEB06495DDF0D030131A8A7B7822CBA94F7031AC034193DA32E0B879A08 +F7B293CE62094800D1697C3071AA70D84150146305AE27E4BE4F9685C4DADBA4 +C78C9F00B51306E2207591D26BE99860489DD7F7038A297BEBA7E766252EE188 +13BF110548F1192AFA92AF38439C96DBA9D81C3E790B13C21BE3A9830FED8E08 +A2AB325A34D0C54462D913082EF42CFA3A8925BEB4093453B70CD5AB250DC2B0 +442FC3B945786FE0F658560D1C7CD5411D0CBA01A7B265EB0E61FF1D2D8316AC +BB4E7A5865AB5551C237C008620BF29979E675B59017F33D91D862D64AC41F63 +78A4CAA4330B0C158FB1C175E3509274B8DF6BB57E87EDD9F8F048376A86365F +AB5AE3175A715741E8436F8C0E7C8A52886CF625A5DB1F04D63EB95C153DE099 +E3FDDF1E39ACD864EECD402C94DD619B4C18C4AB936CE584D9C00ACFD83CAEB7 +C7759365391141034FE4A44C1D8BFFAA97BFD658372B3737421D0E8CCE68CE92 +9E55AF96F0ADB1E2D41B3BDA3355AD51B409E0AC3E1B3203574B147976FBB04E +6A3577A67D69CCAF94A1993A3B8E59FDCFB206827290F095DA482A4E8A524B59 +FBC30621718C5B349A0FE15B70F69B13BBA1A525E4E636DDD7491AF8341EFC7F +1A3C3D3ADD5C7B2ABF2C1DD46557079A31906A4EC977243F6765A90D75650BE4 +A6EFA892E36DC414732AA6A35860D0B09CB66E52EE169C4DAE28C84120465F38 +3675032879D11AB7DF0A41574D6E03259574AEDCD9F1BDCAE2A7F31507CFAB79 +4147A907B32D602D74E4A90B31E59A7341A99B7D5778E99D873C284ED52D7BA9 +B10A1C4EB2CAD13870585C98D4A19533C91511ACC9C350A0D4F1210A1BD6161D +CDE73158FE0DBBA9F278FA05C8441C97645FB55B63210DFC4C0A9AE41D7E8596 +B2B83512B3E02E59285FEBCCABCD33799C0A5549412E6D661FDD8527F527869C +03B405A66C1D6169F0AEACDAD5689BF92E2BC87DA6BE16BB923F6B6C03C40867 +15E5F7A6BE5A28CE5823DC7A2805DCF47E58ABACF4335F40A788DFF5377F57DC +CD7B122391C3CFB418B5B24881090AA3C74F04BDE083B6B104CEAF13CBE01BC2 +CA7E56FE3ECAD50FB69BDE76F29047E14660185F75C75EBE047DF8CEB1EE9C7E +9CCCE9BC899D15AE2FE656382B01ED0702B6AD2BDEBEEFB62E09EE21658597BE +61E80153A3E48A17AC512DF9142689A3C340976600A3337DCAE4EB9E878F54B8 +02FC8B352D2967A8D14289C751420A82A3C3643706B4DD5EE937A60B421646F0 +4C16A80A3EC6F0C0A3773613DA269A113EF1C6273DBE00D5CDCA9ADBF8D23BE1 +8E37110F48EEB2FDE277B26EE0D9FBE2ADA80879A235A15EA44DA444CA3DA312 +822B584D97107AB8E68C365678428513A5F81668D166908801E1D68E2314EA6C +96AF9F161BBE8C53E03F2005F86B8E698CF3F6CA7AC0E06187D6C450BD635CEA +5FB0A6AD71F6E2BC94847AAA6954D868E144E39423D51ECDCB9D12D68CD7F8D1 +4D1FA63DE0AADC8F6ECBA7F62427DB63FF1D957E20DF2657A631F47EED085AF8 +FE2A0CC8E1C45DA0C90F2A7A1C2276162816EE53AB70509572C3A364B357B2CC +CA8DDB9AED0DAF7454E574BBB6BD5CF096D27A558041F249D08B8F3D193037F1 +D9331EA07ACD00C451D190BFD03116BF604096EA8BC078422F688B12C6B0677B +0E338C5ED442949F4BD96CABC55D7607AF05119520BF06C02CBE6FDC28AF4C0F +0F9A24B8DC987E3C59AFC8839EEC4216C95E06E2C1D82857C2657EFCC02D821E +4AB5681B6254C24C4FBD31492D321D696C9198A6AEEABC6BF2C9F840D0EC0972 +3FF90FC8C523673D8C495C04B1EAC196B08125E38099B21BA9AB7069629AF56B +55256D92FD6230CFCFA765E7C96C563473FB55EFDE3BC4DB2600A8E117CD2CC1 +EB4F554FC85A6CC5F5CDCF8B791BFD57F3CE49AD103B123837F27A0C17E4C93C +9A8DC69149C0355D6C39DAC2DD81DB6C45AC4E0A2CFD0CA03C7D92EB325D9B36 +059B94A7BBAC18709CCB0AF1709F93E503439AF71D366AC175E2E546E67C79C0 +8C07C5360D85A57864D36FB1F5901450F08E59B7FDB2BE80E126BBCF0AABEE0F +E025C2A63B91018157F189D143EEFB7298233EB521E22ACD332ECF47F884E13F +446E292786E0240490B0E20C2173252F448808C425EAE6CFD69F5D684333044E +200138C459498DE37A5E132EDC39FF39EE4132278045CCE81F933CD9C12B037C +3F593CEF7D7985075503347B08BD3438656FD14758358BBF35658CA1388AD360 +00F75C631E7B38A460FFC64ED1F456949AB9C8805D280DDDCC0EAEC0EA8ED5A1 +19CAF622DD05ECAB3AA5C6385897257333C0231A38A5CD35A1EF7369614E5C0B +8D3B4C71EA9940D3450C45E8F4D328414C054F20FC98BF20CF99C202601F974C +30212E7F23F5F0D4EE870BEEC855B0B8BD58D2ED18B4AADF1D5E06B78D5F203E +90242571A3921E24542F8E0E487CD857390656B354E9EB2252A304467DB6F94F +EE1CAFC411C448754738751C2E3C98114549B64E817AB37CD04847E78ED21DF9 +294E20D298FD1A653172C57A33602A05819BEEEA5E3AC213C3DB962E794892D1 +25B27B0F5E79276A361B4E32F729A303E8D30D8376CB496B5D9A4A1606A3975A +356D09711AF5A98FAA4C8524D5ED62A32B590B9F604B6EAB777C94E9C16ED18F +908F3B5ED99F8BAFFD4AE02367F0EFCB86983CCB62C698168BC8F9AE5A4A15F9 +071BE99B1667210365FF2789A04199022CA08DBB9D7DC39CB6E99D41F460CEAE +C5BE45EAD3F80922732197CD622680D7B4103EBBB4BDB0DB2A831C5D62016D23 +49A8A694709733A0A6D73CC6633E72F5E57A0F499D93F6521C31A55DE13C1301 +0622B1509C6FB6D123E6BCC083AA1F070D40B24C0E1BF96B8F2DEC1265A7D73C +8461C573A424E83C809C2CE297EBAE4CF82376126E6CE96EE05437A2FFF38F2E +D37EE9E86DB9 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI6 +%!PS-AdobeFont-1.1: CMMI6 1.100 +%%CreationDate: 1996 Jul 23 07:53:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI6) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI6 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 59 /comma put +readonly def +/FontBBox{11 -250 1241 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 +5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC +4391C9DF440285B8FC159D0E98D4258FC57892DDF0342CA1080743A076089583 +6AD6FB2DC4C13F077F17789476E48402796E685107AF60A63FB0DE0266D55CF1 +8D0AD65B9342CB686E564758C96164FFA711B11C1CE8C726F3C7BB1044BBD283 +9AA4675747DF61E130A55E297CA5F0182A3F12F9085AF2F503481071724077A9 +387E27879A9649AD5F186F33500FAC8F7FA26634BDCE1221EC0ED0E359E5EA5E +6166526FEB90C30D30099FBDC1BC2F9B62EFEEC48345160804AA98F8D0AA54B7 +A480E715426651865C8E444EDB798C7E11040AF6E5A7ED1888653C6DBF5E6169 +70BCD9C063B63B561EF165BF3AF11F8E519F37C6FDA2827685739DE2C48B5ADE +EE84F067D704D4511DBFA49E166D543CFD9ECD7417055D8A827F51E087CD2927 +BAFC7E6CFBD70B0FE969F890A11149D3D44D422C3370495DA9951AEE7253A49F +3A9444C8CD9158D84117299F7F2332FEB0F94E6ED8BC7AA789A3219BC2F227D3 +3B5BC75FB53B55D72AF4A6A7BB613FA235B11BB37D059FD87127CEF73D5B3FBF +9F91ABAD78BD9240BD9525EBA78095EA0BDB25D1A19E876F292882EAD5619D46 +D20317A345D931F4FF4EAE6216C27044CBA525E3B917CEA25A04C120466C4B93 +FC720E6BA832A06CCA0A3916CEF0968D49085AEBD243C41A448289A6F05CE3F5 +79148DC112A3CC7E8FF810B8C1A09E05F496C0F1EBA334E42E05C376C98F5F69 +C06C71BFC0A2F3AC9951CFBB143C66FB84F9C4ED27DF70869352D61BD5E11508 +0797B87C71AC58D7C35AB3247575482E538773F05A104B80EBB74DCEF9C44CFA +82BA0C30DB282E2233AFCBAA7A2627ECDDE91AA975707FC767E0D13F1B940EEB +60D1F1724715C239A413E36A5EFAB56A18ABDBD64D8ED5FC0D67E15607E5D4B5 +5EE67E98F80DE8B1E8ABFBA6468C2DE562A90F1A24A1E8237AE8F501B14B19B0 +F0BB6B32A40994A0BB3FD4910117649144DA32973BEC68476E383A859606DE4A +7BC1A21C03D4132B724BD82AB8BCDF711410F53844B0D90C2F45A37ABBFE44FF +EACA54C07A200E758D08D1547BCFF41CFA42215924B6384CEBCA425DD007B038 +11479D23AF3421EFBB54445CA5575940B7D07CF586 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LASY6 +%!PS-AdobeFont-1.1: LASY6 1.001 +%%CreationDate: 1992 Oct 23 20:19:18 +%%RevisionDate: 2001 Jun 05 20:19:18 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LASY6) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /LASY6 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 1 /a1 put +dup 2 /a2 put +dup 3 /a3 put +dup 4 /a4 put +dup 48 /a48 put +dup 49 /a49 put +dup 50 /a50 put +dup 51 /a51 put +dup 59 /a59 put +dup 60 /a60 put +dup 61 /a61 put +readonly def +/FontBBox{-25 -214 1157 702}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C +705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4 +B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458 +99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646 +87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFD11CE +A6A468ED59C5E8D61E071925A313CD724DB9AF18F4685B5AB09F99D492546242 +EC64939219938D6EFDF2A6AAE7108914A8EA6E0D72F2C341C43044B15BB57733 +0267A343F334FFF02502043997066A1A038A7DC53E9F134B7EA6E8666B2DAE4E +C538B8188BE490BFAB4687853579DCB21D9C284E719FC00C4E6CA47E7B409E83 +544DE1C0B2B4B9CDA2BAD11A47FC4246A540175F087AF2A0F4C891C2C9D116E6 +67CA49E139EB7C6B564E6E70F36FFC1A705F3097F10CE51FD414F6AC2AC8E6E9 +5DCBC1DEF33CABD5DAC1C4492BC1D68F16DCEC027CCDB3C1925EE32CEC72EC59 +1515B38717A7372D0D8D933A3015AE1F92BD8C23F6325F63AD4656C5A22A11D6 +34915B5FD9A49E6CE8FC44CA04BAFAF2DC195F3C89C40B4EAA91D52FFB43DAB2 +A1E061A2949F85076D3802368FD2A6BAC734FF4FCCB63C3A7670ECB6FB858770 +0FD09ED49B58FB5BC7220C67DBBE72A519D4B9770EFA82F1F4D475604EFD02D9 +23883022DFED473D54B236568DB92608EAEFCA2AC014DB84BDAFECE809C12932 +958505D785FFE5FE36CEF9061EBF42EA2B893919DE58795541A4F135D7B046E4 +A3CE840FF31689C022FF348C6B9D67ED27A90EB433BC9E7BA427334A47BA6406 +6CCC93A58DE09326434DE576A4F10A8259B1C48C68A0C64E522131713B598990 +DA46A5B5B8B75A17DE7FE3573E9E6A9237C4DC8036E074170F623398C55A6A52 +683995825B90C6B901E5A2E0C3A0CA90683DEF996979D861394B47C70DE57CDC +E3DB5DF5E76618EA773EE1FA040F9C34485E8EFFA57B0899151DF7E6C37F2DEC +B3202DB12ECDD97BA814B10CB103ED7E8065674C4E7192F8E9563DF2BAECAC66 +1E6D6554499DC7B0C167694035E40139560285299687B2BD99724C163C563109 +FEC473583DAE1E9E7EC5B5EA8D8F54D5CF97B091550DE046B9F503D21FF39642 +465376FE0F4F25502755413B72AAE977A8E0BFAA13D89DE7D637343A5893A39A +3AD67D500AFE8FA7768D6CE4C3258311539F90B1755D6F0FEC42AE55E2613544 +CCF7D77A995A23339073D85B79AF9E3312A218CB412485AC94EFC3205B8177CD +1EEC825D6A0A7C282524DB50571F80D76B16337DA20C651DBE9153E92AC71C1F +C40A7E582B0E3109D610BC3D0E0E4CE057FEFAD217B1873F240FC403DAFAD3A3 +E24625DC4EBBFAE70866722B038ABD1C56433EBE540FB3DAB8234AE447EC727B +9A851D2049363C4D6060FCF6AA26DBF33A6383D50D87CADEB4CC5522D02925C9 +95871077165AD7988638C61C74996A3079A0BCB6A82ED01C0A375A4AB86AE809 +B6460AABB046389868BC540CB588D5837A5FE28D7B3307F30009E0F36B019965 +A06242C2A4B830AD3F2EDA1B15DBE11101FA1A1DFA048A334BFEE64A20AE1B64 +F56FB4D5227AC931FE297450FD1BA00DC0B86956BCF5C53D1A693204CC06E786 +7F2E3FDE1B2FF00899978D512C78C874285E4364989966696C358108A1B1AFBE +97EC813B7AF5F11363EDE0C444D7928C9380FA1FAB619BDD3F008390B5393B87 +6EAB174F38F6AE46BE90E5AC7421E3537BD4DA8C0ED3E89C2B11E44A75679630 +6FA5FFC30AAC67645797355F3DF4ABE919517D504FB3F2EBA92E0C4D92C7C03D +57424950FB8DCAF22D064247024F85F9CE2FCE0CB7D37ECC7549E1550EF9B6DC +C53A50A77BC241066AFC952545F8D1013199812371E32CE5EF9B0B49F2C23BD6 +549CF426DFB46B41294E5CCE7CA6D5A3DB84C71060B06FD80BE2F9D3DEB6F6A5 +2188BC145EEEC74FF32B6BC58E9748AFEE06A53D689FB0570C2BF0F6D2D1D6D3 +629632E44CA9D082D0CF198220515D2D96FC743C80738C761B2751B9F0292BDB +B0A41EDA10CCECD5173B33B9711B061B3C7A7BBE5697F08157479E79892D9E67 +EEAFBB78D45C116A9B8C86AC2D0CACCCA18CC9CE3C8D5C70992D22EE3915EC3E +7887554856D511DBAD5338C88D19E20FFF9A6E1F769E60AE0A490EADED862097 +BC150C51358D39C6BE0FEE4AAAAA347549E7C8D48CF576CCDF84EB843BD313B1 +7564D3339A92B4B705A5283E3AE08F3CE831FBE8F0FA25A04162EA5BDDBC8571 +FC899AC5099DB53E52F1A6A3ED683DF325C5183E9DC96BF33DA09E493850227D +5CDED23C8B91ADF5986EF631C506AD98FDA3C99F70158232968BC47395C9F619 +DDE8277FC6DC11033B5776631F7E6835963A31583D130EA93E441BB198A47607 +5684644FC170F51B5081517BE0CFEA848EA963249602627238B43C1C28EFA939 +0CF3CC7EBF1B43C04ACD882279C5AE6A69637D1A4FC536971E31B0FB62A048EE +77B06E4EBC838531535D4FC76BD9C1996A897F9F3066C421D217954011CA8BDC +52F89318A68864086E114CBA10C57950F8FEDAC24F96115EC11F3E711D710852 +2AB0510CFF52E897B75F97206ED8B7427169538FA265702C54C30EE3277E3E61 +A348E7EA0F9E7FA6328B12C20350F36E1537CE14BE5CF749412B68943CD21B2B +85DAA2C273C550D3DF11CF4DD6E3252A6929E08473E1E533002EE44F665F73F1 +0E83063248942AC4B7DA6DA2E58049E9EBB6F3D714EF7330EAA07052C309BEE7 +A8652AD54CCA26C6AC8558D014275A8013A770364C61486B3EEBD991149B17D2 +54B84D67A868542345B1413EAF4CD5A1031FE1106A133673080B578C75F69FA1 +56C171707D99EEDAC297D8766E318D8345831306C3F749D6491E0BB99A5EC75D +F56748B7A36A0EBA27372EFACBD2DF983E1DE42218245F3C512FBBBE449C1809 +B62546CED082944CD2147258DF2BC7A1C02F77FEB9C8846E5BCBC37CF2B2F588 +1A2AB3DD0242BF23A0D56B7003CD911DFC028FE17EC059A61BD5D3AA6CF468B9 +B4A59D7DA9BB6FBC83612F37F3DFB5ED995C4AF52FFE29477754529B4EF8EF62 +B7236DFD888385BC8A45A339D443709BFDC5D118632FAFD062128D509CF60FFE +268D44959BF99BB67424490479553FE856072A3035FD322E1CFD46A294946853 +7037635FC069B33AB98716E4CAB017D671ADC01FC7985681A199B7CBAF7B82E1 +A7AE03B610AECACE29734930DF19405346B22B957EF25962B76A0779747CD40A + +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LASY7 +%!PS-AdobeFont-1.1: LASY7 1.001 +%%CreationDate: 1992 Oct 23 20:19:18 +%%RevisionDate: 2001 Jun 05 20:19:18 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LASY7) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /LASY7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 1 /a1 put +dup 2 /a2 put +dup 3 /a3 put +dup 4 /a4 put +dup 48 /a48 put +dup 49 /a49 put +dup 50 /a50 put +dup 51 /a51 put +dup 59 /a59 put +dup 60 /a60 put +dup 61 /a61 put +readonly def +/FontBBox{-23 -206 1077 685}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C +705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4 +B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458 +99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646 +87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FEA5F6FE +DB9D0AC1A487281E2A1B534501CCF5B67ADEF8A2C129B199CF24D46D7212A046 +CBBFAE80486200C6037B3F9E995C34C97AC775B527E2557CD1956CB28CFE63AC +781572153003A49D0913ED58C88D0F946570FD9BEA98F7FEF6D5F7E05F69595C +2E6FC1480027F2EB1FBBFDADB6D6DAB4C2AFEC00F2E996D8AC8B25C2C0F59D23 +C99F2767325EBA7F568C2F6C191F4ED92BB5A9B8681BB4C100C442465CB0B4DC +6F99D91DEAC92D071470EC3E39A664CFBDF9A25B8147C9272AEAC2BDECF5F9CF +4456450CD3958BE859995D22DCBDF4B291F1B149091DAFF47D5AEFA9496FA24C +565554AF04D35E66B806C5E658A9406E215A8504858E744AC67FDBC2B68CFB12 +9CDB40F754A806D7FA078B911831FA2BB52F58C00DF6D43DC004780026BFACFA +6488683940E88290FEC54CF5C92D9D07093F70736336F56C1723B3AEB01C18FE +8021435F3744DC38CCB5706BCD226653750F9CEE0BBD15A0580678F2AA58D58F +6578DB30979BA9BD10EB02BB37F2E4CB7F083B2C699C39F179820FB8C2DBD7A4 +E7EDF03E83F7536946A3F532650AC5CD48C10BA3AB8F67915EAC0053592CA317 +E0A8EFD1322398DB7D9B32ECE97791A00B49839C58E426531833D30F153863E9 +2A79516C2878AEE6916F0FA78F94714ED709C10DB24955FC0DE6769D34E4E1DB +2ADED1775C5A5A6313C93B6A0195311B4A334B4D9B914EA59194239AAD1358BC +269B8CBD35A7685ACB29282D46440A38083B9CB2258BB81E2489B5FBF551AEA1 +330D4DF70E9E650964A369CA2F77DEBD0CDBCECDD2DFE4EE609FBBCE90433716 +E03D3FF981EE21D92EC9C31C40517D441C6D94691DBA3D301224650AB66B633F +53D1E9DDE55A114D0788337E57F5DDFAD75EFD564174BE30A5CB9B93ABF09D97 +438F5371BD9EC9E8823B5363CFA1ECA372E4903281DD93D5CA9F38F236D80F3F +539E73FBD69EF7A8A0CDEFE0D40A07F10C5A8CF320B6AF2CDCEE2C0BC06BCE4B +28B5810DEAA9954BEF2AA2394F5E3405E2B963501E5F17ED849B6B6C598B347F +6849B42A813CE9B2AB83F7EC80AD6CB466A16262B6DA10D7D330622A30A1F31E +C50BA84B0969F0CF412854C4C9A643BE43EC46CE6C80986F77B65432CB9BC8E9 +176F8C9574DEAF70972EDC9500B26C755EBC9CEC94F8B48D04A502FC35A33750 +21CBA447B7214F9DFE0DEEB104B9A5316DBE17875BD32869C6D45B79F3420C18 +BCE4CBBF4CF983AE79307FCD87D4C638E47EED790C1C102C0F21D8A7D50CACBD +692EAE6D2F3E67ECF1B5955870E0FEB10784F91535052A2FB2CC7E507090208E +B63AE57F1F5639D94B0178C9DF580238FD4DE699B0C2F3C17C38B45076F6ABFC +193ED3B05A091114B9A435DB94F63100206A232B40697AF39FD16565203B0500 +9ADC01DA83032C66BE24EE0FCB6E3810B49E33A8E899B7375467F1549B8C2A5A +0019D84045606746D5190789F3CF91475FDDDD1CC1A1FACF4F9AB6E0CB76B628 +3C430C337B27CBE624E02DDDAE7B84DC4F04C4BC506EE9DFF90A74B71FDB4E2E +6635CA95F018D621CBD675954EB0C01194F52BC772371BCE712EA3B66B34594B +067D4720DCBCCD123B7DA599062A44FB9C14D25488BA977E1239437AAA4CE569 +B0E1399A12662348A48D0A95512D09B66AF5E6750845D896931D138F61BAC384 +A04B43082C29B4503F10A447A27F6F6D9991A2AF52F8077C8E38FEE89C4B1974 +C4191AE20D636353A97E2D14A063739E60F9BBD908A7D52FCF6542A0D37FE038 +74EB39116D6106679597E9FC91837E16C146C9C9200D4C117C04FD4641A63BBF +1F687789469283FB653FDB47D398B0FF5BBBD79EDA99E9133C83A7BC461BB732 +BAA66642565E7BEF23595655B04B31EF555C4DA7AE094CF28009B580F35000B6 +EE4A955E18F7D7E3B181700F3588BF866AF9A1A6FB58E7472C35F778EF01BB46 +7D7D78F022A2CE9230DBB90F56C59E0AB11D6DD15A3B0E4BAE986190DDEC8F59 +77E5787B463A8A4CCFCDA0AC183B711DAD5410628080EF997E5278945FB5BCC7 +EF0F4C9EA8F2ECA6B3F3C525A702153A100A5C4C49F7EB06554003FE331BE1A7 +45DC11F5708B6028641320B6F5990F2FE4542257FEA1A254B508B1EB34A8A642 +99ACCF98ECBDFB972E2A86ABB96B03966E3A38768A3B40EF6B03C880C0A29801 +603152BFF3A837615CD6B03B256A9C4E75C19C4923A61BEF7ECEB834383D901F +244CBF6431A04E4A0627F4F1D7F595ECB58BF7069E3C2C810190E9BD784137CC +984A1E9EDF8D295614506AF6309DBEB701952B4CA41E1F2592C2EA93FE08E3C4 +5021C82DFCE874AEEFECD40A6F82253CA4CF5EC6F63C364D156D98CF39C8ABF3 +9457E7063B88B1543220BE8F7988A6AE3C83A0DFC2D12DC48D16CCE5BE3A4FDD +31FB3C0D9DBAA567D53D4812E6D2589E265D95C20B1F097B104AF01601E42D0D +51BDBBBDCE58A4A7D8F37CC48AFC7561EA5138A0AF134FBA9EE976C6F2567C36 +5B621B27120D88AE4F5CFA90AAC76804248C59A37296E05DF032A7A884B93DF7 +A935437A1B168896BBD50080AA39E5293DA4BEC093CE1BE802D7A03828377267 +70BB66A164206872A5316D9824E43E308B5E0DF061798A494F09809E648C0698 +50136A54E95CD405638D443240937F6C13D6D8DF02F168206D6EFF2A9668F6C4 +9CC604275EF8D49ED2182D7EE0B0AC66428C7151239BE6AE126FC43D773CD7E7 +3455901C72581F38CFCECCD8FCCDD62C23C06814F4E6DDCE72644F49185A7C2E +C7221AF9F1704B3491A44CB345AC39800370229028B2E8599573534764A0571F +AC160D18CB0F4F4A74868B1DFEFFBFADB58964094F1012B557072A709EDAEC2E +34125F050F342017648FE8E4ACD6481FD13CC1BC9C801E84B0507CD4E9893E06 +F4EA9DDD2BD5FC23A7DB3141C13C60D3C27D4F735DE32172DADEE46B203AC03D +C1290C3AEF0F8470511C062A3119293620EBD0BE2321C3A7E783452A72455140 +5A84EE5CD856FBDE47EAAE9E905E6A881C0A22572A789A838EDEDD0A808586CD +ABFCFBCBD9688C2188156A7C1FB437CE3A85A1EE3AF70D55B3 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI8 +%!PS-AdobeFont-1.1: CMMI8 1.100 +%%CreationDate: 1996 Jul 23 07:53:54 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI8) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI8 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 59 /comma put +readonly def +/FontBBox{-24 -250 1110 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 +5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC +4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120 +788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62 +C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32 +617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1 +D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63 +532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B +5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8 +4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6 +DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E +B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2 +A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89 +8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA +D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817 +AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04 +AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748 +A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827 +AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011 +85B385124C2B6534F3CD1866AF92009D93B97F763AA3C28584857D64C6AD5C24 +68B3330EC1F0EB0EBBB855EE71262417C4C15AFBAFAC26FDEFD63C49486338FE +64211DEF7AFFBC82242BF22DD3AAD6FB1356B1FB6C464FFCBD266112D0F6D9EA +7688B88321AC6512E7BA5425531791CB08FE6ADEEBA6A503974714F7EEE8420C +9374BE70F06289C3D329DAC3A0D9696E451431465340E48CB3FC0DDEBB369028 +8DDA8A5D594537EE051D51CADBB0BAFC654AA9861BF12B3BDC5EEB6C04DA99CE +CA42B984B7D75C783CCFCFBDF5DE550E10C82CFA1582DBDDE6C3AFD64496CC8D +88C037E851FA71EC285D00266AF95D70F6E7 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LASY8 +%!PS-AdobeFont-1.1: LASY8 1.001 +%%CreationDate: 1992 Oct 23 20:19:19 +%%RevisionDate: 2001 Jun 05 20:19:19 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LASY8) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /LASY8 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 1 /a1 put +dup 2 /a2 put +dup 3 /a3 put +dup 4 /a4 put +dup 48 /a48 put +dup 49 /a49 put +dup 50 /a50 put +dup 51 /a51 put +dup 59 /a59 put +dup 60 /a60 put +dup 61 /a61 put +readonly def +/FontBBox{-22 -201 1003 683}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C +705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4 +B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458 +99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646 +87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385 +B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A3915FC1B8F27464D2AF01 +2AF0993BB2C836AC0BD99FC99CD6A00B93838BFBD0A80D69042E191BA3FC87E8 +1D6EC6187753AB286E7FF4C23C4E829888749AA368CADB0540D525F05F029359 +94C4B4B8D6003C67944BA83866461C4A6BAF9FB97FAF084D2A7132624D138DDE +195A5DE0A175C9CA4292C8670DFEA277C4C9DEE1D2F46517ACC059C064E58551 +4544B9BCA7CE84F1CDA0D901A37FFD838D77B790937A8B907A59786D65DE9B3C +E6CFA78A484A3F0BC2F7D6F2DD4647F1C315B4182432A3158B76F7E61EB25B42 +70616F483FB9F72F513B878165CF003EF22731B797E19FE5AEF9C26D4D6F4155 +790CF91D9AD2CE583A3CE14D529FF0490FF7B6FA554E2EC883504B510BFC7344 +1786325BA895B507C892612129F31490EE255AD204F18A4B0B866C570D118AB8 +83816F6912AFF49E6A3C81BA8D791F3B912D1C1C9261B20CF3727EB1DBC3ECAB +27B7E77D250A702A69AEC05DDD58524A90FC41169F74620CBE11884E27742059 +6DA249E7D125472C186C55489AE5DF7860E7A8EDC43314119AF74434D378E6A9 +D29EBCEED12CF0721AC18AB5D5C8FD89ABE49213BA35FABD5689291643525D4C +84C939845959F59C9CA1CDAE95A22767B622690A18924781A4667836A44796BD +B5DF0FF2AAE740226405A298AAAC09412B2DB12E5B8584AD015374BD13F1A804 +BD47E3E1FCE19D763E91AB70BC63616D3087C7825DAFA62094DDC378584E8F74 +491DA17DBE1671F3D3A8820777E56FC850ABDC7000BBDE7C1E1DA5724371DCFF +20D85A2E81A866DC310F021062932402DA89D04FA651505CB64AE5EA5D7E9819 +7FD725C4CD38306946B6CAE358801AFAE8FBBB91A77D789C0951CAC7D5691334 +E21682E3623D4EEED1DB5D979615DC06118886BEA0CAA8D2AFEE921F98E1537A +78FF7676B849EC47087027A349403169CC50A83E20AF46469D36EDE658D18974 +C2B98AC9BD62EA2387826D99171394650D6B8A3599EB016268F5BD75A04303B8 +C62F6E678DCBFDE719D9C602ADDEB996066D75215112E91A0A78493902ED6054 +C2F674D804B5D83CB89A5852181F96C82FCF32AA99CDC155F7C751D27E88B11A +7AB207FF72C432AF80FCDB8795E3FE87D19BCAF4B32933B4A10628EBB33162D9 +8E543C1E5A1A6B492BE91D0EB669858E17E0B72274401D5A0932E732CF0F0341 +5DC3D0C8CD85D44EAA6DE02D199B746ABD99DFCE24689AD232D6656C8C479959 +172FB8D61AB547BDE06224C5A90B4F986C08674470342AACAEEC0610E68F6CCD +57713A0B4228679A04958DB54DB8018E4AD4DAF84CF430F0CBBC2985EA0C6DCA +B41100A728C243E09547C3D96A6A990FC26E8E75F7B6296D130E5418D1111F6C +2E972620107A3C3E4D302F9025B3E391598CE7146B75254D73AFBE9FDA8F007B +AF3BE01CAB4D9B3260C1AF89C532AA0638240BC3BF72E4A7BDA2D041256A4771 +2D9BB499BC9A12791DE95B0CEE9F0D3F083F85D84C24318581D31830EAE12722 +F914C69FB7DD78B7F0337BBD86ED9A06346C6C496356BA80253F7F539EC83C9E +9C392D7CE22BF8C2BB86FF703D6A4EBFED80D2CAA8ECD6B4FCBE31C8723EA53A +DE5EDEBF9338F444D495232F02EB76191ED13B43FD73E003642C15CC621A46A5 +FDAD57EB79BB15284AD83971D5761F9C7545362D4B40BD760BBB3831897A3808 +F76444223FE7938FECABAA74ECB5966872ACE92A8BB08D592ED7E94A8393A23A +3DCC707F4DD90A5C3CDDEB5B7C74B892C55AF0E5E549E182EDE50B62650FC5AC +8768421EE4B579DD959C59A0F569384723182AAEFCD2D3AF23CE3CD8B3DA8276 +B5BBB58542F62AF349AD34F244CCB4C2E7B5959FFF6040980D5147100371FF19 +CC132F643942671A59E37FC5D63F4AEECC7E8EA765B1C9A974E45E6FF76B8670 +2FE07EB1084C573964406A336D4D1267005E6D151782F141D054B0EEAD1CF732 +8519C04E106468A07BC1B9C77BB9050D1DDADEA977B48A2C74968C5D7B44E7D0 +434FF8EA175BF9AD9AAE82CD35779AF0BEBBD4785B73DA4CA1B6A2F34E98EB48 +79F0FBF795BF8E701DCB9CA4E7751D512A97608A605F1CA40B9464F066FB71AB +BCB047B4B7DB1F5F9094982E8155BF6F51C938CFCB6DDE52942CBE8A47C92D7E +49FB24ADF5BAD9346C7CCD8C4FBB7F38AEFF1FA392F63A606CDCD2A1537A10A1 +456FBD4FB52EA11882F28780CC6D57F854E64EE2F1F7EE3F827CAE2139782556 +B1D7A6843CAEDE8E2D0B7AE46C368A19120400743E5F75263AAB200E7677C51A +CF72986272B6CE6C908379A823B3D27496D158A26EDB5D6DFA9619ED8F8DAB53 +93CF7ADE3CAFBA9E368566829D1C8491A47915D7FBAE76B19513C37F58F715BA +3BB07BEF1B9B544A4800A44B98F9791307D56AB0C813844212BEF6D904CF3CDD +6B312D854CABEBCDBCABD8E694D6E1D057382E75FD0E5C02413A1CEE37A40F1A +0AB42BFE7594296D0DB89576CC9FCD3E5439D9DFF2714EE8D98E630F130DDE4D +4D915FE7FD7D3F02E82ED66BB40201B169B2D1BD566148BBBB49DDF6CE8508BA +5105163CDF6BCEF9AD5266F3D658A16C43781520C51DB84A517561554336B1BC +DDD9A8B420F4042C34F7C45137F1E1222426ABD550CEA46E3894B7B617F0DF42 +AD840A710D0712F5F594BB9C2495688B5575AAFBDECCE88BFCCF9F4ED82C92FF +B0841B72A4DD4A536F3A5DC1EBFFAF7CD73CEB85DB608CB9F188751767B63BC6 +FEB16752D78E15E23ED954607757A479168394980EBF669A21821690C028070E +03BB88FB45895C7D36E1A86BB6B08F4551F8FF15E8558A08CC2B1D07E5CC4AB9 +E6380DCA0FD6534CD3165B0E1E1BDDBDC0CBDF40F5D5543816AB8E292756A440 +75DCE54A8BD62EC74FF9554F424809BE66F084647328368B164BCA458BD7EDB7 +CED8DDB8D9A19B9F8EE5478DDBBE3B7659EC77C2A8101FEA2B08F70467645555 +8ACE06AE9D392F31824BE35737459F0BCD16B842600F8F260EB5032127C4681D +73801EE15512AB855E390E33A7163C6E87F87E3273444018800EBE +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI9 +%!PS-AdobeFont-1.1: CMMI9 1.100 +%%CreationDate: 1996 Jul 23 07:53:55 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI9) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI9 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 59 /comma put +readonly def +/FontBBox{-29 -250 1075 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E394A533A081C36D6F5CA5FED4F9AC9ADE41E04F9FC52E758C9F45A92BED935 +86F9CFDB57732045913A6422AD4206418610C81D882EE493DE9523CC1BFE1505 +DD1390B19BC1947A01B93BC668BE9B2A0E69A968554239B88C00AF9FBDF09CCD +67D3B2094C11A04762FE8CC1E91D020A28B3C122D24BEAACF82313F4604F2FEF +6E176D730A879BE45DD0D4996EF0247AEB1CA0AB08FF374D99F06D47B36F9554 +FAD9A2D3CE451B7791C3709D8A1DDDEFBD840C1B42AB824D5A0DFF0E0F15B0B7 +22AEEB877FF489581DA6FA8DA64944555101EB16F7AB0B717E148B7B98D8DBFD +730C52937E226545CF8DC3E07C5BA30739BAFCD0F2B44275A6D503F582C0FB4F +449963D0AD2FAFDE33BA3D77BCA9D1DF878DDAFCA2E22CC4BACD542B282164C7 +97C2BDE318AF9D501CA21F6E662E7AAB75A5F24D2C182E598D175D44E88AB19A +E7CD59584F95B389183EE21B525BF52A3F23C0FE5383A5565A19361D716F508C +AAB78411CA5A4D27552CC1C435760D5A89D535B71C593E755C616661363308DA +A683F54ED0C23FB2C225A008392B0B719F66F11A946A090B7C00B662A3C69599 +B4ECB0CC70C85C4BBBF207E0026F6C7A19F2ACFB7A60804FC98A4BFFD7BFFF2B +9529E6D9D4238002BBC255BC62959D6F3381FE06E0621B879D5FE5B541D45A1E +759A6E7DC32B1D1632368D09A97039DF255B6492B1B2B7E2C1434E8306ECA7D3 +5A79B6D614B4979F10988BC76ED53A5F45315CD7DA216221F842FD0F3E050DD2 +BAC23C984D506D8F7D614BCB6B244F5F41321549BB0BD041FBF3053307168680 +3435E9C9445A59A7C666418C4F2512C32058B1CE1EA47F00930CB228EFA5C55F +1E69458EA5F53CB64BB754DC25A4385A270A8C1F8BF2C9937A809D321BFE9605 +045746539B38DBFAE253A7B6C3483B6C6E9FC204AA9442E43459BEFAD40BB95E +F2A5F14EA47F4B6C6CD1AB4D9EB6FADBE69EB375844376A0D2A670D9BF3D41B8 +14B8B8C20FB508255F1258E5266CA75DF1E985D977B4612F9C2C9CE406940E7D +721BCFDAC2B2F23A07990E9AE02920D85F2BDAB24E186ACEE7582939E534AAD5 +47DEEFA1BC3B1AEE113C6BCA30B1C4C6101F628ADE2D83BBC0A2DDB3CCF8D2D1 +22B5F7C7D15B16159F180D5E507F2AD813089277 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LASY9 +%!PS-AdobeFont-1.1: LASY9 1.001 +%%CreationDate: 1992 Oct 23 20:19:19 +%%RevisionDate: 2001 Jun 05 20:19:19 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LASY9) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /LASY9 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 1 /a1 put +dup 2 /a2 put +dup 3 /a3 put +dup 4 /a4 put +dup 48 /a48 put +dup 49 /a49 put +dup 50 /a50 put +dup 51 /a51 put +dup 59 /a59 put +dup 60 /a60 put +dup 61 /a61 put +readonly def +/FontBBox{-20 -196 971 683}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C +705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4 +B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458 +99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646 +87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385 +B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A39158A5EB4E1CBCDD814C +9F326497D38C51A121C75E0BF2CD79ED11C7B1A5C36F6CBC2C127360675F3C6A +FB3C478FBAB07212200E28C5071E1833E27D60FB815F448550C55F3317441B25 +406435197E11759CA6BE6B17AC8600E4653A99AFDAAF4FD54D28638136D701BB +FD2CF4ACFBF28E48CA313CCF5ED2BE032B7C9A07ABBEC9E6F6D90AB799716358 +37ED7BFC195D7243880801BC54BA5EB6CA604BA4DB433EFBC4EEE710ECCEA919 +DEA0BEAEE68DD8C9204DA9FF4A4B9DF203432482904799DCDF46556C1E68AD87 +0E39714C510904F488AD722307DBF46063E8185CF7131A749844CB5CCC0284FF +62A7EB6B0779800ABA08EF65FD4A17CD265E56C22DF32F6779BF6269B21F97AC +9BEBB084D2E7C04244665182DC0E86CA91A8B1B8E28DEB6D7EEA105D839F1054 +ACA14DF8CCC8A94481ACECED1628987F65CF1B313C1588EF96342B837DCAFFC3 +AF8A8725C5E02DD1ACEDCE5391538883E699F8A7A101387F0753556A0B8061BE +AE0B2899DCFDEFEEA6C97ED50D764F6C7312FA4E12750B3CDEB9934BFB02BBE6 +8B3EB028ABE584002EC7006627F116B1FE79A182D034DA8FD1C2D765D18C29F8 +FC8E7FC3EEFC23AF7CE0B17F3065602D472407D6547A5A02CF04715238B61A4A +3DA50EBA90DA8EC4D2325FBC4D04F5760C9EEFAB81CB6F355F5988F91F9AB64F +FA390EAA719D3B36C3167E6B6F6BBD25829C3FFCB837DDD66EEFB025D9767565 +7587E1F814E0470700130DFB255F9FD8BCBE749C16A9BA5F3ABCBCD7C1730051 +B31E35E1294161E7106EB9B0A4C9CBE5D1CF1AF0CDE7924F954A53C68FB862FA +B1DAE3BCEAEF9C0553DDB16FB58507288348EC5CFD202E13E1CF2107F55A1AB6 +0747733A9630D97DF190D7987541E1EB8B142C88A9DA6DBD61F4AA0137582392 +C6CEC8015A8DD01EB17008ACED9AE89AFB55E1F053D9A57DB064F0661A3A54F5 +0F9EF0B432571E0565CECC5EC768C58FC54375B56C2EB92407142CCBAC358087 +6EBD860B184023A2B469208CFB18673BD1627C2270696D9F605F803918615C87 +C32B254325DECA4C05BB3A4BB56DEB2615437FC884B20E41013567E6E3F6273E +94AF91B7F26725994AA70502B31BEEE4CEF862508CA3EC69E487D8FFD6B209D5 +41CD8362A667F7D3ECA63CF7596671827DE3266A9493992417B864029E331149 +CC0BAA82B67813CEE1EFB80CFF42F423F2609345045848E906C7C383243D22FA +E951907F5F9D7CA0BB343C2691F63E87FA26D69AFB843F500536A1A5BCFA87E0 +8E303F81C8CED37B8C7AE7F495DC63A363E1622FE03D5F511A6A37280C8DAB61 +7F8FB45AFCF55A128C4FE17506AA8B9EF2C762F456481A0B900E04DBAD497D43 +64F3F49868A1A612C691517F8B7ED55C8F264B25C3B14E461B57620816E6EE94 +5C5B21A6D524D14485F398451A857E46B02FEB9A5A29116BE466FE0610CC9117 +0B1380A53B4E3048A759312ABB13460648EA241482686FD15C0F14D14E8B18DD +C6112DFEDC9186E159ED1F25BA7DE4257C2EA8ADD8009A27F80801798E3AF985 +B89BBFD6AE47419EC46835C338F0802C5BBCE2DD5510D7BB6AD1DB035C70F0C2 +B4DF6A91E8DFD969543EF46D567F4C2259B4F98E3EAD4DC34E48CE05E226E32F +3B0355A3946BDD4C2B3B0FC12433F8014059E2C62350AA90D7DF460424F95D19 +41EB697CA8FDFBF2CA202A90C71C9263D33F30CD2BFB7413E1D2F54A339D37D7 +9B79B21BC4CC20F73A235505A5AE0485795C42B1407DD35C34B727EA6FDF4EBD +70CA2E3500734E805805D34624586A5B4F554574070DCB5AE202D83CB6611ACE +7CE919EC17649DFA1B018AFEAC2D0E2A170B64897553109FA56EB8F00DB39F3F +199E4BA2B2BF0F8B04A0725D89119C9B1412FBB75E22780489036B671F4CB1A3 +BFADB6D3BAF6944AFD9F1FAF255F5A47823CDE2083B09E92F80B11705C0244F8 +483F831EC5C3F7182820622A0D65B0354484D6FC684022D7779735BB8C4A1070 +56B60E54212EA04CFC91C0A612AE64A8231A9DF2C5B089748E98E43D901CB8D7 +B5C455530AED7CAD854A6CC7F17F5BE6A0B325B403A19BD707F133DEBFEB5673 +AB992D849D6028DCE251FA921D0FF03EF11BC8B687591DCB5363C7006C457DED +973606DAB051CE39275495C248F4492A92B9FB47D20AD9CA9AB78FA07552859F +DC03404B55CB61272E9D7DF8030CF71E944ECD9FD53C7701E3A16E56C389FD8F +FAF72DB2DD460EFD71F22F63891A1DEF8138F04B675A9A84812C3FB0360EA240 +8E443BAD1CE453A7D2A1A9E3DB83355F504E8DFAD1EAA5BE9D5D3F073A05BD5D +4B46B4EC44BF48DD1C06DB24B4E8200010CB6D2B029030F5AC572CE401318813 +618077AE44227BC4274310F3C2C2B063DBD1E60EDD1CBBC5181B7285538BF0DE +04A5367E16FF20FB8639DEB1A14BA4BBBB6525F87AA245CA497FBABF87BC178B +EA84591559B92AA8C737A635971F1C6FFFF4718A67D2F093FEE769CBDBCADCDE +2C196EE4336241EBBD800B2D818E6C32ACFC930E568143A4F66AC3DFEFB0E7D9 +FFF01C888801244B51DF0FEA43EF74241BDEC11A5169B5C12534D7D8470C69E7 +86032C07027FDE7163B096628F0E55EA57AC62917FE696AE302E14EDA6ED05B9 +10CB7C6811972F115B542D2FE33D53805398D026F59363E189AD50A8D68EE97E +BADCBEB1060BACFB4AE87649DDD3E28D1E93311FD00FA2975B564D8EF2BF109E +94493D758F2C4CCAC7B1EFBB133219806ECAADC1FCCF85620A3A9C832BEC98CE +9F94D119FA19A59748F5BEF4FE736C29EFD9A3E65FE287B548A37E41D7318E57 +73A375E8AF829400F19C618BCFE1BD93547C10A68F9B2EC73C8192180837F7C1 +AE6B659B937BB02F74624A08D8D40453EA90ACA9F65E6399D4A136A4747D1D44 +C48A4BC81E4F7902FE544E8A0CD2A0EC80CB601246DE2DAFDAAE34AB5A84FC11 +C0CDDEB26FC7F9F4193AB8936FF11C7D91FE416E979B6349398F92B7639C4160 +DEB1F3B2925E374A8CE1AD9B87DAF8B52352E22531ADD561 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LASY10 +%!PS-AdobeFont-1.1: LASY10 1.001 +%%CreationDate: 1992 Oct 23 20:19:17 +%%RevisionDate: 2001 Jun 05 20:19:17 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LASY10) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /LASY10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 1 /a1 put +dup 2 /a2 put +dup 3 /a3 put +dup 4 /a4 put +dup 48 /a48 put +dup 49 /a49 put +dup 50 /a50 put +dup 51 /a51 put +dup 59 /a59 put +dup 60 /a60 put +dup 61 /a61 put +readonly def +/FontBBox{-19 -192 944 683}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C +705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4 +B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458 +99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646 +87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385 +B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A3915AC9272AA4A7FC35A4 +93A7A0CA8BD1CFA4382085D949EE819A51062591606ECEB5B37419223CC0400E +158F1A0849868CFAE0F71DA6B4FA47A636EDE756530425A6BFE45B8080808B59 +6B886D033437677B151285B047C84C2E2FCB71CCDF34E20E925269E5F1A210F0 +391066823D8F21E03746BF79AAC6FF91517631686722226462D6A9EC5FFCC806 +B959AED95F492481324749E00CA117821C347F9B924BEC8C64C954570252E909 +5C33AC8B1320BB1992A88C619DEA7A8FDDE42390EC82A07BD8BB7F0014A41EC8 +04225B5063D3F04723F51128DE8ADB79F62903E1955A7D49220223CA34FDC3EB +8FB71700EB9CC40DF747C4CC60AD11D3FC038CB2051F7E97CF7C7F7D0F49CA1F +E0FEFCE664544CD1F7C23B05BA649D373539E7BCC761611C17489084912F77C3 +5FB3BC1E91E2B4A47C27BF4989C7703E83C5A505108037DE5006D4F510B8FE1A +570E42E4569FAEBF66058F9D9608A771BEACA2A8AB629DBE939CCBBC116E8BCD +BEC3A33CBF185A68DB60CAC5B21AF4D9B46B3FF4FDFBD6BC3C8101BE15E79245 +F0CF8F670CFA19ABC08C34D85B10C17190497EACEF6E401F322B1E281C1755F0 +BBF9838AF83A0A1601D78E78FD599819762347A77C71374AB428093048E3F1C9 +40CFD63B86C7F70BCD2AC3092DDD3BC91CA714BA28263EB863D5E6E2DBD4FA08 +6B22C1D18B16D7042219B9F0BDF5BF10AADB658CBED51C8B272E4DFA11C5A603 +8B4A437EABAA699B86819EAA072F7D90A9CE1B52287DD3D26C4709118DF35E12 +0469EBEA32B0CE51ABF18261C05F5DE918AFB511D068E9C93599D6ECC7BD9817 +4405C7415A3EDE4D1BBA7F4E531877A52B452E82BAFB6D3CBCA727BECBCBE0DC +857AAD0EA6CECBFC5369DFA26A3CF7BE1411E2C9D5008D225DDC74C115E9E61A +22A05BFFABCF4C09F990DEDB89871E891462F9148215411E04E534DEA0C6E2C7 +CB336F2B55074F41E8A5E374BE10460B85BA7013AA381E029FF7E79E2920A2D8 +9E0B3B6009AD4DAC52D484DF03DA7BDD789BEC266538D4497F160A254FC47819 +9E62F847E78BFA82AB89A23206530E7932AD868C011726A1CF620A6C31115865 +A7601D2AF9A0F550D96D61954886A608C09DB8A450AB27E2803EBBBE944810ED +556166FEE7E97860C0DE12B73DC2BD62D5E884903E2D1F7064D8B033F1288B1B +D73BD481859F2587161C2888CB73D352FD30D9D54DB8945BD31EE6D81783BE8C +EE2447DA85EC4C335E8EEB00FB628250B481501862CBE6BD46C78C12010320F3 +9F4E3B898D729E12540DED97F9FE75434B3BCF60AF517011BD17828F51A12D20 +110E546A9465C738CF7434CC1AD1E794019D382031F8F22409CC196AF36EFCD2 +607242AF2FEAA55057510795652F3DF14EAF755A81115CED9B45A3EA08F6E09E +86790E3F68419D917D467E14423246BA39FD7CCE343EB5B070363C822C496886 +9EC83E78A7927D54A35E69D184AECE780F83B1BB3236FD0FA14BE4404C83A1E0 +730BB7D7A4F3DCD55C46BDC99D2747F22B5262C9C73D0C45C2D36BBFB3AC519F +73730CE073FBDF32CE40FFC998EE3E8166557AB95B4745C84662DE96BA8E050F +575A64B6158CDA1FD2B879192DC2AB04C391F1251AB4079F6E9C573D09F56C10 +AD76B7A719B0929FCA706492FB11BDF94C74B28D4EF85D2A6E31A67C22AE711D +BC362445F011FB1407078262EFD924CF2B432AE5F738D3E69325F7A2A9EB68DD +C8E2C769461B6F23F771700B59B9319810E08E9780DDBC5E12F0B4E66A3851A7 +EE0B6541246F3A8DF3CFED04913184B9218DA101D344D5BEE30DC9407E13AA6F +C03C7D224824888878E923C7395C720FC4C73BAFEEC353C9038F73FA1E351DAD +FC6AFDC0605FB2582BDAF76C95DC422AD5552917421AA575BA777C7B2D32A4A9 +8F8ABEC5E962718019CEB5F95B3E3DA769DEE7823299560DD96A151D4616CE2D +51132E59A5BF099F6B9181EBA9227225C7ECE808F5471CB1C14AFD21795A0FF6 +51B86BF0A0BC78E4EB8279822795ECF262B7F6BD4FB6996489C89DBBA91CC8E8 +8A83255DB00D07B14074F8F120192EC20F7215DA07D0746F05A5FA07095BA30E +B4A48DDEB6CC226D30EB6821197604D0A410C48A1F36D553071581D6DF4F9566 +6C396ADB79FA62F6FBB69AECBF0E285D3B4DE20F8F69A226BEF3B2B4A443EF90 +F02E2F0BBA084FE34F3C219D6DB7F77807D2534701835C5311134B999CA1A56F +B45F88DB490F51591244FDBD2EEF4B450C43E3C898C1E65C109B9E2C79CCBE79 +5FC12E9E2E5EFF59C0185431138FE8D176E537D581E71D6B1FBDEB6E5BC663B6 +5AC4AB2220F96538A316B45870D7BFE87516E989693521268DA79586698F36BA +B1A64106A30F8DE31668DC104D8BACE48DC0D27335791BFAF3181C863DAA5031 +E6E6A91F4F0FC0081642505FAC5B4EABB6DB35D2CB6ADC4BECFF2F9204D760EF +BA2B35F46AAE49FEE196209E05982D0662399F5D395B3C8AA829A9C80B6EE87F +4D937B8B52C0C8F71F8C735498B0A8CE7643E10690CF38D207790F41ECECBE5C +E895C8AB40746A7DF24BCCE21B92B3C87FF8AF73BFD88C327ADC55EE733DBE13 +9F7D3974300C39B87B0B7C42F7691DFB7043084C20B4FD6E5D6A6952BC1C6B5E +70F16F3C04BDDEF40EDBDA7B2BB4167714D985F6F85B694617136007711C0B4A +A53362B6A8BF032DE663578C1D8B1CD875E62135D8DC28A37111D121FE71AEF5 +E3F4828D7B7303B90C10B297F5286BC281F9438218397DB2726683FA5BAF45BA +62C33DBE987CAE28F2111ECC32CAF49386DCC598D2C5691EA4E4C39443081230 +9460B4F728C7B095C6ED1A7104227D1C2F5872BDB90DC4019F5BE37D8AC737A8 +467651520DDF5A7DC5C6E70D2F1E18762BE3C68DC11E49854C78360AB374BBC5 +9AC7BC3E081DFAD05109F19466F805611C8CE909D6F8543D48E7C72D705E94EF +CAF420B795F0D42332D7C7DCC05F8B53744F9D5616C998D54DE2CA573D6BCF55 +C96FC1C213A7447B2AB9C7CBD58A4C9C +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMIB10 +%!PS-AdobeFont-1.1: CMMIB10 1.100 +%%CreationDate: 1996 Jul 23 07:54:00 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMIB10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMIB10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 59 /comma put +readonly def +/FontBBox{-15 -250 1216 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D004B836D34E88C25F6CE738846C8E2E59A2BCF +4ACF80A26D78872E9343A0537BC3BD7715F32ACD958D5AAED865BFE129278935 +063A31C2634DE2F9077E0AAAAEB224466B779096D8E3FF0A12AD5157F6603DED +1A82F3511359143311179080C510740B401C930C96270FD1AB3ECBCFEF5DE53F +E846BAAE95828D5790922640EF8AB9D7CEBE7669FEA02B72F86872D3D8754A18 +A1629C40A7C00C956F140BC63362478279C36EE353638CD3E249897207A94504 +4400668C8E702058EBF7284C9BDF830A3FC79C7EE900CC4C3664F9767A237275 +CEE3671644A75F1E696DA906B4C66870DBE87F5B4A176920C078ADBE24F55C09 +3D18CDE21B5FBC1C6A8AB18E05EDBEF9D1C1C18B3E6377BA2A688579D4F708F9 +A5CF4F56C5E39E2726106E9713E638775E606464CD674E5DC25CE9A696A65806 +C8E9D206B421E246F18013ACC6C7B2985BA93B1B7D7745CCB25B09957F50128C +B523A55ACA6A7A2A0193A536E590291ED9D577B527CAD0372E05BFCA1829FED1 +662D06144A5FFA628C587A4FA05B179F1A7E3B23B47765FDC054271A0DBF9C2B +B4F4771F80D1F7AAD9024868C30DAD5CF728DB2A71D86D53B0E674996E8C01F7 +EF97B225A28872F8AD4752A466E078C2B020EB832F237CB9B5631EB2D2EDDB00 +709D3864CA3A6C3EF18085EAEABC011E9F35C9BE4B5D0B608361F329B5784DAC +5557A602E9E3C204909D84DB988F0BAB914E87CD685C7DA55C5E0B9F0176184F +FC39B570873BBF346A0D1DE3942DA05434949A65CE64D8BAB0A091C40F7FF47A +4FC57CB4420221C7B3EB8B891044B5FB0227009F0F6028D3F28545E63C975F11 +6BCCB67C58A544AE706BA5309FE38161FE6933A744484ACD69323A57815F698F +4D7BA144610B92EB815145A1A91BCFE06D5CA0BD65CB153CDED0244EE607AA93 +80B82B7870CC03C17EDFD45233B740A79F6F20393013964E1A814B95C94DD07F +117BADF4346870F0797A95BF7ED1750F0CFBEA89D72485E4730E53332CB7F646 +6D8AB2DEBF2975B25A0FE0E17229F312D65CDA55295E56EF2563D8081B4B5AB5 +CAFB730FAA30CE0BC3EEDFAD90662D450CF84423EA97B05FA5890257FE048C20 +94494FA4DB24C9F1884379C2CD6D9F617B77A096C0BEDC532E5BEE56D876CF22 +2365AABD1D9849D383AADA380429 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LASYB10 +%!PS-AdobeFont-1.1: LASYB10 1.00 +%%CreationDate: 1992 Oct 23 20:19:19 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LASYB10) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Bold) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /LASYB10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 1 /a1 put +dup 2 /a2 put +dup 3 /a3 put +dup 4 /a4 put +dup 48 /a48 put +dup 49 /a49 put +dup 50 /a50 put +dup 51 /a51 put +dup 59 /a59 put +dup 60 /a60 put +dup 61 /a61 put +readonly def +/FontBBox{-29 -219 1086 697}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D004AF59FCC17BC5C5BCDA248667E22DA632042 +ABD4C635E7F36234B8F3636DF1BFA55DE3992A3ABCEFD3552D6498DCD135A2E7 +A011D4A8CD3DA5B29BBECC5F953202635159476822C532ACB1795E3FEA442D50 +93CDEE47691ED4AFAEFF8E5198EC41B4FA50D35FA023941A223BAF64BFA0421A +CFCAA3933D4583F7F0D643398BA49D509FE0747D40CE5EA3E2DB1611F0866666 +AC0781A2908568C97BA8097DBCEC3B935E9A2A69982991408D88D193AA24AF9B +253E259A17C027EDB7ED4714112624646E3B8306531EB0D6BC7B9B653625CC1E +7986B39DA8CE93CB6A27679C191DABFD83FC4D2B89C95023A25CA5D35E63127B +7B2E4F010B18A0A5E368E89F93877A16A1ADD1ACECD405D326D83CA5D4A510F6 +A1A61AE86D385995F841F115E87DD81321E7E029CECD1E92559EB568AC63B327 +5C2798A34AF9956429D0A64C91F5BC7BF9E6F8E66BC4F0893ABCED929BDB3EA2 +FD7F44BB0CCE0866B26A890B0F659B9DA6E3EE324290D73BDBFB5448E9D71420 +36C0FE538F18E866A50DD23152E2C096E1045E7777888AF5CEFB83B1C6FCA18A +26E83D75AB66291A5A5A285DBB1B952591D0EC3D575F3F4A5AEE28C9E96C27E8 +CC6C07665482BEED7820B8AAAEF9C37AEDF0067B541BEF8BC6D81970D870A885 +6E01F327E06CB06AA0C89EC142AA9CBE59EB4D90B5CDCCD81D289E4BE3F79899 +5040C25B7E807A854FD70F2770139C4B189855374CBC6B12B1A117898BDF1610 +74E3B41D991CA14C79092436BA31EC02D6CECA609739BBE5034D7B296BB0B6AA +AD04510FA14F58D30A23A8EFE7A72F049E876BF97C50139E8C0FF468121D7350 +20084E64972D943EF60770C27E76D66CDF3629546945CCF703CB3CD7488155E0 +9AF648C75CE3A2530DE72775CC2D54F5083AEB25BE25E5E99347C781317DF5EF +F125DDFBF7042C3BE25D2FBE51A683AD71072F708A8992284FD77AB101C2B884 +7AFBB58155C887E023877B2DFFDC471ED67AF4F57DAC50B68910A4883DB36A6E +A36A7A021D115726CEB047B293C820E50E4CF4AB60675AAD91734859F48152D8 +751326488AB6C8FDEB582EBEE819CA48EB0D856D325733F81C9823A9EF812973 +90725E9B42758BBE03D21AA460EC0315E8F4FFB01E9D18D8F2BC668E301AB86E +5FD600B498588B0FC322766DEB8EDA9E6AB1FE8D35255345399DC190C07F3A1A +4A4B9697EEC854ACE5B7FB9E0B47925710DCD503908DCAB34BA90B3D40EB6826 +67B9F19EB0DF6223000CC089CFEB26DE0A60E17FFC485EAF1FB16FCE37CEEAD1 +12A727548BC30A4F387132B8099985FFA297343BF8FC80A2A3F43E2901E4BB77 +6AA49EA0881FA225721085B64CF4F346C4FBC6091343E429FEC9B8519664F1F4 +3FF811A845B1A29ECF5C84A84D14C6CF10CA76783A98F7E4B513C9E4BE35C952 +08869D25C13038238640ACB354237E3E2BF7B8C4C9F9919A547D1827321478BD +DE45C7F88C5FDC02D424FF3DFA29EB6CAE3E9DBC0FD81079BCAF0C39E6BB6FC8 +ED4EC88DF341D25BB6681BB6604151DF7D6471754DF03495252928FEA96FE61E +FC4B446D7DF6718264BF01F3F664CCD44D2C7EFF3A43ADAB173868B4AED27845 +2A36C5E8ECFC15752793B9AAE6A4A073FA656DE369CA316403185D7F13218687 +CF31CA7895210669AF05F9538BB11C01ECD6F5A2577B5711FA1A94768C81030E +C59C76E0FF41D3ACF8A140E465636B5177A62BB05E358E9FCF123950BC3160CC +5E5888C461AFD93B02F1CD092C72D5D0B99C3BE653A82F9E8C0FAFB0B2814D86 +CDFD4246FD7C9857F7FD817D988E8403C200154123DF221B2BD52E5CBC976813 +56F9A7F15F6E6B528AE4B7F75078CE540B85FC09DA861C4C0BFEBB936A740727 +45DA0DA3A78A0EEFD6CE771C5C0A4A4B1BAD3D67B9850F7FA718F9EFCF78007A +FA8C1589AD9A41B4ED062463C6DEE2F8CC23DB5B55E35406387AC154DA99E87D +BBBA967F23CD0BE17CFF0E70E110E3F170C593712B8F68C13A2DCAE8F7272FC4 +39BE8F52FEBC240D4B87062266CF2D10E6EEC8DB8C0200F3317645CF8A2EA21D +2D00418E48FE2785BD40850560F76BA3BA03BE321B6B32A26011E810934ED873 +302A5CD77B60C72965C045D55F4666F3460377A3C0A01A28D33A2A1DCD1917A2 +A132B21DC8D5F0943C06AE2F6AA71A81CE43279725E72D4D6EA59BF8E4C727F5 +97FD04E536923FA04FBBE1F1D583992B64F4494EB6CC5C6D22A1FE1E6F28B2B4 +C49D2B202B55717CF0C05C7A05A079CE0C736BF093DBDCEB2429B5CB9DB1D9A4 +4E0AEF3CA4FE9F6F7E2AEDADCD3CD87744779829639EAC7D0EEB91D8A5F29B5F +4D4FDCBF6A152ECDCB36AD5FF07AECB6EA4712D05A36A46065E8D1E2C362CF32 +749A0E97BADFF5FB06C08A60277BF04F13F1C6574A9F3BDDFCB4309886C645AD +BCE7D3E059F458D8F5839FC314DD8C126BA18CB63038F532F8493301E04EC43C +7BF51569D5CD6E4418483611F0A89ABE52429A5FD232E7DC04E4310862FE6EA5 +C838A7BAA5C7AB1F32266E0BC57BB3075EDC330A365B57EDDEACE0C50B586A5D +AA3D5511E37A3754557AD8A562C6C8AFD3FE9DA735187613D117C244D27FEAEE +46026C55651CC74065C0096EA4D0A5560F6034B16EBD958344FE41F8814D66D9 +5024939C21F0040AF789806BE8578E555F3317AB145DC5433A8F7F4F9EE68205 +076F2E857466D3DE8A8CCE9E8775416470D91F8F6C0D6A9C7FB674424B9B0183 +DEA2C9AB9D01B9F6AFC31FF875D56690F7DCF2573EC3512F81CAA269C9FF5506 +53CE1BC0864B46AE74CCAE3053D1D01FB8EFA66F63F0873717BC82E1101E179C +87118D307EC20DA296FA404C29F0F3D4B5D5F6606A037DA21CE5DF09B69E0286 +A3406989C6FA312E82E14A983D3B7622E5D1EB9571319849E83423619CEF0925 +1F5F21B8DF07DAB6B3887D7D31482F33B0EE1A294045894721A4E181FCF12BC0 +9630F219950F4D25D87221BD2D81E3962C71C1C08F1F55EC0909356AD23C0443 +93C3C9A6562146691A00231390CCF7EA5C501EA52B5D39C6DF666F36DA5CAE17 +131F5D +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LCIRCLEW10 +%!PS-AdobeFont-1.1: LCIRCLEW10 1.001 +%%CreationDate: 1992 Oct 23 20:22:00 +%%RevisionDate: 2001 Jun 05 20:22:00 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LCIRCLEW10) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /LCIRCLEW10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 24 /a24 put +dup 25 /a25 put +dup 26 /a26 put +dup 32 /a32 put +dup 33 /a33 put +dup 34 /a34 put +dup 35 /a35 put +dup 114 /a114 put +readonly def +/FontBBox{-2000 -2000 2080 2080}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +497544391FABD08A483766E9B5C7ABA9A537C053A8ADC16DEBD8B5C9E1EDEB21 +E4E89B0945C0737B96F0194585BE0D9B958F1030EA84710C31971BA7E93777C2 +0658995DC8702442780303E948079822B9EE0C531A5CC49578EB9E683CB77495 +DF613FBDC4536BD7A90F044B7EEE6EACA2042539F62789EA39AA16433AC4BD0F +98AAA04894F5487C279D2766B50B23E16D7F1023E387F60757E6C80FAE85A8AD +149D104B38BABA49C58CCD52B719D635E892DCE74F3D283407537FE6CF45E192 +54BF678237D2B8B3C0AE474E96765078627EFAC8AA84DBF87784E5E755C587AB +BE50DF55D35CDD05D96F562153E2016C3D23ED27DEF2C3908BD0BE882E838796 +BA837E4B671E2CEC2471BC438FAFA250F12170D86934A19C468D5EE6C8B2428C +AF1EA0FBCE58BABD5BD3A354CB89003AFF34BB325334141E622CAC8CC29F962F +E4E4FBB6C0C21D4B0835248F760476BE1B36948376B6A4FBB98E9D9F49D97132 +7166B1D32CB3E6590B11917FF0244AC94551E6EF79FCEB8FD65D947E2B209930 +4DEFA82AF22E5320B8A19C0B968D88806CCCC1FC5934ED4B8FCA05AA42A725B0 +1FB85D31D75E9F198EC6D3A0920C9298E2F1535FF124C0760E00054F631218AD +BACF10F693891EFB272786596ABEA45AD4A2860C4E346515C79FCE68FE8B973D +F54F8D267370670A62546B001E39136F45CC78192A31EF35C1415522DBB171A6 +E36B3DD83802C2305228A4989C062F84219987A9585C33DDBD17150A39A3CA2D +A2A91BA35367D7A031E6F0965F920B26577B7FE34FD3EC315837EC1D91E1442C +2C3515DE36B9FDAB2AB6C742C7D27B63843146711159C1202B67BFD05B61C2C2 +B9F2158FF806B504D8F4256A8A26071309DE213B55DC08BD1B7736E37FAAE154 +EEDC361EB417EECB1EE918BECA57231A7CB682134460003F1A5A5A0CCF2EE77A +8C6C959F1AF74D9E45BE2A43EF45353FE77BD3C10551C1AAED678E41C6F2F945 +062E9032C955D3A49948FA8B283F9616C67B088FCF961587B0A3CED1CC259FD2 +CDAE3923B1C25546EF9E4844CE241657CFC15800889EDCDD1EC8D267E3BEF2B9 +BD1DCBC691635A3B532B740EDEEFCB1072701698E132897E2C0D9520F34018CF +4C847B2A723DF0B8FFF546F5956C85784EF8986999149BF78996581277E43FE7 +9A4409A96954F8E6EDAB0134ACB5757F5F964150D8AD43EFF35A128AB3ED8A7B +9DFBEEBFAA9D6272D7CF76CC59447B8EBF376F0E8F0D179B3BE9EF837388F6ED +36F6E3AB3D64015D628A81A2EBEB2883B7BC71B9D26D7A7D228B06EAF48EDD31 +46FA23B7BE6D1340FFD5F2A2939AA1E3AD7FD9A3EC7289EA41E512008F4B95E5 +9FED4D04D94513B8DF20AE387A9B6A2EE41777802D8E66735F2C05DAD7583F6F +D415B6833A8CB7483D1EB9BE08859581D805810D39694196933275D8528BA5F8 +AA24E1D17ACA093C04233120F1FAD8844E3CF04C3BB2CED0BDCACCB364426560 +AEADB3D02CFAF79979EAFF971346AF84BAEDCDE7F0A0C4768840711B90AB14A2 +00FB4544CF055E222330C8793C7AC675DA0DED5742B659CE5F0102C8267FAC42 +4E70B57C834085731F5BB4543AB491B0F04EDA0F018B9DC2A6BA373CB182AA61 +A97D0D24443EB61FBD49CA65B593B06989747A3BA4FBCC9093E3E2CDE322BB2F +7304226C5CB5CD3015FA4CEA544AB7DED49AA97E9CFB7D6BE72491042F93507A +449500F7AC14B4A2379098B5D1DB92B4D6AB1C4BFB4748F9FE8D96F324584D62 +69883FF22A868A141457533E5BDF09E1752DAEF5A2E09304D4D90A5D691E3929 +8E0627BF57634E6EDF30CF232953E3E52E8A01C6C0A1D21E123D45F71AC92285 +E5EC8B0124114B9CDF773A4ADFA4F8FE62CA8837AE701412EE763E433650A315 +06BCE11BA8F919CEF49C9C622B4AF84ACEF9973BA4FCF7FC85DAE67DB56CF1E2 +09ACAC211D2B636D49AE7CC6C64B98AD9FFD598C067F187CAF2ACEAA94E09E30 +683CC6DE3F0898111AC3BB3948239249489DAF1CECBC89DB509BCE +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LINEW10 +%!PS-AdobeFont-1.1: LINEW10 1.001 +%%CreationDate: 1992 Oct 23 20:22:06 +%%RevisionDate: 2001 Jun 05 20:22:06 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LINEW10) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /LINEW10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 27 /a27 put +dup 45 /a45 put +dup 54 /a54 put +dup 63 /a63 put +readonly def +/FontBBox{-220 -220 1040 1040}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +497544391FABD08A483766E9B5C7ABA9A537C053A8ADC16DEBD8B5C9E1EDEB21 +E4E89B0945C0737B96F0194585BE0D9B958F1030EA84710C31971BA7E93777C2 +0658995DC8702442780303E948079822B9EE0C531A5CC49578EB9E683CB77495 +DF613FBDC4536BD7A90F044B7EEE6EACA2042539F62789EA39AA16433AC4BD0F +98AAA04894F5487C279D2766B50B23E16D7F1023E387F60757E6C80FAE85A8AD +149D104B38BABA49C58CCD52B719D635E892DCE74F3D283407537FE6CF45E192 +54BF678237D2B8B3C0AE474E96765078627EFAC8AA84DBF87784E5E755C587AB +BE50DF55D35CDD05D96F562153E2016C3D23ED27DEF2C3908BD0BE882E838796 +BA837E4B671E2CEC2471BC438FAFA0F4FA9D004C64F187F897B89212356640B3 +3661AB6C36FD6C98BB4FBCF5016D9C6ECC317E76CA0CB5E739017091C4F3BA9D +AA0AC0CA3DE976094AA0C0DCB079008241EC2D1CD368958277386F52D7EF4AD3 +581A6658E5F46DA384CAC13208485723CAA3BB78E33D485D545EE7D9197E98E2 +53937C88E0A691E696912A9CF4D608936E212C18E3A1A792B4255891642599B8 +BF60A177C86186C00E2E0220FB80A0EEBB1D115B275FD94CBF960E1705EE0C4B +6938170DF6725216E76A3BE36F23D1DD3530FDDB409E758352FB2EC5D2EF0265 +B48A2C566E252846ED6717686FD6E86946CE37C9A3493C521DF4EF527F87464A +5E36DAD61032A752C75175660A559CFA480FF4A25C4B14BC7B27B42314218445 +FD3DB330A46DDB3C8A9F386855F555961A476077CCDDC68A26C1097AAEEFF530 +BEE89FC2850256D81DD96003533789A77B01967B7D0485CAB1FCF1977988257A +0ACAE84A584F9424F39D2A31B1B8493F9991F4E01C0B6647A3A78B80EC6A0E25 +E6E3D2CA32C4C7389D7BBA57C12FC00B99594E3B7055A2E28E9E92976F49321E +39418AE9FFF387C11FC1D88287F4C521283666FBD0A7516F160B29A1CFB55C35 +CEE54B5D7AC47E7A6C375C5B99135E310E5ED13697F9851ED930F2F412A3CD4D +F379CB616448DD6DBECAA1E31682AFEB4C3717501D47CF4D7F73E29569991F79 +C8AE39FD330A405C3B78A986B36F0F44A365E7A7BC93FDCA330AF7E83B6ACB81 +1ABC7125005D32848E2EDF11B09DEFF84835CDC4BDB8BDF704DCC887D46D5103 +3A53331E5361C61521FA1C9EF48EAD7F694697257625753B9692017E07056933 +EEC2B12745507467FB8D215E88E5A9380E0A460F25633C9CBEF48EA0135BFD27 +2D4AEB7668A7512087063E9D516569D1AB04C29B03333D03547EE6BFB88197DC +25052A260F8CA613F356FEF1D54B51F3A6D87DBC5D60904C49D244FFC336F892 +97AB11ADB3F954122F49687AA5037D4BAB26913EE95E54F0159945638F77CF2E +2BF5505B977A88F15428BA611030589371675892AFC801206A33DD26CEE6AFD4 +3C82669E345D5FCD039C1DECEB790DD00C56463B4CAD236B3A6C702593FD +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LINE10 +%!PS-AdobeFont-1.1: LINE10 1.001 +%%CreationDate: 1992 Oct 23 20:22:05 +%%RevisionDate: 2001 Jun 05 20:22:05 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LINE10) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /LINE10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 27 /a27 put +dup 45 /a45 put +dup 54 /a54 put +dup 63 /a63 put +readonly def +/FontBBox{-150 -150 1020 1020}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +497544391FABD08A483766E9B5C7ABA9A537C053A8ADC16DEBD8B5C9E1EDEB21 +E4E89B0945C0737B96F0194585BE0D9B958F1030EA84710C31971BA7E93777C2 +0658995DC8702442780303E948079822B9EE0C531A5CC49578EB9E683CB77495 +DF613FBDC4536BD7A90F044B7EEE6EACA2042539F62789EA39AA16433AC4BD0F +98AAA04894F5487C279D2766B50B23E16D7F1023E387FA4165DF522DB290D390 +B669550A43638C3C9CC38C7667A22D27F9DB1542620110A8671B2713C8DB93D3 +4C500474AC190831F9C7441DC4A7C27EE88DAEF10D7AEE6FDB22E7625E802B4C +FCEE0DC79988734BDA39B9896B1833D4BEC4F91DB321F343F57B3FC5ECA13AEA +AB108165934BDE65D2EB5A62BD395ABA20F0389A1B71270649CE1A93B29040EB +B3166F9EBC3791671B6EDCEB171F3CCDAA90BBD5EE5042AAC2AD6D838F79E008 +43845E5FCF0B3D71E21543F491832420B45492BFE5D3E278268908D3CA704A48 +AF6C6954A03244409C49A178680D62BC6277BE6A8CF4DFFA69775BB8FCFE579F +0DFD00493CC18A38F7AA197A43E96F5986EB21F77B0C955332C87B18A5F72982 +E3D0B0554AE03D86FF10237036E2CBE514A9BFC5A4F5B2C9E5667EE2B64AB536 +766C45D847C52B75FCF57652200536319F09D0FCEA025A5F5CA61CD63812083D +CE11E82271251C41D0550CF754C13A32F847CC7ED53C14742D3C5AF8E412E542 +DAC233E8C9FA03A4ED4BB95A9B831AF45E02D31003517156A429F54B6E1B1727 +520DE349B22A26C73A2D3CCE0733F2E594DD8E091E2464A31B86C81CF3616399 +F042260B75E2F3010CC15E843A7F7388C01BA40AC4E4F1D50059A55BB5111089 +F167B796709EE54D544E1AF445A3E791EDC71A6D6F2F298A20014956D52138CE +FB138CE99299A8B41905FF9AB01CC58A773478EB89C036BD3F552AE99E75F2AB +712E4EF075F70AF9023B71BE2BFDBB7A7F16D5A307AF4857DBA61421ADFA1022 +8A26549AFC5E926D29195FE85B2E3C01EFB330D900B6A7FE4EA5AB8A0EA87E5D +CD0AE684E50A59FEDD85337F87E8112CEA3F1236D33D5475FC3C473B34F423D2 +18E9BD7905C7F638D080A7C87D681237674701DB7D874937C92A5766AB3D53FC +86C3B3D02964CD566127FD36EED5C9D2413BB626124E557A394FAC265E19DFA0 +CB28EDE6D30A2FE2D7CF5610EF919612948AFBA3DBDBE206510021065FB9E1DA +C733F7C1E2D97BAE9E4C81432C4283BA9DCC3CC9E43515CD9001306FD22C8EEB +EC175694CD7AAB61ED97092DD23E90EDAFD49026057E4890937B0C8C1FD883B7 +6BD6BD46C8E1E8B8932624E866182266AD0F2B48799CBDB75740EA228B54CB0E +91AEAF0B47DAD7E20D073310870A011BAF598AFEAFD78189D389BFC646C74109 +E283A7493D4AF0078D7EBEC26FB7F170DECA32FA84461E7A2FD98884AFA22112 +10BE6EE680666313358632904C34E1936A14E9295B62CDC104 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LCIRCLE10 +%!PS-AdobeFont-1.1: LCIRCLE10 1.001 +%%CreationDate: 1992 Oct 23 20:21:59 +%%RevisionDate: 2001 Jun 05 20:21:59 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LCIRCLE10) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /LCIRCLE10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 24 /a24 put +dup 26 /a26 put +dup 27 /a27 put +dup 32 /a32 put +dup 33 /a33 put +dup 34 /a34 put +dup 35 /a35 put +dup 114 /a114 put +readonly def +/FontBBox{-2000 -2000 2040 2040}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +497544391FABD08A483766E9B5C7ABA9A537C053A8ADC16DEBD8B5C9E1EDEB21 +E4E89B0945C0737B96F0194585BE0D9B958F1030EA84710C31971BA7E93777C2 +0658995DC8702442780303E948079822B9EE0C531A5CC49578EB9E683CB77495 +DF613FBDC4536BD7A90F044B7EEE6EACA2042539F62789EA39AA16433AC4BD0F +98AAA04894F5487C279D2766B50B23E16D7F1023E387FA4165DF522DB290D390 +B669550A43638C3C9CC38C7667A22D27F9DB1542620110A8671B2713C8DB93D3 +4C500474AC190831F9C7441DC4A7C27EE88DAEF10D7AEE6FDB22E7625E802B4C +FCEE0DC79988734BDA39B9896B1833D4BEC4F91DB321F343F57B3FC5ECA13AEA +AB108165934BDE65D2EB5A62BD395AB84402D4A2703E3DC3BEC860D5A4EB785A +1D8D0D1AE7D31BFCD3ABE3E9779B6BC28D93CFCFD8461032D969F1C9A53A6DCA +321062C6750132DD47444F208275E5000794E261F842CA01FD5DCA6F8C92C7EA +E2D8D66ADB1194BD8AC59E9191895A2FCA88F32DA2B27717F18C258EE2402C69 +5655EE4D15708452687828A90653E9FC2707F1E9ACA413DAD6E5EE607F6DCB97 +09B7195203A395C97CCC7390F38D69AEC6323A0AAE0A05958B7987701BBD6497 +F95D8653699C39F179820FB8C2DBD7A4E7EDF03E83F7536946A3F532650AC5CD +48C10BA3AB8F67915EAC0053592CA317E0A8EFD1322398DB7D9B32ECE97791A0 +0B49839C58E426531833D30F153863E92A79516C2878AEE6916F0FA78F94714E +D709C10DB24955FC0DE6769D34E4E1DB2ADED1775C5A5A6313C93B6A0195311B +4A334B4D9B914EA59194239AAD1358BC269B8CBD35A7685ACB29282D46440A38 +083B9CB2258BB81E2489B5FBF551AEA1330D4DF70E9E650964A369CA2F77DEBD +0CDBCECDD2DFE4EE609FBBC60FEEEB5B8FA0C5DE573D01F66FC2DCE43C59D271 +DE4E4A1D4F7B40829C8AFDFEBB82FA488594D463EC07C10B7CCDE49905AF4548 +661F6DAF2100FABC6C6C3B9FBE930B52938F62EDBA363D5459F4F3B3C88F8A0B +307986D5B5335831F4E056065898A91CFCDC045E3D42547F2E48823892193319 +5EE7A40F554AEFF4633FF20604B551517BB0864CE5E026E1993BD62AFE305B8A +E1AAD775B8A43AC253F0595790C870E673FBFA6632344346CC167C3F483FBFD4 +AE355BCD70D140D0F68DAF0652DD24559D22D450C8CD93B098B0A36C15749BA5 +10DE7C6042ED97289E7FC10496AB5A52CA2D63D6587D62F0AFB3BECDA71543A3 +92D76CDCDF1255604CAA309A3A68D742A8236D4BB6C642AD968251C4A5E2A8EB +3468883996D08DDBD6EECAC0F8118E49BC1E546DC873F1C6EE34EE73D2A7562D +6D5F480A66C7E499A0FFCBF6D576774A6D09FD7CA949759FD020584E1B11651B +6467CC3E3E820C48A7E8BB8D5791959EBB1807C3930E0258AF3F94FD09F0FDB8 +1FA475069536022D94A5F955133EE7073F09618004191EF3F3C229056F90F9F3 +F2C4C1066ABD5AEEF32DA669EC69E8948C78627A3F642E7B87DD4A24938030CB +BBBEC79625A309520BF01F8C0437021CDCEB7D7CD3D40466018E1D047E02617E +AD4B817AE15F9CCAB54D42B6889851AD43AC8242FB150C8690784D4DAEF3BD5F +0C0926D2EFC7C583A1C25D3AF881BAD3AC1F8915682DBB1A2484EC312A20411A +131F2D583F33F44D221858ABFB2332F2A6B45B6534AADF25D623AEDBE7078AEC +A4867B3BDFF10BF80226AA3F69BF8983C8CD040E99343243200F23D2D6452808 +31EF23568536C7F8BA3F5A10FB37FD0EB1A4BB7E067D3838CE4761D2C4ACB1DD +53972F32D30B6027A89447D44035C935870B95A08A101A2DBB4E314A0EAF966A +8A19520CA6F062C475F3540635C74747D6978F14F136416D760860F0C7FC066B +AA68F64A016F7DF6ED638E291C45C6C9401330CAD6A495AD8110F0005357FB5D +8027CBEBAA40C28F35D5E0F9C195F7DD67ADE1A89D018F15D18BD4E65B827017 +29DBC1DF2F48CB49FB0DBB8A9B834B +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSY8 +%!PS-AdobeFont-1.1: CMSY8 1.0 +%%CreationDate: 1991 Aug 15 07:22:10 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY8) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY8 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 102 /braceleft put +dup 103 /braceright put +readonly def +/FontBBox{-30 -955 1185 779}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBB2A7C1B5D8E7E8AA0 +5B10EA43D6A8ED61AF5B23D49920D8F79DAB6A59062134D84AC0100187A6CD1F +80F5DDD9D222ACB1C23326A7656A635C4A241CCD32CBFDF8363206B8AA36E107 +1477F5496111E055C7491002AFF272E46ECC46422F0380D093284870022523FB +DA1716CC4F2E2CCAD5F173FCBE6EDDB874AD255CD5E5C0F86214393FCB5F5C20 +9C3C2BB5886E36FC3CCC21483C3AC193485A46E9D22BD7201894E4D45ADD9BF1 +CC5CF6A5010B5654AC0BE0DA903DB563B13840BA3015F72E51E3BC80156388BA +F83C7D393392BCBC227771CDCB976E93302530FA3F4BEF341997D4302A48384A +CEFFC1559BC244835D66BBD96C8A7AA401277C8B7017EA120CCBEF1CD6E00F0D +22EFBE943B7863A7FDB62070671D966D5A13F9DE8E576861C9FE1BDB92A8BA02 +A44BAA2E1461DA7AA97AC9072EC691F74C0E1C03BD3CBC39870CF40AE25F6A80 +0D4B051AC8EB2274DB4856C1CA62C55B122A97CFD0AAA8B37F8D7DB642A58280 +CA5AF2B4BF2207AF703F8902A8BE19BFD9BBEECD63D362F819E71F6A02288C08 +050A7503B4C8BB5CEB75C33C47F25C641F119E55BBBC4AFFEFC6F5C138B24041 +DC0583260A33E4F75D0F14E5CCCA41E94233C670D1884554F334AA0A6C736077 +83445B1DDC9185AC8115B4F590ACDE1D473A52C89AED7F77DCBD773D8C3EADF7 +166D328526B01FBA4BEEBCF52E4B39490A3B3766730036ECFB481D255E317DF4 +79432A95C4F1125EB9903AA9FE1CAC8003EF0DDA0851215036449C3463822D0C +6DCBF375FE062BCD746000DCA10035C3A3FD8371E83A4491256816081D9CE0C2 +8A645903FB0DAEF45CBDEE53BC6391F527A92AE5DC2F6C1555711280A7EF311F +8BE208326B1E2D31D01387DCC5EB47808CF15D610D3D0EBC48EEB2905A86E2F7 +45804E51470A75A82FD5D9EE32BABDAB67F4C8F30E845BBB8FD4DDD885ED613B +997D63DF0D6C5BBBBF249DE7CF3DE605B3EBE10CD5949B4D092860A4D35D8BF7 +BA9F53639E5CB4B0A8D044C5A606E7D9DC3AD3DD15ADFB6BACAAAEFD9ABEF05E +1E0F2BCBD125A3D4F52634EF6C +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSY10 +%!PS-AdobeFont-1.1: CMSY10 1.0 +%%CreationDate: 1991 Aug 15 07:20:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /minus put +readonly def +/FontBBox{-29 -960 1116 775}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A +27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF +5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 +0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 +DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A +71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 +4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C +515DB70A8D4F6146FE068DC1E5DE8BC5703711DA090312BA3FC00A08C453C609 +C627A8B1550654AD5E22C5F3F3CC8C1C0A6C7ADDAB55016A76EC46213FD9BAAF +03F7A5FD261BF647FCA5049118033F809370A84AC3ADA3D5BE032CBB494D7851 +A6242E785CCC20D81FC5EE7871F1E588DA3E31BD321C67142C5D76BC6AC708DF +C21616B4CC92F0F8B92BD37A4AB83E066D1245FAD89B480CB0AC192D4CAFA6AD +241BD8DF7AD566A2022FBC67364AB89F33608554113D210FE5D27F8FB1B2B78A +F22EC999DBAAFC9C60017101D5FB2A3B6E2BF4BE47B8E5E4662B8C41AB471DFC +A31EE1 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSY7 +%!PS-AdobeFont-1.1: CMSY7 1.0 +%%CreationDate: 1991 Aug 15 07:21:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY7) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /minus put +readonly def +/FontBBox{-15 -951 1252 782}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D251491EBF65A98C9FE2B1CF8D725A70281949 +8F4AFFE638BBA6B12386C7F32BA350D62EA218D5B24EE612C2C20F43CD3BFD0D +F02B185B692D7B27BEC7290EEFDCF92F95DDEB507068DE0B0B0351E3ECB8E443 +E611BE0A41A1F8C89C3BC16B352C3443AB6F665EAC5E0CC4229DECFC58E15765 +424C919C273E7FA240BE7B2E951AB789D127625BBCB7033E005050EB2E12B1C8 +E5F3AD1F44A71957AD2CC53D917BFD09235601155886EE36D0C3DD6E7AA2EF9C +C402C77FF1549E609A711FC3C211E64E8F263D60A57E9F2B47E3480B978AAF63 +868AEA25DA3D5413467B76D2F02F8097D2841EDA6677731A6ACFEC0BABF1016A +089B2D24F47B9D66B677886B90AA787AD865B5F78EE434AA47B7B0F1244A4215 +251FDCC670FD01A92226E2C667C2344298D001575BDF782D969D836ECA11E229 +C7A17E28F70F9B17273FF243452DA885068A8BCB5165534F3996CBD8D97307DB +593D606C197AFC259E691C242F6E1E651575B6852AAD54567905E6F542DCA109 +7F6DA24DC9112FBF7CE48B387953787B2BCB841873AED2DFA83339D39E14F4DD +3A51584527AC3A93630D121E2AE0C89D9C3F2FFA767743B1276BE1E648041010 +0FD510F1A8 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI7 +%!PS-AdobeFont-1.1: CMMI7 1.100 +%%CreationDate: 1996 Jul 23 07:53:53 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI7) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 59 /comma put +dup 97 /a put +dup 105 /i put +readonly def +/FontBBox{0 -250 1171 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D77639DF1232A4D6233A9CAF69B151DFD33F +C0962EAC6E3EBFB8AD256A3C654EAAF9A50C51BC6FA90B61B60401C235AFAB7B +B078D20B4B8A6D7F0300CF694E6956FF9C29C84FCC5C9E8890AA56B1BC60E868 +DA8488AC4435E6B5CE34EA88E904D5C978514D7E476BF8971D419363125D4811 +4D886EDDDCDDA8A6B0FDA5CF0603EA9FA5D4393BEBB26E1AB11C2D74FFA6FEE3 +FAFBC6F05B801C1C3276B11080F5023902B56593F3F6B1F37997038F36B9E3AB +76C2E97E1F492D27A8E99F3E947A47166D0D0D063E4E6A9B535DC9F1BED129C5 +123775D5D68787A58C93009FD5DA55B19511B95168C83429BD2D878207C39770 +012318EA7AA39900C97B9D3859E3D0B04750B8390BF1F1BC29DC22BCAD50ECC6 +A3C633D0937A59E859E5185AF9F56704708D5F1C50F78F43DFAC43C4E7DC9413 +44CEFE43279AFD3C167C942889A352F2FF806C2FF8B3EB4908D50778AA58CFFC +4D1B14597A06A994ED8414BBE8B26E74D49F6CF54176B7297CDA112A69518050 +01337CBA5478EB984CDD22020DAED9CA8311C33FBCC84177F5CE870E709FC608 +D28B3A7208EFF72988C136142CE79B4E9C7B3FE588E9824ABC6F04D141E589B3 +914A73A42801305439862414F893D5B6C327A7EE2730DEDE6A1597B09C258F05 +261BC634F64C9F8477CD51634BA648FC70F659C90DC042C0D6B68CD1DF36D615 +24F362B85A58D65A8E6DFD583EF9A79A428F2390A0B5398EEB78F4B5A89D9AD2 +A517E0361749554ABD6547072398FFDD863E40501C316F28FDDF8B550FF8D663 +9843D0BEA42289F85BD844891DB42EC7C51229D33EE7E83B1290404C799B8E8C +889787CDC7AA8BEF7021B3C18A0A61A68CCEA80153A2E09D2E04ACE20306E501 +8CEECA860C3B2609D8785ED2C660E2777EA960ED94D28671B564A8AC85E362A8 +4BADC8FD99D47B66E2D64A8511225459A51B6B411E5205A28723D7C2B6753582 +A6D6A7A1A3F3519391F0A5DC76613810CF1D4FACF987E5ECB26C9B5D06C1F132 +1FDC76DD50C6E853DD21CF8646CFF217214B8DC0845821388C85A0E0A94AA20A +B9FF39586D4AF6CF86F3945C5C699F59E2DEEBBF9EB318E86D57DA4EDEE69A6A +5BDE5847570D4C6F1DD7A7E08A4DC932FDE320FBE0609A7889CC0DD2C982B5B9 +4237940CA4DF113D2174AD8ADF632B72D9208A36A60B9BAE2F0144B40EC76367 +3592BA37CDB5E19C3978A94A695F1E7D59F5D22D63EBC930A30076FC8D25637E +389E725578D02CFD41C0214F4F835D2F0B05F7E63D4DA50A9D42C235DCC91C21 +F14A947FA7B8CD7CEEC5C0370D8619BE1941F9B8FA079B21B596F3BE90E1C9BC +95F62B97009DA3905837583C002CDBCC955D687F1696A9E1F4CFC2F16405B048 +59AE381D6304A500CB183A3EEBF548E7D29B25D74A4A853E4BF1E443C1A0E1E3 +C72873A2194BC4A77EF47227A1D2E7E53EF1DAA1D9EA7FBB81F3BE0096C56647 +1EE33CB7D469AA2BAE35E8D1B282F2644E6F8567432158A6D5974493BD25398D +40A1540FCEE52426BFDFB14CAC003CDD2986CA807ADCC5E49ECEB0A0077FF72E +81F5FFD9C1BE1356E5321523BA9483C068C796EF9CC7EFA041976799557C3C3D +4904A5F4861104ACA3C7F37BA10EB63ED467A8B9B1208A6E63D48F553AC0B323 +6DE4B2E58168AE7D031484CE1A30559EF373C5F27F57AB93F7901ED4A382A150 +C74C166DF19C4EC736F3FA95B0FEA6A1C5F616C5369A92721AC951D4E037C2F3 +8EF1C90AEB +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR7 +%!PS-AdobeFont-1.1: CMR7 1.0 +%%CreationDate: 1991 Aug 20 16:39:21 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR7) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 43 /plus put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 55 /seven put +dup 61 /equal put +readonly def +/FontBBox{-27 -250 1122 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D +E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8 +47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C +8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4 +78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486 +1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E +01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B +C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0 +F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30 +8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF +A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7 +455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2 +9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105 +EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B +52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97 +563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F +0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB +7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1 +0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4 +1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A47CD4FFE5D78 +D8A2086B7832F31FAFBCE07449C2DF202DEF9FC7CEAB4028A0FB788150A07C01 +D06A674C0E9FFCCCCF9D8E5F0D01A69402622894D12C1F675257EE11E4645236 +8EC81C2F2CE06B00CCB14868E8B56F2F030C58FF8CD99977A16B30DF54CED890 +6233C5DC2CECB317276E26258C30FB3784C3EA7BF0D42B5467D1464A673A2745 +BEB09F62635AA2A18E0FB226B7C1CBB5E65C8BD0DC206F1193EEE016CEAE7218 +F3D275E921CA71ECC6AB3F62B3B9AFDAF722729FCC68770AD30755ECF1631776 +E05F1AE202229D3D236EACCA4B9E83238556A0B1BD4CC6B36F099386715E1C9F +AF33A3145F1FB901D3B599EF23E2ECDCFC9ED81A735F3807103DE90A6642CF96 +028CF5BD8F7A04C00819E2E6F322739540D3870343CB5B39C7ED68118F333757 +5506A675DAECCF35C60A1117DDB1F93A3C8C81B191C448B97E6F6EBB051D45CE +42F601CB42E38505C48CA7FB58EEACBF1149F97079E4E907301A69E055E7195E +BF14E05A1DFFCE96E93BD0FB1BE6BC613E24A147EDAE70B7C607CD99CB0D26D7 +0F75B64AA0BB773682726F9ECA2EB0A8FC9645A51A47C312797D3DAE3297B822 +48F8A312D8CB41E0286B4CB5D33B472CEFFB187334ED1D19612C54956F8F8F74 +71AA08249349A42692CCFD0CA8264791586B3FB43322242D29787127D528607D +AFABA475F51EE5957FD253B461BD287A8833E14D70D3898203202717ABF07F95 +84F0CACA5561FA28F43FE398506C510C31B5C360504F9290546EB51CDC680EE6 +4BD5A1D0124630222E12ED2246F0126029D663A241FD9133BB45CE01D5A17BEF +84FB68F1E0D53743AB920D8FA7DFD7A0E277AD4D21370D694A3B6497644D7BC6 +E5ADC73C819A0F7C10D9A9F18989D1E1120A3116D23B46FE38043CABBC616F4B +756A1EA74C4F7A76878379092818666BC1BAC7446B4CD07631315AD0D1B3B8E9 +11B516348F2C640C1BA713EF67AA942601F05B17B735CAD4AD73179D5AF9519A +C076FA154007B4A7F8C82EE14F8B9B4E86A9EFB41525B371AB1D896B1334BEE0 +388B23051401AEBA580D75F5E6B42C5804253E1124D473BD9B5F304AC904D352 +7C994DFB6648E0502AD5410742A1EDE3093A82E828691654DB2ABE3D23B7D29F +42AF77DC7A6DA2F9F4E88FEE5C7D070AF352A9023B4D36BF0B7F927B64530D2D +994AC5FA571F611FF1C2A9597CB738F08F955001280F203E9802CAC7D9CCCD58 +863234DF777F2DB93E88266B27CFD364A3D4B514DA6DE00F0F7734EB108D1843 +ED2518A2E76FA296EB0156E397A2AAB68E79B937AD2BEE3105C9D52E38D9CAAC +1852F82B3C2A3CBC9FDC721E9D3283FE016157375C7D3058668EA9150F7F3F44 +2D8D13DD11EC661E095CFB39A4FD36E7EABD5D4BB61945E4328E9B2E3719BE62 +9DA6BFFFA2C96835D6CD465F88C20A849BDBC10331E56F68FC831D4B7C483F93 +3072AC40ABFF65556ED00843BC66D633ACCCF55187C07057FBA6408B55DEB19E +05B94C9C42C4A0A34485A9A38C9C156BB5C2509DA87C259650858699ABD8CCE9 +87B106B70CB84940EBBADC7556025E244F2CC2FA +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMEX10 +%!PS-AdobeFont-1.1: CMEX10 1.00 +%%CreationDate: 1992 Jul 23 21:22:48 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMEX10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMEX10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 20 /bracketleftbigg put +dup 21 /bracketrightbigg put +dup 32 /parenleftBigg put +dup 33 /parenrightBigg put +dup 80 /summationtext put +readonly def +/FontBBox{-24 -2960 1454 772}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF5B8CAC6A7BEB5D02276E511FFAF2AE11910 +DE076F24311D94D07CACC323F360887F1EA11BDDA7927FF3325986FDB0ABDFC8 +8E4B40E7988921D551EC0867EBCA44C05657F0DC913E7B3004A5F3E1337B6987 +FEBC45F989C8DC6DC0AD577E903F05D0D54208A0AE7F28C734F130C133B48422 +BED48639A2B74E4C08F2E710E24A99F347E0F4394CE64EACB549576E89044E52 +EABE595BC964156D9D8C2BAB0F49664E951D7C1A3D1789C47F03C7051A63D5E8 +DF04FAAC47351E82CAE0794AA9692C6452688A74A7A6A7AD09B8A9783C235EC1 +EA2156261B8FB331827145DE315B6EC1B3D8B67B3323F761EAF4C223BB214C4C +6B062D1B281F5041D068319F4911058376D8EFBA59884BA3318C5BC95684F281 +E0591BC0D1B2A4592A137FF301610019B8AC46AE6E48BC091E888E4487688350 +E9AD5074EE4848271CE4ACC38D8CBC8F3DB32813DDD5B341AF9A6601281ABA38 +4A978B98483A63FCC458D0E3BCE6FD830E7E09B0DB987A6B63B74638FC9F21A5 +8C68479E1A85225670D79CDDE5AC0B77F5A994CA700B5F0FF1F97FC63EFDE023 +8135F04A9D20C31998B12AE06676C362141AAAA395CDEF0A49E0141D335965F2 +FB4198499799CECCC8AA5D255264784CD30A3E8295888EFBC2060ADDD7BAC45A +EEEECDFF7A47A88E69D84C9E572616C1AC69A34B5F0D0DE8EE4EDF9F4ADE0387 +680924D8D5B73EF04EAD7F45977CA8AD73D4DD45DE1966A3B8251C0386164C35 +5880DD2609C80E96D1AB861C9259748E98F6711D4E241A269ED51FF328344664 +3AF9F18DCE671611DB2F5D3EA77EE734D2BED623F973E6840B8DAD1E2C3C2666 +DD4DD1C1CC71EF3BE29E7C9EC47F20088C52CAEC511F532AA38EA262D7F21604 +53A8814BC9D3482F5488A9B7EF0E07CECB5D1765F7CD60783D511382F2076038 +EC078376A799AE7D7A65790775E52AE173C026C03FBB84439DA26AC9A9F86587 +82179141E89F8B1F13580C3D53CE8A6AD55129149E72AC871E1473958543975C +6E9207F34DC1DBC269873A43F2D558D361A7FE23B5E20503499726EC5E5D2871 +2ECE403F04416E65391741B8C68483F93BAC92D26FF5EF49DAE60D468F81E03B +CC41DF5200ABA9E94F165F535B09B495C45096445971C6B1F023E3916FD8C96E +5D484D9CFD0B446D94C0A53B5EF8BB20D1721CFEDB3407DD6EA6C09F4F8EB886 +DD97EEF273E9C2D25BF4E56C8E6B3E047EA69C375C980AD7FCD06EB6F7A707B1 +BB18DD5F5F5846069FB1F99DF99AB77D94B2F820C162EF397DF57B472538CB6F +182752C320F8C95A3D66B425D168FE953D2EDAD3266DB3C63CCC473068D4A7CC +2203368C5577D006AE958E5E1C175091D33856E4C0121DAC7632E297D306B12C +A395851BF91427E91781F72489154D81F2EBA26BBB9CC4AB22902B64A899B5B4 +91EC977AC91D557285F4CAA3402AD8374D63E85FD7E3A97B3ACAAC2544A5E457 +87D58EF5EA937F006D5FBC8858341065D471176E4D48DC99F9D748F3AF809D8C +03717EECA2BEF2D9AD1F6BC052895337838AE56D73B997408A99A7E942D04D15 +689C519EB1BF6EE15BC28279091FF428A412E7883D19BA86F9E2153104728A2D +1C0028788EA424CD688B780463696DC7094F44A8E56680EC9254DB12696D4D4E +5EEFC50AC088C35B1D6A8E6E9BB8FA7ECE695B0D5444900A12E9EC534E322E1E +D7455EE084477F0B875179C3114EBDB98E2F94C8C6D16E71C057612DF64DCC40 +4F152FAF5F8A258A465421362912D0B1CD03EE86125BE1B04F1BCADE0F48A5C3 +1465CAFD2E3805FE8D7273B8C531C20B7220EEE58694552062990231F694A0C9 +6FE5ADA173CB0B69A689847B96A064FF3FE4078FF1DE4553984FB926A37EA705 +AE71E27C1BC470A32C8FEF3EE4B2C43CC37CF12367B14AE661EDE6FFB9C20532 +01CDA9E19D9322D6D2A22EAA68A266AED711ABB7E06528E0D7A3D7922E56C29E +55BF4200944565E8E302C0AB34F72BC429B8DF4741499E5B2C8BF473E85DF62E +48F722769EC59D2BB1B5C23489B815A5859D12EBB1F2A72F3040EB +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR10 +%!PS-AdobeFont-1.1: CMR10 1.00B +%%CreationDate: 1992 Feb 19 19:54:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 52 /four put +dup 54 /six put +dup 55 /seven put +dup 61 /equal put +readonly def +/FontBBox{-251 -250 1009 969}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 +87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F +D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 +92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C +295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 +409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C +4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF +2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E +0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E +B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 +24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B +43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF +D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 +5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC +96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 +7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3901F92CC2EC9BC842 +5EE578CF06846C7078E026DFCB18AD4D78023652F0165DE17C183E43752132BB +19F361414774D5C13AD718B01F47E61745009D823C3996FB208C3A9D4B4F116E +4D38E56725461BBA1FE17CDC27CD99AC7D748CF7750CA2C6E1EC5E4746AC85F5 +E8274DA59750A144AD5AEBE6C9A7CE843BD6837FE2A88078124AA1A94EFC1C50 +B811EAEB2679AD57294AB13E45AEEB8C6EA105696E341E4C14ECF573EEBB83E6 +F9DE39BD6CC376158231CA2A83D91F721ABD116A40698F26610853E7FD075472 +ED40CCE32031FCFAE2737B412807F7C9E6494D0B73B7AB13AFD20D5219A71562 +12A7B57DD9965B15AFB38BEDA28D35D73282D4F1F9A15C4403B7C69C7E80DF54 +C112D7813F7271A5474438A7CC380735F029CFDF4C0C30C3901A7E30F8B3B017 +B1A663CC9481C79B903806F30AF37522828FD5DE3EC220C719B63A90FB3CE72D +AFC207F82CCD8250F4BA04D50D9B6D7AB78E87B456016CBC6273C129F6FBBF8B +E0110ED803D94F55FCD6F5A81F5BDC9CFBBF7D2C5DE7842D72E7D6DB5E4CC7B1 +0FC6DCDCF41556C3BFE5E2EBEB423FB0BFCDFF7F0930304047C29F67368325C3 +BA8815E47A90C5F149FE37618E30A9ABE6FAF8644A1BA737BEABC99ECFAE98A3 +74E11C3C87971EA3AEFACE9E25179B67B1D19A71241E23F55D1FE4879967913F +B679B98C6E9DCE63040F482A16253A09E74DC1A05FDB08C557D431D555FD688B +44C00601B8B43A8C8E2063D24AF1D8EFFAB2CD91BAE023A7FBAE39A4CAA664EC +AD0C0FAFB280B100C427881F8EBF4F8C03309D45F627F1241AB154E914F4BDD8 +DC81BC3D3B569637D3B28D1A6DCF92B17109177E18A3A9DEC32ED64719174F09 +F4945870BB984DF92073DCD619FD35C72E27AC107C62DE06BF7F27249958B6E6 +ADC6402CD366B2362BA3A2B867138B5DDC05566EB295A57D7249928E3AF1E318 +C1CA66E03D143AE09CB213C78B41FFD19422E09037BA93B53398BCBEF05CEFC1 +F10178357B0257D4FCA684100BB9F41720FEDFDD87C0DF34072035954E71D12E +B50116BD6C7417C9D4F88D0A30BB0441D1DCD172361BE048B14BB44534C209EC +3FEE42B7D20CAD2525313BD5009CDF8F4E62E21EEA094A24EE9DD135DD4D9DF1 +3E50027BE32B0B238C56FF8EA3D8BD01AE893A42D7420271228A6967FE708216 +D67FC7AEAE869DF6D4B2D240D426CF00A19A28295FC25D43E690A90ED3C4DE0E +0138A6C80E4808490134D2D460FD752D51B6074064E05085527C2DF8D454D1EF +119890298C63AC49AE079B447D41457DE8F5B5E5FA2776A4FD743860CC7F031F +B0BE0C179D587D820EABABA2418D900D8DB0857ADAE3CFC66827EC5659588C8A +2DE053EF8095246F68465BB4B15AD6E874146C4B531E5BB4BC1336BEFFF00C7E +36707F9B9CC6D50BDF9B3B51BCD4D753A07306683AB726AB60196C3271091DF8 +D844BB3491CC5DAF09E0729F23ABA8C955BC6BCE41750A08931E1E0C1DE1F831 +EF7E62091008BCBAC673AEEB3E5BE063F291862154636CA1A6E2F56F005259B9 +DE447FEA11AB2FFF996EC9E96008D05D6ABFC0A6A7741CC21C720D97FF9190B8 +967849B5A90B57B6D0002574CDF5F57125C51516A1ECD47FEFD5DDBA01B228F7 +81ACE820AA6AA8726E345CDC5389EBC74CDE1E92F3556ADC03946AE4149C1DA0 +4E4431209ED0F3BB429CB8B7E4B45FF09F8CDFF144FFF8347448DB67CF236F73 +F18D913F88F7BF546A14756FB067C2038208E23A99AE10155981DAF13C262A50 +78D4E58A9A59BF71C69EDA8D560FF93AA99BAFD51EB50EE555BAA89DBA9680BD +2839101D613FB26DB04A7C0648D72883AB4486362107A86B61AADC6D184EB0AC +E5F195C6D5FD5F71D95558A62AA8767E5883690743BA86FA6D97912458C1967B +F6A02F69C896401E85142D248E2C0B959CBF82732ACF63515DCE2A454C00ECAB +5D7A74674A4AB84DC9E166FFBD46379AF9034F36D53EB398F2884FEF10D20512 +53E0939051501B59D199B288EF80418A650C215F7A329AAA92ACA64B87D4C8C8 +DD1DDC389F3BF0A295E67FFCE140E59E350B07A3EBC663B1EF5976C8F1FA3C15 +58C7C8DBD7900DB231BF0874082DAB39C0BD53FED49336F5EBB0AB67247B0359 +7CFA4D56D73AF2F9A0AEC27E570CE83C4DF2C2583C24445E9955E29B99899DC8 +EAF914F767A4AFD39FD61E3C40F8A37E2C9519C7ED15E0F922 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI10 +%!PS-AdobeFont-1.1: CMMI10 1.100 +%%CreationDate: 1996 Jul 23 07:53:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /Gamma put +dup 9 /Psi put +dup 10 /Omega put +dup 13 /gamma put +dup 32 /psi put +dup 59 /comma put +dup 73 /I put +dup 97 /a put +dup 127 /tie put +readonly def +/FontBBox{-32 -250 1048 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 +990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E +6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB +DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 +59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 +D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF +8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 +6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 +1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE +03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 +95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 +74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 +3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 +47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 +AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 +42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 +40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 +B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 +95601766758C197F327101A9C9BF396ED625E27A7791ADD341F284AE0094B0FA +AF3771EC218AD799F17E51F1D165BAB43AC03DDC05E9960E8F55A678D087125A +011E7463DB232C8E71A669156185B07C2F4AEE85C97621BB359EE50438911BE5 +F5E489524DD5BDDFD94DCC45CDD5CADF5804CF15027DFD5202CE70A4B325847B +D93278A1C8701C3885F69918CB87CEBB1B03074C4F8B112742C1E276E51717D5 +1C1AE6EA74D8E5E88C0F3132E480887B8757B6955E646E245A8724D853053882 +F7A63D624A777C1FF06EF84908E4AD90BB4181E97942870D2B2083A6E96E5EEA +96E8B7DDF401E0111DCCB062BD4248ACC44B91FB0BE28CA2E186AFE6EFE018C2 +54C8A55F7D1764558FBA7D02D316C7DC14BBD385D0FE932FF128320A787F1B59 +06336F751E1A1287BC7CA3E7836C1B13536E834484B56D68E6AA4A6D9557D7E7 +7B86906D9AE83708C4275C1DE5745843D3742CF9C1523214FE494EDB27991A04 +0CCE280C058B540DB07B57104F5065203EF22D5BF1E1FBB7CFB8A405F4B1EC0A +B4D62C3272D58F29DF1A0E11BD00B40B91EE914EFFFA849D8761526CB5E6A8FE +39D6C2E4BFC42D2299C0CEEC0917FEF69450595CF3963AAB28F3936B14814C84 +7ECBB3E02617BE47E46D09197280C2C3DE4E5581D4784079DDF75F3EFAB6C7E1 +E2581C87A7AAE944D403035CD72D6F9ABB170420C1BEA525F96E6C32F14C05FB +239B90E8B293431985E94890E5EC33530D3C28F0552B1BC50DD6A323F5AF23B6 +0B642BF66D7B9724E40A88763755C023FEB0D86DF4B2889FD9D9624CD1FC25A5 +6542815B11A0425C3DB850CF3DF10A01F4043506ED8168ED041008361AEF5F7B +FF64C14F876518BB1966739C2EBA7D13DBACDB62097BA9559233FEAB7F24CE43 +04BA24D8C2811BE126C10D95E865854E909AF53DD14288BED1BCE1474F14355C +DDC981D19F334F6022F526BAAB962C21280F2DD576E11C6384C827021A7BC9EC +031EDBB67FF653DDA96D971D3ABD3DAC46658D4E2E82784EE1288845ED640213 +9FC049A189FF16D4B32388D8D8B34308406A48B3512560DBECB7EBFE302BAE32 +B662ECB3688FA84330893FF7E388C728A0D1D4ED4200EE738242F69EA3C05C4C +FFFEAD7982C9D38A073026BEF2FF507963B324DB20BDC3EE0CB8970C4865BADD +FFD548C3B94CF328D0CAA5B09EED935060620AE1EB5F992A20C9C28368D597FB +E87D90431DD8B15F501F0F5728568C4B56AF1EB8488DD00F51458EC9BF913F50 +9B764A8806B7E355FBAD1371170D88F6E16CAF36DE3D60FA0D6EE2A11B99498E +75EACB5D36CD5B661BFDD4566540B5DE776BB533751DB730F22FEEE7952F9994 +384B9467EF83E8F102CDC890DEC2D3FF2CDBF1321F8C95BA20D04032F4597DE3 +5B32A143345838A45E59D1BBF86EF551227C2FEAEA6BBB1E7274AB8501C7876E +C469FDAA6D3276CA2AE24B5FCCBD20F035DA8FDF58494291176427DD7FD3963E +7523657694EFF0753E851633296789C206A13A4025EB4CB824B440124985F55E +1E2D1B05BB91B9FEBD9F817611F6C308A20CE9195985A03811E49FD546EC4B61 +E88333C71137EBD177F737DCBDC8B1CB794D3425C0254ADB1FB20E6FBF9B2389 +DF4DCD721EE927CCD7A50DE9ABA53D5BA0212AB4ADAEA63B32D7F34756D2916E +9393B97883C3A1D47E33C9267CCC878FF4D6F92F868FA0AD2C91A58F504D1355 +03B32C1A06E0AB06958E0756F7269608C355F3B413F0020261A289AC0B60DD7F +A48C214F4D6775CD1A775C16F570E8A94FC39DF8A6067DF699450EE6FAB0838B +65FDDB44856B7F5EF99579477AE35AB0962D5AF70E39A87510D634DFEC3E2B6C +8305DAD403333791562F81283355B9FE2CF797EF92AD7112B3A6B52F6F4DBE94 +0AE39F242579B696D2F34E48E5F3E3338D46D03FE9FC5326FF68C72464407D74 +CFF0577EC2A259B26CD2D949603883F58482E29294A01044ACE5368D50B1BEF8 +6D2A57965BF1D721569383AD4783C0CD165733B17330BEAE252E48FE2E197A2C +75B0385136797B7CE340A1F457A67B39C0E574B4BB32E159E908EA777711516E +2A7AD9A5DFF904345898FCBDC062DDD1F57633D21F6D03546123F3E6146BF70A +FA65D36D4154767C079E785FF681D14E3A9437671A33B84FAC7E5D2947B2BBE9 +52EA37E91C0D16354BA53A5360437877D2C5E8867214D20675FA2543CA81529C +BDD2F516B9DE57C21D42A188514CEF691736A8C0CB1616A12436B301F31639B9 +96CA80870EB2AAD144FC32516F15FF42BC82570725B9C6033276E86495C8AF26 +F3BC53104B11F913A43EB37EB8CE3B2339069FFD6E4877638854D2E606EBC49E +E350B5952B087AD2F74F5C6C0E6CA96A1861CF8A3B53919664C74A79B0D02721 +8059596698F8A958AA268605192952D350F3ACABE5BB75DD2EB48E3BFEDD42E3 +23CED2922651115F861378AAE277481B0BA61B163F0CAC42166880CD795F2A6D +8C9267DA8454BB256D317166E0101F2E5FBE515670616BC8D4707E787EF24E03 +71B42BB08983CFE3EB92E9D5A84EF72604EA7890C0423D70D0B10B2609C65952 +8C02600DA310F9E0A3E7D59BD249FB704321708734C467140A9926FBFEE380DF +4D7BAC80ACD62B824D236167CDD809EB757A060E3826B685B61F4CFDBBB1733E +B99A5EC5E405A7ACD0BE1D8F3EE3352A4461665F8322FCA03C52CD6BF92A6310 +232273C994333C676D6B49E484F0481E129F2A32233D06139FABE693DA9F7BAE +33C6E9E6C7 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 39139632 55387786 1000 7200 7200 (testflow.dvi) +@start /Fa 196[228 59[{}1 498.132 /CMMI5 rf /Fb 194[540 +540 678 7[464 455 505 505 43[540 540 540 540 1[{}11 498.132 +/LASY5 rf /Fc 139[138 3[249 53[138 4[249 53[{ +TeXBase1Encoding ReEncodeFont}4 498.132 /Times-Roman +rf /Fd 196[227 59[{}1 597.758 /CMMI6 rf /Fe 194[576 576 +731 7[518 502 537 537 43[576 576 576 576 1[{}11 597.758 +/LASY6 rf /Ff 139[166 3[299 53[166 3[299 54[{ +TeXBase1Encoding ReEncodeFont}4 597.758 /Times-Roman +rf /Fg 194[623 623 794 7[583 560 580 580 43[623 623 623 +623 1[{}11 697.385 /LASY7 rf /Fh 196[235 59[{}1 797.011 +/CMMI8 rf /Fi 194[659 659 847 7[637 607 612 612 43[659 +659 659 659 1[{}11 797.011 /LASY8 rf /Fj 196[256 59[{}1 +896.638 /CMMI9 rf /Fk 194[717 717 922 7[713 676 666 666 +43[717 717 717 717 1[{}11 896.638 /LASY9 rf /Fl 139[249 +3[448 53[249 448 57[{TeXBase1Encoding ReEncodeFont}4 +896.638 /Times-Roman rf /Fm 194[775 775 996 7[789 744 +720 720 43[775 775 775 775 1[{}11 996.264 /LASY10 rf +/Fn 196[318 59[{}1 996.264 /CMMIB10 rf /Fo 194[891 891 +1146 7[805 778 827 827 43[891 891 891 891 1[{}11 996.264 +/LASYB10 rf /Fp 141[299 78[3587 3587 3587 3587 5[2790 +2790 2790 24[{}8 996.264 /LCIRCLEW10 rf /Fq 192[996 8[996 +8[996 17[996 27[{}4 996.264 /LINEW10 rf /Fr 192[996 8[996 +8[996 17[996 27[{}4 996.264 /LINE10 rf /Fs 141[299 78[3587 +3587 3587 3587 4[2790 2790 1[2790 24[{}8 996.264 /LCIRCLE10 +rf /Ft 152[423 423 102[{}2 797.011 /CMSY8 rf /Fu 139[265 +4[399 9[354 22[575 19[265 58[{TeXBase1Encoding ReEncodeFont}5 +797.011 /Times-Bold rf /Fv 107[354 354 25[399 2[399 399 +222 310 265 399 399 399 399 620 222 2[222 399 399 265 +354 399 354 399 354 12[487 3[443 21[222 399 399 399 3[399 +399 399 399 1[199 265 199 44[{TeXBase1Encoding ReEncodeFont}36 +797.011 /Times-Roman rf /Fw 133[670 122[{TeXBase1Encoding ReEncodeFont} +1 1721.54 /Times-Italic rf /Fx 255[775{}1 996.264 /CMSY10 +rf /Fy 255[623{}1 697.385 /CMSY7 rf /Fz 150[282 7[432 +37[237 59[{}3 697.385 /CMMI7 rf /FA 194[612 5[397 3[397 +397 397 397 4[612 43[{}7 697.385 /CMR7 rf /FB 175[1052 +46[789 789 10[526 526 20[{}5 996.264 /CMEX10 rf /FC 194[775 +5[498 498 1[498 1[498 498 498 48[{}7 996.264 /CMR10 rf +/FD 128[277 29[527 23[438 13[277 26[649 18[516 2[770 +610 8[613{}9 996.264 /CMMI10 rf /FE 138[554 332 388 442 +1[554 498 554 830 277 2[277 554 498 1[442 554 442 554 +498 12[665 554 719 1[609 775 719 940 665 775 4[609 1[719 +719 22[249 44[{TeXBase1Encoding ReEncodeFont}30 996.264 +/Times-Bold rf /FF 139[332 442 3[554 609 1[332 2[332 +609 3[609 1[609 498 12[665 3[609 32[295 249 46[{ +TeXBase1Encoding ReEncodeFont}14 996.264 /Palatino-Bold +rf /FG 136[598 2[598 598 598 1[598 598 2[598 5[598 598 +598 598 1[598 44[598 5[598 46[{TeXBase1Encoding ReEncodeFont}14 +996.264 /Courier rf /FH 104[996 2[442 442 25[498 498 +719 498 498 277 388 332 1[498 498 498 775 277 498 1[277 +498 498 332 442 498 442 498 442 8[719 3[609 554 665 4[886 +609 2[332 1[719 554 609 719 665 8[277 4[498 498 1[498 +498 498 277 249 1[249 2[332 332 36[554 554 2[{ +TeXBase1Encoding ReEncodeFont}51 996.264 /Times-Roman +rf /FI 171[797 665 2[730 1[863 1129 797 3[930 1[730 1[863 +2[863 65[{TeXBase1Encoding ReEncodeFont}10 1195.52 /Times-Bold +rf /FJ 166[691 691 2[691 638 532 691 1[584 744 691 903 +638 2[372 744 744 1[638 691 691 1[691 65[{TeXBase1Encoding ReEncodeFont} +18 956.413 /Times-Bold rf /FK 135[478 478 2[478 478 478 +1[478 478 1[478 478 2[478 478 478 478 478 1[478 1[478 +4[478 11[478 478 7[478 12[478 10[478 478 46[{ +TeXBase1Encoding ReEncodeFont}23 797.011 /Courier rf +/FL 136[863 1[598 332 465 398 1[598 598 598 930 332 2[332 +598 598 398 531 598 2[531 10[863 2[665 1[863 10[665 2[797 +797 863 6[332 5[598 2[598 598 1[299 42[665 3[{ +TeXBase1Encoding ReEncodeFont}30 1195.52 /Times-Roman +rf /FM 190[1492 65[{TeXBase1Encoding ReEncodeFont}1 2066.25 +/Times-Roman rf /FN 139[689 964 825 2[1239 1239 4[689 +1[1239 825 1101 12[1790 3[1514 1378 2[1378 3[1514 5[1378 +1514 1790 2[1790 17[689 47[{TeXBase1Encoding ReEncodeFont}19 +2478.71 /Times-Roman rf /FO 139[194 3[349 46[504 6[194 +349 349 349 349 349 349 349 349 349 349 48[{ +TeXBase1Encoding ReEncodeFont}14 697.385 /Times-Roman +rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 7200dpi +TeXDict begin +%%PaperSize: A4 + end +%%EndSetup +%%Page: 1 1 +TeXDict begin 1 0 bop -40 0 45208 40 v -40 69789 40 69789 +v 45128 69789 V -40 69829 45208 40 v -7200 31425 7200 +40 v -1437 31972 40 1134 v -2855 31972 V -4272 31972 +V -5689 31972 V -7107 31972 V -303 31688 40 567 v -587 +31688 V -870 31688 V -1154 31688 V -1437 31688 V -1721 +31688 V -2004 31688 V -2288 31688 V -2571 31688 V -2855 +31688 V -3138 31688 V -3421 31688 V -3705 31688 V -3988 +31688 V -4272 31688 V -4555 31688 V -4839 31688 V -5122 +31688 V -5406 31688 V -5689 31688 V -5973 31688 V -6256 +31688 V -6540 31688 V -6823 31688 V -7107 31688 V -1592 +30787 a FO(5)-1940 b(10)-2116 b(15)h(20)p -7200 38404 +7200 40 v -740 39104 40 1440 v -1460 39104 V -2180 39104 +V -2900 39104 V -3620 39104 V -4340 39104 V -5060 39104 +V -5780 39104 V -6500 39104 V -7220 39104 V -380 38744 +40 721 v -1100 38744 V -1820 38744 V -2540 38744 V -3260 +38744 V -3980 38744 V -4700 38744 V -5420 38744 V -6140 +38744 V -6860 38744 V -894 37542 a(1)-1069 b(2)-2334 +37537 y(3)-3055 37542 y(4)-3775 37537 y(5)g(6)-5215 37534 +y(7)-5935 37537 y(8)-6655 37534 y(9)p 45128 31425 7200 +40 v 45391 31688 40 567 v 45675 31688 V 45958 31688 V +46241 31688 V 46525 31688 V 46808 31688 V 47092 31688 +V 47375 31688 V 47659 31688 V 47942 31688 V 48226 31688 +V 48509 31688 V 48793 31688 V 49076 31688 V 49360 31688 +V 49643 31688 V 49927 31688 V 50210 31688 V 50493 31688 +V 50777 31688 V 51060 31688 V 51344 31688 V 51627 31688 +V 51911 31688 V 52194 31688 V 46525 31972 40 1134 v 47942 +31972 V 49360 31972 V 50777 31972 V 52194 31972 V 46371 +30787 a(5)894 b(10)719 b(15)g(20)p 45128 38404 7200 40 +v 45828 39104 40 1440 v 46548 39104 V 47268 39104 V 47988 +39104 V 48708 39104 V 49428 39104 V 50148 39104 V 50868 +39104 V 51588 39104 V 52308 39104 V 45468 38744 40 721 +v 46188 38744 V 46908 38744 V 47628 38744 V 48348 38744 +V 49068 38744 V 49788 38744 V 50508 38744 V 51228 38744 +V 51948 38744 V 45673 37542 a(1)371 b(2)47113 37537 y(3)47833 +37542 y(4)48553 37537 y(5)g(6)49994 37534 y(7)50714 37537 +y(8)51434 37534 y(9)p 20287 0 40 7200 v 19740 -1397 1134 +40 v 19740 -2815 V 19740 -4232 V 19740 -5649 V 19740 +-7067 V 20024 -264 567 40 v 20024 -547 V 20024 -830 V +20024 -1114 V 20024 -1397 V 20024 -1681 V 20024 -1964 +V 20024 -2248 V 20024 -2531 V 20024 -2815 V 20024 -3098 +V 20024 -3382 V 20024 -3665 V 20024 -3949 V 20024 -4232 +V 20024 -4515 V 20024 -4799 V 20024 -5082 V 20024 -5366 +V 20024 -5649 V 20024 -5933 V 20024 -6216 V 20024 -6500 +V 20024 -6783 V 20024 -7067 V 19033 -1184 a(5)18859 -2602 +y(10)18859 -4019 y(15)18859 -5436 y(20)p 24800 0 40 7200 +v 24100 -700 1440 40 v 24100 -1420 V 24100 -2140 V 24100 +-2860 V 24100 -3580 V 24100 -4300 V 24100 -5020 V 24100 +-5740 V 24100 -6460 V 24100 -7181 V 24460 -340 721 40 +v 24460 -1060 V 24460 -1780 V 24460 -2500 V 24460 -3220 +V 24460 -3940 V 24460 -4660 V 24460 -5380 V 24460 -6100 +V 24460 -6820 V 23566 -482 a(1)23566 -1202 y(2)23566 +-1927 y(3)23566 -2642 y(4)23566 -3367 y(5)23566 -4087 +y(6)23566 -4810 y(7)23566 -5527 y(8)23566 -6250 y(9)p +20287 76989 40 7200 v 19740 71226 1134 40 v 19740 72644 +V 19740 74061 V 19740 75478 V 19740 76896 V 20024 70092 +567 40 v 20024 70376 V 20024 70659 V 20024 70943 V 20024 +71226 V 20024 71510 V 20024 71793 V 20024 72077 V 20024 +72360 V 20024 72644 V 20024 72927 V 20024 73210 V 20024 +73494 V 20024 73777 V 20024 74061 V 20024 74344 V 20024 +74628 V 20024 74911 V 20024 75195 V 20024 75478 V 20024 +75762 V 20024 76045 V 20024 76329 V 20024 76612 V 20024 +76895 V 19033 71439 a(5)18859 72857 y(10)18859 74274 +y(15)18859 75691 y(20)p 24800 76989 40 7200 v 24100 70529 +1440 40 v 24100 71249 V 24100 71969 V 24100 72689 V 24100 +73409 V 24100 74129 V 24100 74849 V 24100 75569 V 24100 +76289 V 24100 77009 V 24460 70169 721 40 v 24460 70889 +V 24460 71609 V 24460 72329 V 24460 73049 V 24460 73769 +V 24460 74489 V 24460 75209 V 24460 75929 V 24460 76649 +V 23566 70747 a(1)23566 71467 y(2)23566 72182 y(3)23566 +72907 y(4)23566 73622 y(5)23566 74342 y(6)23566 75060 +y(7)23566 75782 y(8)23566 76499 y(9)5718 2986 y FN(A)620 +b(T)-173 b(est)619 b(for)i(L)16974 2710 y FM(A)18094 +2986 y FN(T)19195 3543 y(E)20400 2986 y(X)e(PS/PDF)h(Printing)14684 +5355 y FL(V)-133 b(ersion)300 b(1.1)1738 b(Build)299 +b(Code:)371 b(0004)9090 7447 y(See)299 b(the)f(test\003o)-30 +b(w)300 b(home)e(page)g(for)h(the)f(latest)i(ne)-30 b(ws)299 +b(and)f(F)-88 b(A)-66 b(Q:)12761 8643 y FK +(http://www.michaelshell.org/tex/testflow/)20757 11631 +y FI(N)60 b FJ(O)22 b(T)60 b(E)g(S)4500 13425 y FH(Document)250 +b(paper)g(type)g(selected)g(under)f(L)19551 13225 y FO(A)19905 +13425 y FH(T)20348 13649 y(E)20832 13425 y(X:)309 b FG(a4paper)4500 +14620 y FH(Depends)250 b(only)f(on)h(the)f(base)h(article.cls)f(\227)g +(no)h(other)f(e)-15 b(xternal)250 b(packages)h(are)e(loaded.)4500 +15816 y(The)g(main)h(te)-15 b(xt)249 b(font)g(is)g(T)-35 +b(imes)249 b(Roman,)g(the)h(math)f(font)g(is)g(Computer)g(Modern.)4500 +17011 y(Imperial)g(\(0.1in\))g(and)h(metric)f(\(mm\))g(rulers)g(are)g +(pro)-15 b(vided)250 b(to)f(measure)h(centering.)4500 +18207 y(The)f(frame)h(on)f(this)g(page)h(should)f(be)g(centered)i(on)e +(the)g(paper)h(and)g(1in)f(\(25.4mm\))g(from)g(the)h(edges.)4500 +19402 y(T)-80 b(o)249 b(maintain)h(accurate)h(dimensions,)e(do)g(not)g +(scale)h(page)g(when)g(printing.)4500 20598 y(\(i.e.,)f(deselect)h(an) +-15 b(y)250 b(\223\002t)f(to)g(page\224)i(or)e(\223shrink/e)-15 +b(xpand)250 b(page\224)g(options.\))4500 21793 y(F)-15 +b(or)249 b(complete)h(usage)g(information,)f(read)h(the)f +FG(testflow)p 26013 21793 299 40 v 357 w(doc.pdf)e FH(\002le.)13984 +24184 y FI(P)-19 b FJ(A)60 b(L)g(L)g(A)g(D)g(I)g(O)352 +b FI(F)60 b FJ(O)g(N)g(T)356 b FI(H)60 b FJ(I)g(N)g(T)g(I)g(N)g(G)353 +b FI(T)60 b FJ(E)g(S)g(T)15098 25978 y FF(This)249 b(is)g(in)f(bold)h +(Palatino/Palladio.)18201 28369 y FI(L)60 b FJ(I)g(G)g(A)-31 +b(T)60 b(U)g(R)g(E)352 b FI(T)60 b FJ(E)g(S)g(T)4500 +30162 y FE(Ligatur)-18 b(es)2291 b FH(\227)748 b(The)249 +b(of)-25 b(\002ce)249 b(w)-10 b(as)250 b(af)-25 b(fected)250 +b(by)f(the)h(\002)-25 b(v)-15 b(e)249 b(\003a)-15 b(wed)250 +b(muf)-25 b(\003ers.)4500 31357 y FE(No)249 b(Ligatur)-18 +b(es)825 b FH(\227)748 b(The)249 b(office)g(w)-10 b(as)249 +b(affected)h(by)g(the)f(fi)-25 b(v)-15 b(e)250 b(fla)-15 +b(wed)250 b(mufflers.)19054 33748 y FI(M)60 b FJ(A)-31 +b(T)60 b(H)356 b FI(T)60 b FJ(E)g(S)g(T)g(S)15116 35542 +y FE(Lar)-10 b(ge)250 b(Delimiter)g(and)f(Operator)h(T)-92 +b(est)14895 38584 y FD(I)354 b FC(=)16739 37179 y FB(\024)17763 +37976 y FC(1)996 b(0)17763 39172 y(0)g(1)20254 37179 +y FB(\025)21942 38584 y FH(and)24377 36880 y FB( )25778 +37637 y FA(2)25451 37837 y FB(P)25331 39460 y Fz(i)p +FA(=0)26788 38584 y FC(2)27286 38222 y Fz(i)27895 38584 +y FC(=)276 b(7)29444 36880 y FB(!)19150 41910 y FE(Minus)248 +b(Sign)h(T)-92 b(est)13485 44102 y FH(If)249 b FD(a)276 +b FC(=)h(4)p FH(,)249 b(then:)310 b FC(2)20049 43741 +y Fy(\000)p Fz(a)p FA(+7)22383 44102 y Fx(\000)222 b +FC(2)23878 43741 y Fz(a)p Fy(\000)p FA(3)25656 44102 +y FC(=)277 b(2)27206 43741 y FA(3)27874 44102 y Fx(\000)222 +b FC(2)29369 43741 y FA(1)30092 44102 y FC(=)277 b(6)10170 +46413 y FE(Pr)-18 b(oblem)250 b(Character)-92 b(,)251 +b(T)-18 b(imes)248 b(Roman)i(and)f(F)-25 b(ont)248 b(K)-25 +b(er)-15 b(ning)250 b(T)-92 b(ests)15087 48207 y FH(Math)250 +b(italic)f(glyphs:)309 b FD(\000)28 b(;)414 b(\011)54 +b(;)415 b(\012)50 b(;)415 b(\015)55 b(;)415 b( )36 b(;)414 +b(\177)7294 49701 y FH(Lar)-18 b(ge)249 b(T)-35 b(imes)249 +b(Roman)g(italic:)309 b Fw(z)1993 b FH(GS)249 b(k)-10 +b(erning)250 b(test:)308 b Fv(The)199 b(\223Problematic\224)e(little)g +(quotes.)4500 51196 y Fu(Note:)248 b Fv(The)198 b(math)h(italic)e +(glyphs)g(are)i(in)f(the)h(control)e(character)h(positions)e(0,)j(9,)g +(10,)g(13,)f(32)h(and)f(127.)4500 52391 y(i.e.,)h FK(\\Gamma)p +Fv(,)i FK(\\Psi)p Fv(,)g FK(\\Omega)p Fv(,)f FK(\\gamma)p +Fv(,)h FK(\\psi)p Fv(,)f(and)e(the)h FK(\\t)p Ft(f)p +FK(xx)p Ft(g)i Fv(tie-after)d(accent,)g(respecti)-20 +b(v)-12 b(ely)-52 b(.)13730 54782 y FI(P)60 b FJ(I)g(C)g(T)g(U)g(R)g(E) +352 b(A)60 b(N)g(D)355 b FI(L)60 b FJ(A)g(S)g(Y)354 b +FI(F)60 b FJ(O)g(N)g(T)g(S)355 b FI(T)60 b FJ(E)g(S)g(T)p +5536 56514 40 40 v 5562 56510 V 5587 56505 V 5613 56501 +V 5638 56496 V 5664 56492 V 5689 56487 V 5715 56483 V +5740 56478 V 5766 56474 V 5791 56470 V 5817 56465 V 5842 +56461 V 5868 56457 V 5893 56452 V 5919 56448 V 5944 56444 +V 5970 56440 V 5995 56435 V 6021 56431 V 6046 56427 V +6072 56423 V 6097 56419 V 6123 56415 V 6148 56411 V 6174 +56406 V 6199 56402 V 6225 56398 V 6250 56394 V 6276 56390 +V 6301 56386 V 6327 56382 V 6352 56378 V 6378 56374 V +6403 56370 V 6429 56367 V 6454 56363 V 6480 56359 V 6505 +56355 V 6531 56351 V 6556 56347 V 6582 56344 V 6607 56340 +V 6633 56336 V 6659 56332 V 6684 56328 V 6710 56325 V +6735 56321 V 6761 56317 V 6786 56314 V 6812 56310 V 6837 +56306 V 6863 56303 V 6888 56299 V 6914 56296 V 6939 56292 +V 6965 56289 V 6990 56285 V 7016 56282 V 7041 56278 V +7067 56275 V 7092 56271 V 7118 56268 V 7143 56264 V 7169 +56261 V 7194 56258 V 7220 56254 V 7245 56251 V 7271 56248 +V 7296 56244 V 7322 56241 V 7347 56238 V 7373 56235 V +7398 56231 V 7424 56228 V 7449 56225 V 7475 56222 V 7500 +56219 V 7526 56216 V 7551 56212 V 7577 56209 V 7602 56206 +V 7628 56203 V 7653 56200 V 7679 56197 V 7704 56194 V +7730 56191 V 7756 56188 V 7781 56185 V 7807 56182 V 7832 +56180 V 7858 56177 V 7883 56174 V 7909 56171 V 7934 56168 +V 7960 56165 V 7985 56162 V 8011 56160 V 8036 56157 V +8062 56154 V 8087 56151 V 8113 56149 V 8138 56146 V 8164 +56143 V 8189 56141 V 8215 56138 V 8240 56135 V 8266 56133 +V 8291 56130 V 8317 56128 V 8342 56125 V 8368 56123 V +8393 56120 V 8419 56118 V 8444 56115 V 8470 56113 V 8495 +56110 V 8521 56108 V 8546 56105 V 8572 56103 V 8597 56101 +V 8623 56098 V 8648 56096 V 8674 56094 V 8699 56091 V +8725 56089 V 8750 56087 V 8776 56085 V 8801 56082 V 8827 +56080 V 8853 56078 V 8878 56076 V 8904 56074 V 8929 56071 +V 8955 56069 V 8980 56067 V 9006 56065 V 9031 56063 V +9057 56061 V 9082 56059 V 9108 56057 V 9133 56055 V 9159 +56053 V 9184 56051 V 9210 56049 V 9235 56047 V 9261 56045 +V 9286 56044 V 9312 56042 V 9337 56040 V 9363 56038 V +9388 56036 V 9414 56034 V 9439 56033 V 9465 56031 V 9490 +56029 V 9516 56028 V 9541 56026 V 9567 56024 V 9592 56023 +V 9618 56021 V 9643 56019 V 9669 56017 V 9694 56016 V +9720 56014 V 9745 56013 V 9771 56011 V 9796 56010 V 9822 +56008 V 9847 56007 V 9873 56005 V 9898 56004 V 9924 56002 +V 9950 56001 V 9975 56000 V 10001 55998 V 10026 55997 +V 10052 55996 V 10077 55994 V 10103 55993 V 10128 55992 +V 10154 55991 V 10179 55989 V 10205 55988 V 10230 55987 +V 10256 55986 V 10281 55985 V 10307 55983 V 10332 55982 +V 10358 55981 V 10383 55980 V 10409 55979 V 10434 55978 +V 10460 55977 V 10485 55976 V 10511 55975 V 10536 55974 +V 10562 55973 V 10587 55972 V 10613 55971 V 10638 55970 +V 10664 55969 V 10689 55968 V 10715 55967 V 10740 55966 +V 10766 55966 V 10791 55965 V 10817 55964 V 10842 55963 +V 10868 55963 V 10893 55962 V 10919 55961 V 10944 55960 +V 10970 55960 V 10995 55959 V 11021 55959 V 11047 55958 +V 11072 55957 V 11098 55957 V 11123 55956 V 11149 55955 +V 11174 55955 V 11200 55954 V 11225 55954 V 11251 55953 +V 11276 55953 V 11302 55952 V 11327 55952 V 11353 55952 +V 11378 55951 V 11404 55951 V 11429 55951 V 11455 55950 +V 11480 55950 V 11506 55950 V 11531 55949 V 11557 55949 +V 11582 55949 V 11608 55949 V 11633 55948 V 11659 55948 +V 11684 55948 V 11710 55948 V 11735 55948 V 11761 55948 +V 11786 55948 V 11812 55948 V 11837 55948 V 11863 55948 +V 11888 55947 V 11914 55947 V 11939 55947 V 11965 55947 +V 11990 55947 V 12016 55947 V 12041 55947 V 12067 55948 +V 12092 55948 V 12118 55948 V 12144 55948 V 12169 55948 +V 12195 55948 V 12220 55949 V 12246 55949 V 12271 55949 +V 12297 55949 V 12322 55950 V 12348 55950 V 12373 55950 +V 12399 55951 V 12424 55951 V 12450 55951 V 12475 55952 +V 12501 55952 V 12526 55953 V 12552 55953 V 12577 55954 +V 12603 55954 V 12628 55954 V 12654 55955 V 12679 55955 +V 12705 55956 V 12730 55956 V 12756 55957 V 12781 55958 +V 12807 55958 V 12832 55959 V 12858 55960 V 12883 55960 +V 12909 55961 V 12934 55962 V 12960 55963 V 12985 55963 +V 13011 55964 V 13036 55965 V 13062 55966 V 13087 55967 +V 13113 55967 V 13138 55968 V 13164 55969 V 13189 55970 +V 13215 55971 V 13241 55972 V 13266 55973 V 13292 55974 +V 13317 55975 V 13343 55976 V 13368 55977 V 13394 55978 +V 13419 55979 V 13445 55980 V 13470 55981 V 13496 55982 +V 13521 55983 V 13547 55984 V 13572 55986 V 13598 55987 +V 13623 55988 V 13649 55989 V 13674 55990 V 13700 55992 +V 13725 55993 V 13751 55994 V 13776 55996 V 13802 55997 +V 13827 55998 V 13853 56000 V 13878 56001 V 13904 56003 +V 13929 56004 V 13955 56005 V 13980 56007 V 14006 56008 +V 14031 56010 V 14057 56012 V 14082 56013 V 14108 56015 +V 14133 56016 V 14159 56017 V 14184 56019 V 14210 56021 +V 14235 56022 V 14261 56024 V 14286 56026 V 14312 56027 +V 14338 56029 V 14363 56031 V 14389 56033 V 14414 56034 +V 14440 56036 V 14465 56038 V 14491 56040 V 14516 56042 +V 14542 56044 V 14567 56045 V 14593 56047 V 14618 56049 +V 14644 56051 V 14669 56053 V 14695 56055 V 14720 56057 +V 14746 56059 V 14771 56061 V 14797 56063 V 14822 56065 +V 14848 56067 V 14873 56070 V 14899 56071 V 14924 56073 +V 14950 56076 V 14975 56078 V 15001 56080 V 15026 56082 +V 15052 56084 V 15077 56087 V 15103 56089 V 15128 56091 +V 15154 56094 V 15179 56096 V 15205 56098 V 15230 56101 +V 15256 56103 V 15281 56105 V 15307 56108 V 15332 56110 +V 15358 56113 V 15383 56115 V 15409 56118 V 15435 56120 +V 15460 56123 V 15486 56125 V 15511 56128 V 15537 56130 +V 15562 56133 V 15588 56136 V 15613 56138 V 15639 56140 +V 15664 56143 V 15690 56146 V 15715 56148 V 15741 56151 +V 15766 56154 V 15792 56157 V 15817 56159 V 15843 56162 +V 15868 56165 V 15894 56168 V 15919 56171 V 15945 56174 +V 15970 56177 V 15996 56179 V 16021 56182 V 16047 56185 +V 16072 56188 V 16098 56191 V 16123 56194 V 16149 56197 +V 16174 56200 V 16200 56203 V 16225 56207 V 16251 56210 +V 16276 56213 V 16302 56216 V 16327 56219 V 16353 56222 +V 16378 56225 V 16404 56228 V 16429 56231 V 16455 56234 +V 16480 56238 V 16506 56241 V 16532 56244 V 16557 56248 +V 16583 56251 V 16608 56254 V 16634 56258 V 16659 56261 +V 16685 56264 V 16710 56268 V 16736 56271 V 16761 56275 +V 16787 56278 V 16812 56282 V 16838 56285 V 16863 56289 +V 16889 56292 V 16914 56296 V 16940 56299 V 16965 56303 +V 16991 56307 V 17016 56310 V 17042 56314 V 17067 56318 +V 17093 56321 V 17118 56325 V 17144 56328 V 17169 56332 +V 17195 56336 V 17220 56339 V 17246 56343 V 17271 56347 +V 17297 56351 V 17322 56355 V 17348 56359 V 17373 56363 +V 17399 56366 V 17424 56370 V 17450 56374 V 17475 56378 +V 17501 56382 V 17526 56386 V 17552 56390 V 17577 56394 +V 17603 56398 V 17629 56402 V 17654 56407 V 17680 56411 +V 17705 56415 V 17731 56419 V 17756 56423 V 17782 56427 +V 17807 56432 V 17833 56436 V 17858 56440 V 17884 56444 +V 17909 56448 V 17935 56452 V 17960 56456 V 17986 56461 +V 18011 56465 V 18037 56469 V 18062 56474 V 18088 56478 +V 18113 56483 V 18139 56487 V 18164 56492 V 18190 56496 +V 18215 56501 V 18241 56505 V 18266 56510 V 18292 56514 +V 6953 56798 a Fs(\033)p 6953 58195 40 23 v 8368 56798 +23 40 v 7132 w(\030)p 16875 58195 40 23 v 15477 56798 +23 40 v 6245 56514 a(\033)p 6245 57912 40 23 v 8548 w(\030)p +17583 57912 V 7659 56514 8550 40 v 4686 55947 a(\033)p +4686 60769 40 3447 v 4686 62183 a(\032)p 6100 62183 23 +40 v 6100 55947 V 9808 59045 a(r)7995 60859 y("!)7995 +57272 y(#)o( )p 9788 59045 40 1701 v 9808 58341 a Fr(6)p +9808 59065 1701 40 v 10512 59045 a(-)p 9788 60746 40 +1701 v 9808 60746 a(?)p 8107 59065 1701 40 v 8107 59045 +a(\033)p 5516 61636 80 80 v 5556 61643 V 5596 61650 V +5636 61657 V 5676 61664 V 5715 61671 V 5755 61678 V 5795 +61685 V 5835 61692 V 5875 61698 V 5915 61705 V 5955 61712 +V 5994 61718 V 6034 61725 V 6074 61731 V 6114 61738 V +6154 61744 V 6194 61750 V 6234 61757 V 6273 61763 V 6313 +61769 V 6353 61775 V 6393 61782 V 6433 61788 V 6473 61794 +V 6513 61800 V 6552 61806 V 6592 61812 V 6632 61817 V +6672 61823 V 6712 61829 V 6752 61835 V 6792 61840 V 6832 +61846 V 6871 61852 V 6911 61857 V 6951 61863 V 6991 61868 +V 7031 61874 V 7071 61879 V 7111 61884 V 7150 61890 V +7190 61895 V 7230 61900 V 7270 61905 V 7310 61910 V 7350 +61915 V 7390 61921 V 7429 61926 V 7469 61930 V 7509 61935 +V 7549 61940 V 7589 61945 V 7629 61950 V 7669 61955 V +7708 61959 V 7748 61964 V 7788 61968 V 7828 61973 V 7868 +61977 V 7908 61982 V 7948 61986 V 7988 61991 V 8027 61995 +V 8067 61999 V 8107 62004 V 8147 62008 V 8187 62012 V +8227 62016 V 8267 62020 V 8306 62024 V 8346 62028 V 8386 +62032 V 8426 62036 V 8466 62039 V 8506 62043 V 8546 62047 +V 8585 62051 V 8625 62054 V 8665 62058 V 8705 62062 V +8745 62065 V 8785 62069 V 8825 62072 V 8864 62075 V 8904 +62079 V 8944 62082 V 8984 62085 V 9024 62089 V 9064 62092 +V 9104 62095 V 9144 62098 V 9183 62101 V 9223 62104 V +9263 62107 V 9303 62110 V 9343 62113 V 9383 62115 V 9423 +62118 V 9462 62121 V 9502 62124 V 9542 62126 V 9582 62129 +V 9622 62131 V 9662 62134 V 9702 62136 V 9741 62139 V +9781 62141 V 9821 62143 V 9861 62146 V 9901 62148 V 9941 +62150 V 9981 62152 V 10020 62154 V 10060 62156 V 10100 +62158 V 10140 62161 V 10180 62162 V 10220 62164 V 10260 +62166 V 10300 62168 V 10339 62170 V 10379 62171 V 10419 +62173 V 10459 62175 V 10499 62176 V 10539 62178 V 10579 +62179 V 10618 62181 V 10658 62182 V 10698 62183 V 10738 +62185 V 10778 62186 V 10818 62187 V 10858 62188 V 10897 +62189 V 10937 62190 V 10977 62192 V 11017 62193 V 11057 +62194 V 11097 62194 V 11137 62195 V 11176 62196 V 11216 +62197 V 11256 62198 V 11296 62198 V 11336 62199 V 11376 +62200 V 11416 62200 V 11456 62201 V 11495 62201 V 11535 +62202 V 11575 62202 V 11615 62202 V 11655 62202 V 11695 +62203 V 11735 62203 V 11774 62203 V 11814 62203 V 11854 +62203 V 11894 62203 V 11934 62203 V 11974 62203 V 12014 +62203 V 12053 62203 V 12093 62203 V 12133 62202 V 12173 +62202 V 12213 62202 V 12253 62202 V 12293 62201 V 12332 +62201 V 12372 62200 V 12412 62199 V 12452 62199 V 12492 +62198 V 12532 62198 V 12572 62197 V 12612 62196 V 12651 +62195 V 12691 62194 V 12731 62194 V 12771 62193 V 12811 +62192 V 12851 62191 V 12891 62190 V 12930 62188 V 12970 +62187 V 13010 62186 V 13050 62185 V 13090 62183 V 13130 +62182 V 13170 62181 V 13209 62179 V 13249 62178 V 13289 +62176 V 13329 62175 V 13369 62173 V 13409 62171 V 13449 +62170 V 13488 62168 V 13528 62166 V 13568 62164 V 13608 +62162 V 13648 62161 V 13688 62158 V 13728 62157 V 13768 +62154 V 13807 62152 V 13847 62150 V 13887 62148 V 13927 +62146 V 13967 62143 V 14007 62141 V 14047 62139 V 14086 +62136 V 14126 62134 V 14166 62132 V 14206 62129 V 14246 +62126 V 14286 62124 V 14326 62121 V 14365 62118 V 14405 +62115 V 14445 62113 V 14485 62110 V 14525 62107 V 14565 +62104 V 14605 62101 V 14644 62098 V 14684 62095 V 14724 +62092 V 14764 62089 V 14804 62086 V 14844 62082 V 14884 +62079 V 14924 62076 V 14963 62072 V 15003 62069 V 15043 +62065 V 15083 62062 V 15123 62058 V 15163 62054 V 15203 +62051 V 15242 62047 V 15282 62043 V 15322 62040 V 15362 +62036 V 15402 62032 V 15442 62028 V 15482 62024 V 15521 +62020 V 15561 62016 V 15601 62012 V 15641 62008 V 15681 +62004 V 15721 62000 V 15761 61995 V 15800 61991 V 15840 +61986 V 15880 61982 V 15920 61978 V 15960 61973 V 16000 +61969 V 16040 61964 V 16080 61959 V 16119 61955 V 16159 +61950 V 16199 61945 V 16239 61940 V 16279 61936 V 16319 +61931 V 16359 61925 V 16398 61921 V 16438 61915 V 16478 +61911 V 16518 61905 V 16558 61900 V 16598 61895 V 16638 +61890 V 16677 61885 V 16717 61879 V 16757 61874 V 16797 +61868 V 16837 61863 V 16877 61857 V 16917 61852 V 16956 +61846 V 16996 61840 V 17036 61835 V 17076 61829 V 17116 +61824 V 17156 61818 V 17196 61812 V 17236 61806 V 17275 +61800 V 17315 61794 V 17355 61788 V 17395 61782 V 17435 +61776 V 17475 61770 V 17515 61763 V 17554 61757 V 17594 +61751 V 17634 61744 V 17674 61738 V 17714 61731 V 17754 +61725 V 17794 61718 V 17833 61712 V 17873 61705 V 17913 +61698 V 17953 61692 V 17993 61685 V 18033 61678 V 18073 +61671 V 18112 61665 V 18152 61658 V 18192 61650 V 18232 +61644 V 18272 61636 V 5556 63337 32599 80 v 37158 63297 +a Fq(-)14060 59045 y Fp(r)12227 60879 y("!)12227 57292 +y(#)o( )p 14020 59045 80 1701 v 14060 58341 a Fq(6)p +14060 59085 1701 80 v 14764 59045 a(-)p 14020 60746 80 +1701 v 14060 60746 a(?)p 12359 59085 1701 80 v 12359 +59045 a(\033)p 6933 59918 80 23 v 6933 61353 a Fp(\032)p +8368 61353 23 80 v 16855 59918 80 23 v 7132 w(\031)p +15477 61353 23 80 v 6225 60202 80 23 v 6225 61636 a(\032)p +17563 60202 V 8548 w(\031)p 7659 61636 8550 80 v 19122 +55967 a(\030)p 19122 60769 80 3447 v 19122 62203 a(\031)p +17745 62203 23 80 v 17745 55967 V 20057 56494 a FH(10pt)249 +b(bold:)721 b Fo(0)p Fn(;)191 b Fo(1)p Fn(;)h Fo(2)p +Fn(;)f Fo(3)p Fn(;)g Fo(;)p Fn(;)g Fo(<)p Fn(;)g Fo(=)p +Fn(;)h Fo(\001)p Fn(;)f Fo(\002)p Fn(;)g Fo(\003)p Fn(;)h +Fo(\004)22077 57628 y FH(10pt:)721 b Fm(0)p FD(;)166 +b Fm(1)p FD(;)g Fm(2)p FD(;)g Fm(3)p FD(;)g Fm(;)p FD(;)g +Fm(<)p FD(;)g Fm(=)p FD(;)g Fm(\001)p FD(;)g Fm(\002)p +FD(;)g Fm(\003)p FD(;)g Fm(\004)22730 58620 y Fl(9pt:)722 +b Fk(0)p Fj(;)153 b Fk(1)p Fj(;)g Fk(2)p Fj(;)g Fk(3)p +Fj(;)g Fk(;)p Fj(;)g Fk(<)p Fj(;)h Fk(=)p Fj(;)f Fk(\001)p +Fj(;)g Fk(\002)p Fj(;)h Fk(\003)p Fj(;)f Fk(\004)22885 +59471 y Fv(8pt:)719 b Fi(0)p Fh(;)141 b Fi(1)p Fh(;)g +Fi(2)p Fh(;)g Fi(3)p Fh(;)f Fi(;)p Fh(;)i Fi(<)p Fh(;)f +Fi(=)p Fh(;)g Fi(\001)p Fh(;)g Fi(\002)p Fh(;)g Fi(\003)p +Fh(;)g Fi(\004)23040 60179 y FO(7pt:)720 b Fg(0)p Fz(;)135 +b Fg(1)p Fz(;)h Fg(2)p Fz(;)f Fg(3)p Fz(;)g Fg(;)p Fz(;)h +Fg(<)p Fz(;)g Fg(=)p Fz(;)f Fg(\001)p Fz(;)g Fg(\002)p +Fz(;)h Fg(\003)p Fz(;)f Fg(\004)23196 60817 y Ff(6pt:)720 +b Fe(0)p Fd(;)127 b Fe(1)p Fd(;)g Fe(2)p Fd(;)g Fe(3)p +Fd(;)g Fe(;)p Fd(;)g Fe(<)p Fd(;)f Fe(=)p Fd(;)h Fe(\001)p +Fd(;)g Fe(\002)p Fd(;)g Fe(\003)p Fd(;)g Fe(\004)23351 +61384 y Fc(5pt:)721 b Fb(0)p Fa(;)122 b Fb(1)p Fa(;)h +Fb(2)p Fa(;)g Fb(3)p Fa(;)f Fb(;)p Fa(;)g Fb(<)p Fa(;)g +Fb(=)p Fa(;)h Fb(\001)p Fa(;)f Fb(\002)p Fa(;)g Fb(\003)p +Fa(;)g Fb(\004)p eop end +%%Page: 2 2 +TeXDict begin 2 1 bop -40 0 45208 40 v -40 69789 40 69789 +v 45128 69789 V -40 69829 45208 40 v -7200 31425 7200 +40 v -1437 31972 40 1134 v -2855 31972 V -4272 31972 +V -5689 31972 V -7107 31972 V -303 31688 40 567 v -587 +31688 V -870 31688 V -1154 31688 V -1437 31688 V -1721 +31688 V -2004 31688 V -2288 31688 V -2571 31688 V -2855 +31688 V -3138 31688 V -3421 31688 V -3705 31688 V -3988 +31688 V -4272 31688 V -4555 31688 V -4839 31688 V -5122 +31688 V -5406 31688 V -5689 31688 V -5973 31688 V -6256 +31688 V -6540 31688 V -6823 31688 V -7107 31688 V -1592 +30787 a FO(5)-1940 b(10)-2116 b(15)h(20)p -7200 38404 +7200 40 v -740 39104 40 1440 v -1460 39104 V -2180 39104 +V -2900 39104 V -3620 39104 V -4340 39104 V -5060 39104 +V -5780 39104 V -6500 39104 V -7220 39104 V -380 38744 +40 721 v -1100 38744 V -1820 38744 V -2540 38744 V -3260 +38744 V -3980 38744 V -4700 38744 V -5420 38744 V -6140 +38744 V -6860 38744 V -894 37542 a(1)-1069 b(2)-2334 +37537 y(3)-3055 37542 y(4)-3775 37537 y(5)g(6)-5215 37534 +y(7)-5935 37537 y(8)-6655 37534 y(9)p 45128 31425 7200 +40 v 45391 31688 40 567 v 45675 31688 V 45958 31688 V +46241 31688 V 46525 31688 V 46808 31688 V 47092 31688 +V 47375 31688 V 47659 31688 V 47942 31688 V 48226 31688 +V 48509 31688 V 48793 31688 V 49076 31688 V 49360 31688 +V 49643 31688 V 49927 31688 V 50210 31688 V 50493 31688 +V 50777 31688 V 51060 31688 V 51344 31688 V 51627 31688 +V 51911 31688 V 52194 31688 V 46525 31972 40 1134 v 47942 +31972 V 49360 31972 V 50777 31972 V 52194 31972 V 46371 +30787 a(5)894 b(10)719 b(15)g(20)p 45128 38404 7200 40 +v 45828 39104 40 1440 v 46548 39104 V 47268 39104 V 47988 +39104 V 48708 39104 V 49428 39104 V 50148 39104 V 50868 +39104 V 51588 39104 V 52308 39104 V 45468 38744 40 721 +v 46188 38744 V 46908 38744 V 47628 38744 V 48348 38744 +V 49068 38744 V 49788 38744 V 50508 38744 V 51228 38744 +V 51948 38744 V 45673 37542 a(1)371 b(2)47113 37537 y(3)47833 +37542 y(4)48553 37537 y(5)g(6)49994 37534 y(7)50714 37537 +y(8)51434 37534 y(9)p 20287 0 40 7200 v 19740 -1397 1134 +40 v 19740 -2815 V 19740 -4232 V 19740 -5649 V 19740 +-7067 V 20024 -264 567 40 v 20024 -547 V 20024 -830 V +20024 -1114 V 20024 -1397 V 20024 -1681 V 20024 -1964 +V 20024 -2248 V 20024 -2531 V 20024 -2815 V 20024 -3098 +V 20024 -3382 V 20024 -3665 V 20024 -3949 V 20024 -4232 +V 20024 -4515 V 20024 -4799 V 20024 -5082 V 20024 -5366 +V 20024 -5649 V 20024 -5933 V 20024 -6216 V 20024 -6500 +V 20024 -6783 V 20024 -7067 V 19033 -1184 a(5)18859 -2602 +y(10)18859 -4019 y(15)18859 -5436 y(20)p 24800 0 40 7200 +v 24100 -700 1440 40 v 24100 -1420 V 24100 -2140 V 24100 +-2860 V 24100 -3580 V 24100 -4300 V 24100 -5020 V 24100 +-5740 V 24100 -6460 V 24100 -7181 V 24460 -340 721 40 +v 24460 -1060 V 24460 -1780 V 24460 -2500 V 24460 -3220 +V 24460 -3940 V 24460 -4660 V 24460 -5380 V 24460 -6100 +V 24460 -6820 V 23566 -482 a(1)23566 -1202 y(2)23566 +-1927 y(3)23566 -2642 y(4)23566 -3367 y(5)23566 -4087 +y(6)23566 -4810 y(7)23566 -5527 y(8)23566 -6250 y(9)p +20287 76989 40 7200 v 19740 71226 1134 40 v 19740 72644 +V 19740 74061 V 19740 75478 V 19740 76896 V 20024 70092 +567 40 v 20024 70376 V 20024 70659 V 20024 70943 V 20024 +71226 V 20024 71510 V 20024 71793 V 20024 72077 V 20024 +72360 V 20024 72644 V 20024 72927 V 20024 73210 V 20024 +73494 V 20024 73777 V 20024 74061 V 20024 74344 V 20024 +74628 V 20024 74911 V 20024 75195 V 20024 75478 V 20024 +75762 V 20024 76045 V 20024 76329 V 20024 76612 V 20024 +76895 V 19033 71439 a(5)18859 72857 y(10)18859 74274 +y(15)18859 75691 y(20)p 24800 76989 40 7200 v 24100 70529 +1440 40 v 24100 71249 V 24100 71969 V 24100 72689 V 24100 +73409 V 24100 74129 V 24100 74849 V 24100 75569 V 24100 +76289 V 24100 77009 V 24460 70169 721 40 v 24460 70889 +V 24460 71609 V 24460 72329 V 24460 73049 V 24460 73769 +V 24460 74489 V 24460 75209 V 24460 75929 V 24460 76649 +V 23566 70747 a(1)23566 71467 y(2)23566 72182 y(3)23566 +72907 y(4)23566 73622 y(5)23566 74342 y(6)23566 75060 +y(7)23566 75782 y(8)23566 76499 y(9)5718 2986 y FN(A)620 +b(T)-173 b(est)619 b(for)i(L)16974 2710 y FM(A)18094 +2986 y FN(T)19195 3543 y(E)20400 2986 y(X)e(PS/PDF)h(Printing)14684 +5355 y FL(V)-133 b(ersion)300 b(1.1)1738 b(Build)299 +b(Code:)371 b(0004)13838 7746 y FI(D)60 b FJ(U)g(P)g(L)g(E)g(X)354 +b FI(A)60 b FJ(L)g(I)g(G)g(N)g(M)g(E)g(N)g(T)351 b FI(T)60 +b FJ(E)g(S)g(T)355 b FI(S)60 b FJ(I)g(D)g(E)p eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF diff -r 000000000000 -r 8319d82cab07 testflow/testflow_ctl_LTR.pdf Binary file testflow/testflow_ctl_LTR.pdf has changed diff -r 000000000000 -r 8319d82cab07 testflow/testflow_ctl_LTR.ps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testflow/testflow_ctl_LTR.ps Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,3001 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software +%%Title: testflow.dvi +%%Pages: 2 +%%PageOrder: Ascend +%%BoundingBox: 0 0 612 792 +%%DocumentFonts: Times-Roman Courier Times-Bold Palatino-Bold CMMI10 +%%+ CMR10 CMEX10 CMR7 CMMI7 CMSY7 CMSY10 Times-Italic CMSY8 LCIRCLE10 +%%+ LINE10 LINEW10 LCIRCLEW10 LASYB10 CMMIB10 LASY10 LASY9 CMMI9 LASY8 +%%+ CMMI8 LASY7 LASY6 CMMI6 LASY5 CMMI5 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips testflow +%DVIPSParameters: dpi=7200 +%DVIPSSource: TeX output 2007.01.10:0227 +%%BeginProcSet: tex.pro 0 0 +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S +/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy +setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask +restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: alt-rule.pro 0 0 +%! +% Patch by TVZ +% Makes dvips files draw rules with stroke rather than fill. +% Makes narrow rules more predictable at low resolutions +% after distilling to PDF. +% May have unknown consequences for very thick rules. +% Tested only with dvips 5.85(k). +TeXDict begin +/QV { + gsave newpath /ruleY X /ruleX X + Rx Ry gt + { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry } + { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx } + ifelse + setlinewidth 0 setlinecap stroke grestore +} bind def +end + +%%EndProcSet +%%BeginProcSet: 8r.enc 0 0 +% File 8r.enc TeX Base 1 Encoding Revision 2.0 2002-10-30 +% +% @@psencodingfile@{ +% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, +% W. Schmidt, P. Lehman", +% version = "2.0", +% date = "30 October 2002", +% filename = "8r.enc", +% email = "tex-fonts@@tug.org", +% docstring = "This is the encoding vector for Type1 and TrueType +% fonts to be used with TeX. This file is part of the +% PSNFSS bundle, version 9" +% @} +% +% The idea is to have all the characters normally included in Type 1 fonts +% available for typesetting. This is effectively the characters in Adobe +% Standard encoding, ISO Latin 1, Windows ANSI including the euro symbol, +% MacRoman, and some extra characters from Lucida. +% +% Character code assignments were made as follows: +% +% (1) the Windows ANSI characters are almost all in their Windows ANSI +% positions, because some Windows users cannot easily reencode the +% fonts, and it makes no difference on other systems. The only Windows +% ANSI characters not available are those that make no sense for +% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen +% (173). quotesingle and grave are moved just because it's such an +% irritation not having them in TeX positions. +% +% (2) Remaining characters are assigned arbitrarily to the lower part +% of the range, avoiding 0, 10 and 13 in case we meet dumb software. +% +% (3) Y&Y Lucida Bright includes some extra text characters; in the +% hopes that other PostScript fonts, perhaps created for public +% consumption, will include them, they are included starting at 0x12. +% These are /dotlessj /ff /ffi /ffl. +% +% (4) hyphen appears twice for compatibility with both ASCII and Windows. +% +% (5) /Euro was assigned to 128, as in Windows ANSI +% +% (6) Missing characters from MacRoman encoding incorporated as follows: +% +% PostScript MacRoman TeXBase1 +% -------------- -------------- -------------- +% /notequal 173 0x16 +% /infinity 176 0x17 +% /lessequal 178 0x18 +% /greaterequal 179 0x19 +% /partialdiff 182 0x1A +% /summation 183 0x1B +% /product 184 0x1C +% /pi 185 0x1D +% /integral 186 0x81 +% /Omega 189 0x8D +% /radical 195 0x8E +% /approxequal 197 0x8F +% /Delta 198 0x9D +% /lozenge 215 0x9E +% +/TeXBase1Encoding [ +% 0x00 + /.notdef /dotaccent /fi /fl + /fraction /hungarumlaut /Lslash /lslash + /ogonek /ring /.notdef /breve + /minus /.notdef /Zcaron /zcaron +% 0x10 + /caron /dotlessi /dotlessj /ff + /ffi /ffl /notequal /infinity + /lessequal /greaterequal /partialdiff /summation + /product /pi /grave /quotesingle +% 0x20 + /space /exclam /quotedbl /numbersign + /dollar /percent /ampersand /quoteright + /parenleft /parenright /asterisk /plus + /comma /hyphen /period /slash +% 0x30 + /zero /one /two /three + /four /five /six /seven + /eight /nine /colon /semicolon + /less /equal /greater /question +% 0x40 + /at /A /B /C + /D /E /F /G + /H /I /J /K + /L /M /N /O +% 0x50 + /P /Q /R /S + /T /U /V /W + /X /Y /Z /bracketleft + /backslash /bracketright /asciicircum /underscore +% 0x60 + /quoteleft /a /b /c + /d /e /f /g + /h /i /j /k + /l /m /n /o +% 0x70 + /p /q /r /s + /t /u /v /w + /x /y /z /braceleft + /bar /braceright /asciitilde /.notdef +% 0x80 + /Euro /integral /quotesinglbase /florin + /quotedblbase /ellipsis /dagger /daggerdbl + /circumflex /perthousand /Scaron /guilsinglleft + /OE /Omega /radical /approxequal +% 0x90 + /.notdef /.notdef /.notdef /quotedblleft + /quotedblright /bullet /endash /emdash + /tilde /trademark /scaron /guilsinglright + /oe /Delta /lozenge /Ydieresis +% 0xA0 + /.notdef /exclamdown /cent /sterling + /currency /yen /brokenbar /section + /dieresis /copyright /ordfeminine /guillemotleft + /logicalnot /hyphen /registered /macron +% 0xD0 + /degree /plusminus /twosuperior /threesuperior + /acute /mu /paragraph /periodcentered + /cedilla /onesuperior /ordmasculine /guillemotright + /onequarter /onehalf /threequarters /questiondown +% 0xC0 + /Agrave /Aacute /Acircumflex /Atilde + /Adieresis /Aring /AE /Ccedilla + /Egrave /Eacute /Ecircumflex /Edieresis + /Igrave /Iacute /Icircumflex /Idieresis +% 0xD0 + /Eth /Ntilde /Ograve /Oacute + /Ocircumflex /Otilde /Odieresis /multiply + /Oslash /Ugrave /Uacute /Ucircumflex + /Udieresis /Yacute /Thorn /germandbls +% 0xE0 + /agrave /aacute /acircumflex /atilde + /adieresis /aring /ae /ccedilla + /egrave /eacute /ecircumflex /edieresis + /igrave /iacute /icircumflex /idieresis +% 0xF0 + /eth /ntilde /ograve /oacute + /ocircumflex /otilde /odieresis /divide + /oslash /ugrave /uacute /ucircumflex + /udieresis /yacute /thorn /ydieresis +] def + + +%%EndProcSet +%%BeginProcSet: texps.pro 0 0 +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 +ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ +pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get +div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type +/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end +definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup +sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll +mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ +exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} +forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def +end + +%%EndProcSet +%%BeginFont: CMMI5 +%!PS-AdobeFont-1.1: CMMI5 1.100 +%%CreationDate: 1996 Aug 02 08:21:10 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI5) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI5 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 59 /comma put +readonly def +/FontBBox{37 -250 1349 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA06DA87FC7163A5A2A756A598FAB07633 +89DE8BB201D5DB4627484A80A431B6AFDBBBF23D4157D4AFE17E6B1C853DD417 +25F84CD55402AB88AB7EEFDEDBF2C2C731BD25567C53B474CCF739188A930039 +098A197F9C4BE7594D79442B2C8A67447DE44698321145D7689B91EF235EA80E +B600AA8E238064F154284096C4C2554EFE8DDF13AFF8D3CE30E0999375C0FEE6 +F992DEA5FC3897E2CC8B7A90238E61E41622DE80F438DD994C73275CC52249D9 +F6686F87F394FB7BB668138B210BEC9E46415A1B58C990B81E7D7DD301143517 +4C2A259D2A0A1E200F8101469C10D7D537B0D4D39296A9AB3F132DA9A3B459B0 +F850E2B3A03BDCB35AEF82285D19C38F474FB414F8EC971B994D1C7DD753B271 +2B71549DF497C665DF0F266988209D9EB616E4D9BA229FF984E7A886DB01FD21 +48ED2E4859FD6416C2CE52537464EA884C8C9C2D1083E2B83BE4B766474C23B6 +6E8EC5003200AB10514BB44D14CA700416AB6B2683E80862E7D5B49A05526A32 +554BB23AB8B0824BBA198E3825CE82380CC0FECF46651E3E5D77F09465E73164 +20342822F29572BC7F73F2C3BF95ED3BB6FDEADC20C6AC866C4F2C679594D7E8 +8D944704A3C5D771DC39503BECAB89F34D8CDB8FDB91AFE21F3F0260D05E90C5 +73E2C13DFA022C4522E5918EE25038A0498FBB530DA33B0AE238B1C6ED03FC04 +2BFED8236E07820C5BAB411EAE1B31D93A2FA7C374B1725FEC359ABCB88E2C89 +214529A263D795AACB0B95A3AB2F4E08EF350C282CE521716DBB06E5B8291B3F +5D4ACA230FA192F64BC902A4C8842C0F916F92FBD002ADD408BF0401D0284FBB +F05D4C6DB631420747CC902C5E1617E6573612FB26C8378DF41FFB5048D3CF06 +4893DBA48EF4B043D760F60C75712169D16C83EE020C45369E443E853E1809DD +F395B812067D6FDBD26111B34F42C21036AF952D0D767FD17F6959D9FDD46005 +D64FFF54772B50BB9B173AE79702981F58F9F235C591F476A31852174DF0619C +A470359153DC32610E782B204E7945515464DACE9099B81EEECC7EBD4B5126AF +C3FD9DDFB329AF1C95C41FA4A5F6958869509A23BD7210386329771FA46FF926 +0E54AC35106253EE140449425A8670E1F92B178A02A58EB57540F4BD8110E548 +BB584EA6D625C5F5FE0124A98E49915F1A1B95D2125874360EED1C4379FEF3C6 +90E5780C20309F11F2F23FAD635C44BA030B39EFF083A3ECCDD2641DCC67E900 +CFE9B1E3FA03479C9040349B7C63F8F01B3C994320994053DAAB3419B2E6CBA8 +E77DEF65584F1F4A752C94405C2DA24429B01DFFF073D51672CA0A8BF163C25B +C7AFF6B42D0D8F13B854E1B43BF742C0C0BA111246F359A77E20E4C02DAA44C5 +C82B5CD3EC0614AC95E8858FD216EC2E7056CA6DDCB26B1FBC1311F042069F8E +6090C3DBB16F20899824250E71C0624499D399BD11D98456DC1D01C2C3A7D67E +52B0EA1C05B3C84053063A00D7B13FA0693A2972FE41FC68189CB93D3A0153B3 +DE44D4A5793FCF48DFE13A598A7F835C0813750113F198B82D1B11F4BEAA2DFD +9D350FFC391D202ABE1E79B3F9 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LASY5 +%!PS-AdobeFont-1.1: LASY5 1.001 +%%CreationDate: 1992 Oct 23 20:19:18 +%%RevisionDate: 2001 Jun 05 20:19:18 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LASY5) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /LASY5 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 1 /a1 put +dup 2 /a2 put +dup 3 /a3 put +dup 4 /a4 put +dup 48 /a48 put +dup 49 /a49 put +dup 50 /a50 put +dup 51 /a51 put +dup 59 /a59 put +dup 60 /a60 put +dup 61 /a61 put +readonly def +/FontBBox{-27 -229 1292 719}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C +705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4 +B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458 +99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646 +87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385 +B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A390AA21B4410ADD58DACB +2AD42A79FFCEBF5BCCCE8A581D96D6AAD643D895F9774CAC00A6A8D92AEC08A4 +A02A0CCF0E3F08DD617A811251C16AA014A03299D338CE083FB15024B9310FF8 +3C47BDEB06495DDF0D030131A8A7B7822CBA94F7031AC034193DA32E0B879A08 +F7B293CE62094800D1697C3071AA70D84150146305AE27E4BE4F9685C4DADBA4 +C78C9F00B51306E2207591D26BE99860489DD7F7038A297BEBA7E766252EE188 +13BF110548F1192AFA92AF38439C96DBA9D81C3E790B13C21BE3A9830FED8E08 +A2AB325A34D0C54462D913082EF42CFA3A8925BEB4093453B70CD5AB250DC2B0 +442FC3B945786FE0F658560D1C7CD5411D0CBA01A7B265EB0E61FF1D2D8316AC +BB4E7A5865AB5551C237C008620BF29979E675B59017F33D91D862D64AC41F63 +78A4CAA4330B0C158FB1C175E3509274B8DF6BB57E87EDD9F8F048376A86365F +AB5AE3175A715741E8436F8C0E7C8A52886CF625A5DB1F04D63EB95C153DE099 +E3FDDF1E39ACD864EECD402C94DD619B4C18C4AB936CE584D9C00ACFD83CAEB7 +C7759365391141034FE4A44C1D8BFFAA97BFD658372B3737421D0E8CCE68CE92 +9E55AF96F0ADB1E2D41B3BDA3355AD51B409E0AC3E1B3203574B147976FBB04E +6A3577A67D69CCAF94A1993A3B8E59FDCFB206827290F095DA482A4E8A524B59 +FBC30621718C5B349A0FE15B70F69B13BBA1A525E4E636DDD7491AF8341EFC7F +1A3C3D3ADD5C7B2ABF2C1DD46557079A31906A4EC977243F6765A90D75650BE4 +A6EFA892E36DC414732AA6A35860D0B09CB66E52EE169C4DAE28C84120465F38 +3675032879D11AB7DF0A41574D6E03259574AEDCD9F1BDCAE2A7F31507CFAB79 +4147A907B32D602D74E4A90B31E59A7341A99B7D5778E99D873C284ED52D7BA9 +B10A1C4EB2CAD13870585C98D4A19533C91511ACC9C350A0D4F1210A1BD6161D +CDE73158FE0DBBA9F278FA05C8441C97645FB55B63210DFC4C0A9AE41D7E8596 +B2B83512B3E02E59285FEBCCABCD33799C0A5549412E6D661FDD8527F527869C +03B405A66C1D6169F0AEACDAD5689BF92E2BC87DA6BE16BB923F6B6C03C40867 +15E5F7A6BE5A28CE5823DC7A2805DCF47E58ABACF4335F40A788DFF5377F57DC +CD7B122391C3CFB418B5B24881090AA3C74F04BDE083B6B104CEAF13CBE01BC2 +CA7E56FE3ECAD50FB69BDE76F29047E14660185F75C75EBE047DF8CEB1EE9C7E +9CCCE9BC899D15AE2FE656382B01ED0702B6AD2BDEBEEFB62E09EE21658597BE +61E80153A3E48A17AC512DF9142689A3C340976600A3337DCAE4EB9E878F54B8 +02FC8B352D2967A8D14289C751420A82A3C3643706B4DD5EE937A60B421646F0 +4C16A80A3EC6F0C0A3773613DA269A113EF1C6273DBE00D5CDCA9ADBF8D23BE1 +8E37110F48EEB2FDE277B26EE0D9FBE2ADA80879A235A15EA44DA444CA3DA312 +822B584D97107AB8E68C365678428513A5F81668D166908801E1D68E2314EA6C +96AF9F161BBE8C53E03F2005F86B8E698CF3F6CA7AC0E06187D6C450BD635CEA +5FB0A6AD71F6E2BC94847AAA6954D868E144E39423D51ECDCB9D12D68CD7F8D1 +4D1FA63DE0AADC8F6ECBA7F62427DB63FF1D957E20DF2657A631F47EED085AF8 +FE2A0CC8E1C45DA0C90F2A7A1C2276162816EE53AB70509572C3A364B357B2CC +CA8DDB9AED0DAF7454E574BBB6BD5CF096D27A558041F249D08B8F3D193037F1 +D9331EA07ACD00C451D190BFD03116BF604096EA8BC078422F688B12C6B0677B +0E338C5ED442949F4BD96CABC55D7607AF05119520BF06C02CBE6FDC28AF4C0F +0F9A24B8DC987E3C59AFC8839EEC4216C95E06E2C1D82857C2657EFCC02D821E +4AB5681B6254C24C4FBD31492D321D696C9198A6AEEABC6BF2C9F840D0EC0972 +3FF90FC8C523673D8C495C04B1EAC196B08125E38099B21BA9AB7069629AF56B +55256D92FD6230CFCFA765E7C96C563473FB55EFDE3BC4DB2600A8E117CD2CC1 +EB4F554FC85A6CC5F5CDCF8B791BFD57F3CE49AD103B123837F27A0C17E4C93C +9A8DC69149C0355D6C39DAC2DD81DB6C45AC4E0A2CFD0CA03C7D92EB325D9B36 +059B94A7BBAC18709CCB0AF1709F93E503439AF71D366AC175E2E546E67C79C0 +8C07C5360D85A57864D36FB1F5901450F08E59B7FDB2BE80E126BBCF0AABEE0F +E025C2A63B91018157F189D143EEFB7298233EB521E22ACD332ECF47F884E13F +446E292786E0240490B0E20C2173252F448808C425EAE6CFD69F5D684333044E +200138C459498DE37A5E132EDC39FF39EE4132278045CCE81F933CD9C12B037C +3F593CEF7D7985075503347B08BD3438656FD14758358BBF35658CA1388AD360 +00F75C631E7B38A460FFC64ED1F456949AB9C8805D280DDDCC0EAEC0EA8ED5A1 +19CAF622DD05ECAB3AA5C6385897257333C0231A38A5CD35A1EF7369614E5C0B +8D3B4C71EA9940D3450C45E8F4D328414C054F20FC98BF20CF99C202601F974C +30212E7F23F5F0D4EE870BEEC855B0B8BD58D2ED18B4AADF1D5E06B78D5F203E +90242571A3921E24542F8E0E487CD857390656B354E9EB2252A304467DB6F94F +EE1CAFC411C448754738751C2E3C98114549B64E817AB37CD04847E78ED21DF9 +294E20D298FD1A653172C57A33602A05819BEEEA5E3AC213C3DB962E794892D1 +25B27B0F5E79276A361B4E32F729A303E8D30D8376CB496B5D9A4A1606A3975A +356D09711AF5A98FAA4C8524D5ED62A32B590B9F604B6EAB777C94E9C16ED18F +908F3B5ED99F8BAFFD4AE02367F0EFCB86983CCB62C698168BC8F9AE5A4A15F9 +071BE99B1667210365FF2789A04199022CA08DBB9D7DC39CB6E99D41F460CEAE +C5BE45EAD3F80922732197CD622680D7B4103EBBB4BDB0DB2A831C5D62016D23 +49A8A694709733A0A6D73CC6633E72F5E57A0F499D93F6521C31A55DE13C1301 +0622B1509C6FB6D123E6BCC083AA1F070D40B24C0E1BF96B8F2DEC1265A7D73C +8461C573A424E83C809C2CE297EBAE4CF82376126E6CE96EE05437A2FFF38F2E +D37EE9E86DB9 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI6 +%!PS-AdobeFont-1.1: CMMI6 1.100 +%%CreationDate: 1996 Jul 23 07:53:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI6) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI6 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 59 /comma put +readonly def +/FontBBox{11 -250 1241 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 +5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC +4391C9DF440285B8FC159D0E98D4258FC57892DDF0342CA1080743A076089583 +6AD6FB2DC4C13F077F17789476E48402796E685107AF60A63FB0DE0266D55CF1 +8D0AD65B9342CB686E564758C96164FFA711B11C1CE8C726F3C7BB1044BBD283 +9AA4675747DF61E130A55E297CA5F0182A3F12F9085AF2F503481071724077A9 +387E27879A9649AD5F186F33500FAC8F7FA26634BDCE1221EC0ED0E359E5EA5E +6166526FEB90C30D30099FBDC1BC2F9B62EFEEC48345160804AA98F8D0AA54B7 +A480E715426651865C8E444EDB798C7E11040AF6E5A7ED1888653C6DBF5E6169 +70BCD9C063B63B561EF165BF3AF11F8E519F37C6FDA2827685739DE2C48B5ADE +EE84F067D704D4511DBFA49E166D543CFD9ECD7417055D8A827F51E087CD2927 +BAFC7E6CFBD70B0FE969F890A11149D3D44D422C3370495DA9951AEE7253A49F +3A9444C8CD9158D84117299F7F2332FEB0F94E6ED8BC7AA789A3219BC2F227D3 +3B5BC75FB53B55D72AF4A6A7BB613FA235B11BB37D059FD87127CEF73D5B3FBF +9F91ABAD78BD9240BD9525EBA78095EA0BDB25D1A19E876F292882EAD5619D46 +D20317A345D931F4FF4EAE6216C27044CBA525E3B917CEA25A04C120466C4B93 +FC720E6BA832A06CCA0A3916CEF0968D49085AEBD243C41A448289A6F05CE3F5 +79148DC112A3CC7E8FF810B8C1A09E05F496C0F1EBA334E42E05C376C98F5F69 +C06C71BFC0A2F3AC9951CFBB143C66FB84F9C4ED27DF70869352D61BD5E11508 +0797B87C71AC58D7C35AB3247575482E538773F05A104B80EBB74DCEF9C44CFA +82BA0C30DB282E2233AFCBAA7A2627ECDDE91AA975707FC767E0D13F1B940EEB +60D1F1724715C239A413E36A5EFAB56A18ABDBD64D8ED5FC0D67E15607E5D4B5 +5EE67E98F80DE8B1E8ABFBA6468C2DE562A90F1A24A1E8237AE8F501B14B19B0 +F0BB6B32A40994A0BB3FD4910117649144DA32973BEC68476E383A859606DE4A +7BC1A21C03D4132B724BD82AB8BCDF711410F53844B0D90C2F45A37ABBFE44FF +EACA54C07A200E758D08D1547BCFF41CFA42215924B6384CEBCA425DD007B038 +11479D23AF3421EFBB54445CA5575940B7D07CF586 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LASY6 +%!PS-AdobeFont-1.1: LASY6 1.001 +%%CreationDate: 1992 Oct 23 20:19:18 +%%RevisionDate: 2001 Jun 05 20:19:18 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LASY6) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /LASY6 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 1 /a1 put +dup 2 /a2 put +dup 3 /a3 put +dup 4 /a4 put +dup 48 /a48 put +dup 49 /a49 put +dup 50 /a50 put +dup 51 /a51 put +dup 59 /a59 put +dup 60 /a60 put +dup 61 /a61 put +readonly def +/FontBBox{-25 -214 1157 702}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C +705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4 +B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458 +99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646 +87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFD11CE +A6A468ED59C5E8D61E071925A313CD724DB9AF18F4685B5AB09F99D492546242 +EC64939219938D6EFDF2A6AAE7108914A8EA6E0D72F2C341C43044B15BB57733 +0267A343F334FFF02502043997066A1A038A7DC53E9F134B7EA6E8666B2DAE4E +C538B8188BE490BFAB4687853579DCB21D9C284E719FC00C4E6CA47E7B409E83 +544DE1C0B2B4B9CDA2BAD11A47FC4246A540175F087AF2A0F4C891C2C9D116E6 +67CA49E139EB7C6B564E6E70F36FFC1A705F3097F10CE51FD414F6AC2AC8E6E9 +5DCBC1DEF33CABD5DAC1C4492BC1D68F16DCEC027CCDB3C1925EE32CEC72EC59 +1515B38717A7372D0D8D933A3015AE1F92BD8C23F6325F63AD4656C5A22A11D6 +34915B5FD9A49E6CE8FC44CA04BAFAF2DC195F3C89C40B4EAA91D52FFB43DAB2 +A1E061A2949F85076D3802368FD2A6BAC734FF4FCCB63C3A7670ECB6FB858770 +0FD09ED49B58FB5BC7220C67DBBE72A519D4B9770EFA82F1F4D475604EFD02D9 +23883022DFED473D54B236568DB92608EAEFCA2AC014DB84BDAFECE809C12932 +958505D785FFE5FE36CEF9061EBF42EA2B893919DE58795541A4F135D7B046E4 +A3CE840FF31689C022FF348C6B9D67ED27A90EB433BC9E7BA427334A47BA6406 +6CCC93A58DE09326434DE576A4F10A8259B1C48C68A0C64E522131713B598990 +DA46A5B5B8B75A17DE7FE3573E9E6A9237C4DC8036E074170F623398C55A6A52 +683995825B90C6B901E5A2E0C3A0CA90683DEF996979D861394B47C70DE57CDC +E3DB5DF5E76618EA773EE1FA040F9C34485E8EFFA57B0899151DF7E6C37F2DEC +B3202DB12ECDD97BA814B10CB103ED7E8065674C4E7192F8E9563DF2BAECAC66 +1E6D6554499DC7B0C167694035E40139560285299687B2BD99724C163C563109 +FEC473583DAE1E9E7EC5B5EA8D8F54D5CF97B091550DE046B9F503D21FF39642 +465376FE0F4F25502755413B72AAE977A8E0BFAA13D89DE7D637343A5893A39A +3AD67D500AFE8FA7768D6CE4C3258311539F90B1755D6F0FEC42AE55E2613544 +CCF7D77A995A23339073D85B79AF9E3312A218CB412485AC94EFC3205B8177CD +1EEC825D6A0A7C282524DB50571F80D76B16337DA20C651DBE9153E92AC71C1F +C40A7E582B0E3109D610BC3D0E0E4CE057FEFAD217B1873F240FC403DAFAD3A3 +E24625DC4EBBFAE70866722B038ABD1C56433EBE540FB3DAB8234AE447EC727B +9A851D2049363C4D6060FCF6AA26DBF33A6383D50D87CADEB4CC5522D02925C9 +95871077165AD7988638C61C74996A3079A0BCB6A82ED01C0A375A4AB86AE809 +B6460AABB046389868BC540CB588D5837A5FE28D7B3307F30009E0F36B019965 +A06242C2A4B830AD3F2EDA1B15DBE11101FA1A1DFA048A334BFEE64A20AE1B64 +F56FB4D5227AC931FE297450FD1BA00DC0B86956BCF5C53D1A693204CC06E786 +7F2E3FDE1B2FF00899978D512C78C874285E4364989966696C358108A1B1AFBE +97EC813B7AF5F11363EDE0C444D7928C9380FA1FAB619BDD3F008390B5393B87 +6EAB174F38F6AE46BE90E5AC7421E3537BD4DA8C0ED3E89C2B11E44A75679630 +6FA5FFC30AAC67645797355F3DF4ABE919517D504FB3F2EBA92E0C4D92C7C03D +57424950FB8DCAF22D064247024F85F9CE2FCE0CB7D37ECC7549E1550EF9B6DC +C53A50A77BC241066AFC952545F8D1013199812371E32CE5EF9B0B49F2C23BD6 +549CF426DFB46B41294E5CCE7CA6D5A3DB84C71060B06FD80BE2F9D3DEB6F6A5 +2188BC145EEEC74FF32B6BC58E9748AFEE06A53D689FB0570C2BF0F6D2D1D6D3 +629632E44CA9D082D0CF198220515D2D96FC743C80738C761B2751B9F0292BDB +B0A41EDA10CCECD5173B33B9711B061B3C7A7BBE5697F08157479E79892D9E67 +EEAFBB78D45C116A9B8C86AC2D0CACCCA18CC9CE3C8D5C70992D22EE3915EC3E +7887554856D511DBAD5338C88D19E20FFF9A6E1F769E60AE0A490EADED862097 +BC150C51358D39C6BE0FEE4AAAAA347549E7C8D48CF576CCDF84EB843BD313B1 +7564D3339A92B4B705A5283E3AE08F3CE831FBE8F0FA25A04162EA5BDDBC8571 +FC899AC5099DB53E52F1A6A3ED683DF325C5183E9DC96BF33DA09E493850227D +5CDED23C8B91ADF5986EF631C506AD98FDA3C99F70158232968BC47395C9F619 +DDE8277FC6DC11033B5776631F7E6835963A31583D130EA93E441BB198A47607 +5684644FC170F51B5081517BE0CFEA848EA963249602627238B43C1C28EFA939 +0CF3CC7EBF1B43C04ACD882279C5AE6A69637D1A4FC536971E31B0FB62A048EE +77B06E4EBC838531535D4FC76BD9C1996A897F9F3066C421D217954011CA8BDC +52F89318A68864086E114CBA10C57950F8FEDAC24F96115EC11F3E711D710852 +2AB0510CFF52E897B75F97206ED8B7427169538FA265702C54C30EE3277E3E61 +A348E7EA0F9E7FA6328B12C20350F36E1537CE14BE5CF749412B68943CD21B2B +85DAA2C273C550D3DF11CF4DD6E3252A6929E08473E1E533002EE44F665F73F1 +0E83063248942AC4B7DA6DA2E58049E9EBB6F3D714EF7330EAA07052C309BEE7 +A8652AD54CCA26C6AC8558D014275A8013A770364C61486B3EEBD991149B17D2 +54B84D67A868542345B1413EAF4CD5A1031FE1106A133673080B578C75F69FA1 +56C171707D99EEDAC297D8766E318D8345831306C3F749D6491E0BB99A5EC75D +F56748B7A36A0EBA27372EFACBD2DF983E1DE42218245F3C512FBBBE449C1809 +B62546CED082944CD2147258DF2BC7A1C02F77FEB9C8846E5BCBC37CF2B2F588 +1A2AB3DD0242BF23A0D56B7003CD911DFC028FE17EC059A61BD5D3AA6CF468B9 +B4A59D7DA9BB6FBC83612F37F3DFB5ED995C4AF52FFE29477754529B4EF8EF62 +B7236DFD888385BC8A45A339D443709BFDC5D118632FAFD062128D509CF60FFE +268D44959BF99BB67424490479553FE856072A3035FD322E1CFD46A294946853 +7037635FC069B33AB98716E4CAB017D671ADC01FC7985681A199B7CBAF7B82E1 +A7AE03B610AECACE29734930DF19405346B22B957EF25962B76A0779747CD40A + +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LASY7 +%!PS-AdobeFont-1.1: LASY7 1.001 +%%CreationDate: 1992 Oct 23 20:19:18 +%%RevisionDate: 2001 Jun 05 20:19:18 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LASY7) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /LASY7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 1 /a1 put +dup 2 /a2 put +dup 3 /a3 put +dup 4 /a4 put +dup 48 /a48 put +dup 49 /a49 put +dup 50 /a50 put +dup 51 /a51 put +dup 59 /a59 put +dup 60 /a60 put +dup 61 /a61 put +readonly def +/FontBBox{-23 -206 1077 685}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C +705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4 +B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458 +99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646 +87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FEA5F6FE +DB9D0AC1A487281E2A1B534501CCF5B67ADEF8A2C129B199CF24D46D7212A046 +CBBFAE80486200C6037B3F9E995C34C97AC775B527E2557CD1956CB28CFE63AC +781572153003A49D0913ED58C88D0F946570FD9BEA98F7FEF6D5F7E05F69595C +2E6FC1480027F2EB1FBBFDADB6D6DAB4C2AFEC00F2E996D8AC8B25C2C0F59D23 +C99F2767325EBA7F568C2F6C191F4ED92BB5A9B8681BB4C100C442465CB0B4DC +6F99D91DEAC92D071470EC3E39A664CFBDF9A25B8147C9272AEAC2BDECF5F9CF +4456450CD3958BE859995D22DCBDF4B291F1B149091DAFF47D5AEFA9496FA24C +565554AF04D35E66B806C5E658A9406E215A8504858E744AC67FDBC2B68CFB12 +9CDB40F754A806D7FA078B911831FA2BB52F58C00DF6D43DC004780026BFACFA +6488683940E88290FEC54CF5C92D9D07093F70736336F56C1723B3AEB01C18FE +8021435F3744DC38CCB5706BCD226653750F9CEE0BBD15A0580678F2AA58D58F +6578DB30979BA9BD10EB02BB37F2E4CB7F083B2C699C39F179820FB8C2DBD7A4 +E7EDF03E83F7536946A3F532650AC5CD48C10BA3AB8F67915EAC0053592CA317 +E0A8EFD1322398DB7D9B32ECE97791A00B49839C58E426531833D30F153863E9 +2A79516C2878AEE6916F0FA78F94714ED709C10DB24955FC0DE6769D34E4E1DB +2ADED1775C5A5A6313C93B6A0195311B4A334B4D9B914EA59194239AAD1358BC +269B8CBD35A7685ACB29282D46440A38083B9CB2258BB81E2489B5FBF551AEA1 +330D4DF70E9E650964A369CA2F77DEBD0CDBCECDD2DFE4EE609FBBCE90433716 +E03D3FF981EE21D92EC9C31C40517D441C6D94691DBA3D301224650AB66B633F +53D1E9DDE55A114D0788337E57F5DDFAD75EFD564174BE30A5CB9B93ABF09D97 +438F5371BD9EC9E8823B5363CFA1ECA372E4903281DD93D5CA9F38F236D80F3F +539E73FBD69EF7A8A0CDEFE0D40A07F10C5A8CF320B6AF2CDCEE2C0BC06BCE4B +28B5810DEAA9954BEF2AA2394F5E3405E2B963501E5F17ED849B6B6C598B347F +6849B42A813CE9B2AB83F7EC80AD6CB466A16262B6DA10D7D330622A30A1F31E +C50BA84B0969F0CF412854C4C9A643BE43EC46CE6C80986F77B65432CB9BC8E9 +176F8C9574DEAF70972EDC9500B26C755EBC9CEC94F8B48D04A502FC35A33750 +21CBA447B7214F9DFE0DEEB104B9A5316DBE17875BD32869C6D45B79F3420C18 +BCE4CBBF4CF983AE79307FCD87D4C638E47EED790C1C102C0F21D8A7D50CACBD +692EAE6D2F3E67ECF1B5955870E0FEB10784F91535052A2FB2CC7E507090208E +B63AE57F1F5639D94B0178C9DF580238FD4DE699B0C2F3C17C38B45076F6ABFC +193ED3B05A091114B9A435DB94F63100206A232B40697AF39FD16565203B0500 +9ADC01DA83032C66BE24EE0FCB6E3810B49E33A8E899B7375467F1549B8C2A5A +0019D84045606746D5190789F3CF91475FDDDD1CC1A1FACF4F9AB6E0CB76B628 +3C430C337B27CBE624E02DDDAE7B84DC4F04C4BC506EE9DFF90A74B71FDB4E2E +6635CA95F018D621CBD675954EB0C01194F52BC772371BCE712EA3B66B34594B +067D4720DCBCCD123B7DA599062A44FB9C14D25488BA977E1239437AAA4CE569 +B0E1399A12662348A48D0A95512D09B66AF5E6750845D896931D138F61BAC384 +A04B43082C29B4503F10A447A27F6F6D9991A2AF52F8077C8E38FEE89C4B1974 +C4191AE20D636353A97E2D14A063739E60F9BBD908A7D52FCF6542A0D37FE038 +74EB39116D6106679597E9FC91837E16C146C9C9200D4C117C04FD4641A63BBF +1F687789469283FB653FDB47D398B0FF5BBBD79EDA99E9133C83A7BC461BB732 +BAA66642565E7BEF23595655B04B31EF555C4DA7AE094CF28009B580F35000B6 +EE4A955E18F7D7E3B181700F3588BF866AF9A1A6FB58E7472C35F778EF01BB46 +7D7D78F022A2CE9230DBB90F56C59E0AB11D6DD15A3B0E4BAE986190DDEC8F59 +77E5787B463A8A4CCFCDA0AC183B711DAD5410628080EF997E5278945FB5BCC7 +EF0F4C9EA8F2ECA6B3F3C525A702153A100A5C4C49F7EB06554003FE331BE1A7 +45DC11F5708B6028641320B6F5990F2FE4542257FEA1A254B508B1EB34A8A642 +99ACCF98ECBDFB972E2A86ABB96B03966E3A38768A3B40EF6B03C880C0A29801 +603152BFF3A837615CD6B03B256A9C4E75C19C4923A61BEF7ECEB834383D901F +244CBF6431A04E4A0627F4F1D7F595ECB58BF7069E3C2C810190E9BD784137CC +984A1E9EDF8D295614506AF6309DBEB701952B4CA41E1F2592C2EA93FE08E3C4 +5021C82DFCE874AEEFECD40A6F82253CA4CF5EC6F63C364D156D98CF39C8ABF3 +9457E7063B88B1543220BE8F7988A6AE3C83A0DFC2D12DC48D16CCE5BE3A4FDD +31FB3C0D9DBAA567D53D4812E6D2589E265D95C20B1F097B104AF01601E42D0D +51BDBBBDCE58A4A7D8F37CC48AFC7561EA5138A0AF134FBA9EE976C6F2567C36 +5B621B27120D88AE4F5CFA90AAC76804248C59A37296E05DF032A7A884B93DF7 +A935437A1B168896BBD50080AA39E5293DA4BEC093CE1BE802D7A03828377267 +70BB66A164206872A5316D9824E43E308B5E0DF061798A494F09809E648C0698 +50136A54E95CD405638D443240937F6C13D6D8DF02F168206D6EFF2A9668F6C4 +9CC604275EF8D49ED2182D7EE0B0AC66428C7151239BE6AE126FC43D773CD7E7 +3455901C72581F38CFCECCD8FCCDD62C23C06814F4E6DDCE72644F49185A7C2E +C7221AF9F1704B3491A44CB345AC39800370229028B2E8599573534764A0571F +AC160D18CB0F4F4A74868B1DFEFFBFADB58964094F1012B557072A709EDAEC2E +34125F050F342017648FE8E4ACD6481FD13CC1BC9C801E84B0507CD4E9893E06 +F4EA9DDD2BD5FC23A7DB3141C13C60D3C27D4F735DE32172DADEE46B203AC03D +C1290C3AEF0F8470511C062A3119293620EBD0BE2321C3A7E783452A72455140 +5A84EE5CD856FBDE47EAAE9E905E6A881C0A22572A789A838EDEDD0A808586CD +ABFCFBCBD9688C2188156A7C1FB437CE3A85A1EE3AF70D55B3 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI8 +%!PS-AdobeFont-1.1: CMMI8 1.100 +%%CreationDate: 1996 Jul 23 07:53:54 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI8) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI8 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 59 /comma put +readonly def +/FontBBox{-24 -250 1110 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 +5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC +4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120 +788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62 +C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32 +617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1 +D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63 +532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B +5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8 +4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6 +DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E +B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2 +A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89 +8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA +D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817 +AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04 +AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748 +A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827 +AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011 +85B385124C2B6534F3CD1866AF92009D93B97F763AA3C28584857D64C6AD5C24 +68B3330EC1F0EB0EBBB855EE71262417C4C15AFBAFAC26FDEFD63C49486338FE +64211DEF7AFFBC82242BF22DD3AAD6FB1356B1FB6C464FFCBD266112D0F6D9EA +7688B88321AC6512E7BA5425531791CB08FE6ADEEBA6A503974714F7EEE8420C +9374BE70F06289C3D329DAC3A0D9696E451431465340E48CB3FC0DDEBB369028 +8DDA8A5D594537EE051D51CADBB0BAFC654AA9861BF12B3BDC5EEB6C04DA99CE +CA42B984B7D75C783CCFCFBDF5DE550E10C82CFA1582DBDDE6C3AFD64496CC8D +88C037E851FA71EC285D00266AF95D70F6E7 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LASY8 +%!PS-AdobeFont-1.1: LASY8 1.001 +%%CreationDate: 1992 Oct 23 20:19:19 +%%RevisionDate: 2001 Jun 05 20:19:19 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LASY8) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /LASY8 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 1 /a1 put +dup 2 /a2 put +dup 3 /a3 put +dup 4 /a4 put +dup 48 /a48 put +dup 49 /a49 put +dup 50 /a50 put +dup 51 /a51 put +dup 59 /a59 put +dup 60 /a60 put +dup 61 /a61 put +readonly def +/FontBBox{-22 -201 1003 683}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C +705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4 +B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458 +99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646 +87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385 +B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A3915FC1B8F27464D2AF01 +2AF0993BB2C836AC0BD99FC99CD6A00B93838BFBD0A80D69042E191BA3FC87E8 +1D6EC6187753AB286E7FF4C23C4E829888749AA368CADB0540D525F05F029359 +94C4B4B8D6003C67944BA83866461C4A6BAF9FB97FAF084D2A7132624D138DDE +195A5DE0A175C9CA4292C8670DFEA277C4C9DEE1D2F46517ACC059C064E58551 +4544B9BCA7CE84F1CDA0D901A37FFD838D77B790937A8B907A59786D65DE9B3C +E6CFA78A484A3F0BC2F7D6F2DD4647F1C315B4182432A3158B76F7E61EB25B42 +70616F483FB9F72F513B878165CF003EF22731B797E19FE5AEF9C26D4D6F4155 +790CF91D9AD2CE583A3CE14D529FF0490FF7B6FA554E2EC883504B510BFC7344 +1786325BA895B507C892612129F31490EE255AD204F18A4B0B866C570D118AB8 +83816F6912AFF49E6A3C81BA8D791F3B912D1C1C9261B20CF3727EB1DBC3ECAB +27B7E77D250A702A69AEC05DDD58524A90FC41169F74620CBE11884E27742059 +6DA249E7D125472C186C55489AE5DF7860E7A8EDC43314119AF74434D378E6A9 +D29EBCEED12CF0721AC18AB5D5C8FD89ABE49213BA35FABD5689291643525D4C +84C939845959F59C9CA1CDAE95A22767B622690A18924781A4667836A44796BD +B5DF0FF2AAE740226405A298AAAC09412B2DB12E5B8584AD015374BD13F1A804 +BD47E3E1FCE19D763E91AB70BC63616D3087C7825DAFA62094DDC378584E8F74 +491DA17DBE1671F3D3A8820777E56FC850ABDC7000BBDE7C1E1DA5724371DCFF +20D85A2E81A866DC310F021062932402DA89D04FA651505CB64AE5EA5D7E9819 +7FD725C4CD38306946B6CAE358801AFAE8FBBB91A77D789C0951CAC7D5691334 +E21682E3623D4EEED1DB5D979615DC06118886BEA0CAA8D2AFEE921F98E1537A +78FF7676B849EC47087027A349403169CC50A83E20AF46469D36EDE658D18974 +C2B98AC9BD62EA2387826D99171394650D6B8A3599EB016268F5BD75A04303B8 +C62F6E678DCBFDE719D9C602ADDEB996066D75215112E91A0A78493902ED6054 +C2F674D804B5D83CB89A5852181F96C82FCF32AA99CDC155F7C751D27E88B11A +7AB207FF72C432AF80FCDB8795E3FE87D19BCAF4B32933B4A10628EBB33162D9 +8E543C1E5A1A6B492BE91D0EB669858E17E0B72274401D5A0932E732CF0F0341 +5DC3D0C8CD85D44EAA6DE02D199B746ABD99DFCE24689AD232D6656C8C479959 +172FB8D61AB547BDE06224C5A90B4F986C08674470342AACAEEC0610E68F6CCD +57713A0B4228679A04958DB54DB8018E4AD4DAF84CF430F0CBBC2985EA0C6DCA +B41100A728C243E09547C3D96A6A990FC26E8E75F7B6296D130E5418D1111F6C +2E972620107A3C3E4D302F9025B3E391598CE7146B75254D73AFBE9FDA8F007B +AF3BE01CAB4D9B3260C1AF89C532AA0638240BC3BF72E4A7BDA2D041256A4771 +2D9BB499BC9A12791DE95B0CEE9F0D3F083F85D84C24318581D31830EAE12722 +F914C69FB7DD78B7F0337BBD86ED9A06346C6C496356BA80253F7F539EC83C9E +9C392D7CE22BF8C2BB86FF703D6A4EBFED80D2CAA8ECD6B4FCBE31C8723EA53A +DE5EDEBF9338F444D495232F02EB76191ED13B43FD73E003642C15CC621A46A5 +FDAD57EB79BB15284AD83971D5761F9C7545362D4B40BD760BBB3831897A3808 +F76444223FE7938FECABAA74ECB5966872ACE92A8BB08D592ED7E94A8393A23A +3DCC707F4DD90A5C3CDDEB5B7C74B892C55AF0E5E549E182EDE50B62650FC5AC +8768421EE4B579DD959C59A0F569384723182AAEFCD2D3AF23CE3CD8B3DA8276 +B5BBB58542F62AF349AD34F244CCB4C2E7B5959FFF6040980D5147100371FF19 +CC132F643942671A59E37FC5D63F4AEECC7E8EA765B1C9A974E45E6FF76B8670 +2FE07EB1084C573964406A336D4D1267005E6D151782F141D054B0EEAD1CF732 +8519C04E106468A07BC1B9C77BB9050D1DDADEA977B48A2C74968C5D7B44E7D0 +434FF8EA175BF9AD9AAE82CD35779AF0BEBBD4785B73DA4CA1B6A2F34E98EB48 +79F0FBF795BF8E701DCB9CA4E7751D512A97608A605F1CA40B9464F066FB71AB +BCB047B4B7DB1F5F9094982E8155BF6F51C938CFCB6DDE52942CBE8A47C92D7E +49FB24ADF5BAD9346C7CCD8C4FBB7F38AEFF1FA392F63A606CDCD2A1537A10A1 +456FBD4FB52EA11882F28780CC6D57F854E64EE2F1F7EE3F827CAE2139782556 +B1D7A6843CAEDE8E2D0B7AE46C368A19120400743E5F75263AAB200E7677C51A +CF72986272B6CE6C908379A823B3D27496D158A26EDB5D6DFA9619ED8F8DAB53 +93CF7ADE3CAFBA9E368566829D1C8491A47915D7FBAE76B19513C37F58F715BA +3BB07BEF1B9B544A4800A44B98F9791307D56AB0C813844212BEF6D904CF3CDD +6B312D854CABEBCDBCABD8E694D6E1D057382E75FD0E5C02413A1CEE37A40F1A +0AB42BFE7594296D0DB89576CC9FCD3E5439D9DFF2714EE8D98E630F130DDE4D +4D915FE7FD7D3F02E82ED66BB40201B169B2D1BD566148BBBB49DDF6CE8508BA +5105163CDF6BCEF9AD5266F3D658A16C43781520C51DB84A517561554336B1BC +DDD9A8B420F4042C34F7C45137F1E1222426ABD550CEA46E3894B7B617F0DF42 +AD840A710D0712F5F594BB9C2495688B5575AAFBDECCE88BFCCF9F4ED82C92FF +B0841B72A4DD4A536F3A5DC1EBFFAF7CD73CEB85DB608CB9F188751767B63BC6 +FEB16752D78E15E23ED954607757A479168394980EBF669A21821690C028070E +03BB88FB45895C7D36E1A86BB6B08F4551F8FF15E8558A08CC2B1D07E5CC4AB9 +E6380DCA0FD6534CD3165B0E1E1BDDBDC0CBDF40F5D5543816AB8E292756A440 +75DCE54A8BD62EC74FF9554F424809BE66F084647328368B164BCA458BD7EDB7 +CED8DDB8D9A19B9F8EE5478DDBBE3B7659EC77C2A8101FEA2B08F70467645555 +8ACE06AE9D392F31824BE35737459F0BCD16B842600F8F260EB5032127C4681D +73801EE15512AB855E390E33A7163C6E87F87E3273444018800EBE +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI9 +%!PS-AdobeFont-1.1: CMMI9 1.100 +%%CreationDate: 1996 Jul 23 07:53:55 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI9) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI9 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 59 /comma put +readonly def +/FontBBox{-29 -250 1075 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E394A533A081C36D6F5CA5FED4F9AC9ADE41E04F9FC52E758C9F45A92BED935 +86F9CFDB57732045913A6422AD4206418610C81D882EE493DE9523CC1BFE1505 +DD1390B19BC1947A01B93BC668BE9B2A0E69A968554239B88C00AF9FBDF09CCD +67D3B2094C11A04762FE8CC1E91D020A28B3C122D24BEAACF82313F4604F2FEF +6E176D730A879BE45DD0D4996EF0247AEB1CA0AB08FF374D99F06D47B36F9554 +FAD9A2D3CE451B7791C3709D8A1DDDEFBD840C1B42AB824D5A0DFF0E0F15B0B7 +22AEEB877FF489581DA6FA8DA64944555101EB16F7AB0B717E148B7B98D8DBFD +730C52937E226545CF8DC3E07C5BA30739BAFCD0F2B44275A6D503F582C0FB4F +449963D0AD2FAFDE33BA3D77BCA9D1DF878DDAFCA2E22CC4BACD542B282164C7 +97C2BDE318AF9D501CA21F6E662E7AAB75A5F24D2C182E598D175D44E88AB19A +E7CD59584F95B389183EE21B525BF52A3F23C0FE5383A5565A19361D716F508C +AAB78411CA5A4D27552CC1C435760D5A89D535B71C593E755C616661363308DA +A683F54ED0C23FB2C225A008392B0B719F66F11A946A090B7C00B662A3C69599 +B4ECB0CC70C85C4BBBF207E0026F6C7A19F2ACFB7A60804FC98A4BFFD7BFFF2B +9529E6D9D4238002BBC255BC62959D6F3381FE06E0621B879D5FE5B541D45A1E +759A6E7DC32B1D1632368D09A97039DF255B6492B1B2B7E2C1434E8306ECA7D3 +5A79B6D614B4979F10988BC76ED53A5F45315CD7DA216221F842FD0F3E050DD2 +BAC23C984D506D8F7D614BCB6B244F5F41321549BB0BD041FBF3053307168680 +3435E9C9445A59A7C666418C4F2512C32058B1CE1EA47F00930CB228EFA5C55F +1E69458EA5F53CB64BB754DC25A4385A270A8C1F8BF2C9937A809D321BFE9605 +045746539B38DBFAE253A7B6C3483B6C6E9FC204AA9442E43459BEFAD40BB95E +F2A5F14EA47F4B6C6CD1AB4D9EB6FADBE69EB375844376A0D2A670D9BF3D41B8 +14B8B8C20FB508255F1258E5266CA75DF1E985D977B4612F9C2C9CE406940E7D +721BCFDAC2B2F23A07990E9AE02920D85F2BDAB24E186ACEE7582939E534AAD5 +47DEEFA1BC3B1AEE113C6BCA30B1C4C6101F628ADE2D83BBC0A2DDB3CCF8D2D1 +22B5F7C7D15B16159F180D5E507F2AD813089277 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LASY9 +%!PS-AdobeFont-1.1: LASY9 1.001 +%%CreationDate: 1992 Oct 23 20:19:19 +%%RevisionDate: 2001 Jun 05 20:19:19 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LASY9) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /LASY9 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 1 /a1 put +dup 2 /a2 put +dup 3 /a3 put +dup 4 /a4 put +dup 48 /a48 put +dup 49 /a49 put +dup 50 /a50 put +dup 51 /a51 put +dup 59 /a59 put +dup 60 /a60 put +dup 61 /a61 put +readonly def +/FontBBox{-20 -196 971 683}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C +705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4 +B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458 +99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646 +87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385 +B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A39158A5EB4E1CBCDD814C +9F326497D38C51A121C75E0BF2CD79ED11C7B1A5C36F6CBC2C127360675F3C6A +FB3C478FBAB07212200E28C5071E1833E27D60FB815F448550C55F3317441B25 +406435197E11759CA6BE6B17AC8600E4653A99AFDAAF4FD54D28638136D701BB +FD2CF4ACFBF28E48CA313CCF5ED2BE032B7C9A07ABBEC9E6F6D90AB799716358 +37ED7BFC195D7243880801BC54BA5EB6CA604BA4DB433EFBC4EEE710ECCEA919 +DEA0BEAEE68DD8C9204DA9FF4A4B9DF203432482904799DCDF46556C1E68AD87 +0E39714C510904F488AD722307DBF46063E8185CF7131A749844CB5CCC0284FF +62A7EB6B0779800ABA08EF65FD4A17CD265E56C22DF32F6779BF6269B21F97AC +9BEBB084D2E7C04244665182DC0E86CA91A8B1B8E28DEB6D7EEA105D839F1054 +ACA14DF8CCC8A94481ACECED1628987F65CF1B313C1588EF96342B837DCAFFC3 +AF8A8725C5E02DD1ACEDCE5391538883E699F8A7A101387F0753556A0B8061BE +AE0B2899DCFDEFEEA6C97ED50D764F6C7312FA4E12750B3CDEB9934BFB02BBE6 +8B3EB028ABE584002EC7006627F116B1FE79A182D034DA8FD1C2D765D18C29F8 +FC8E7FC3EEFC23AF7CE0B17F3065602D472407D6547A5A02CF04715238B61A4A +3DA50EBA90DA8EC4D2325FBC4D04F5760C9EEFAB81CB6F355F5988F91F9AB64F +FA390EAA719D3B36C3167E6B6F6BBD25829C3FFCB837DDD66EEFB025D9767565 +7587E1F814E0470700130DFB255F9FD8BCBE749C16A9BA5F3ABCBCD7C1730051 +B31E35E1294161E7106EB9B0A4C9CBE5D1CF1AF0CDE7924F954A53C68FB862FA +B1DAE3BCEAEF9C0553DDB16FB58507288348EC5CFD202E13E1CF2107F55A1AB6 +0747733A9630D97DF190D7987541E1EB8B142C88A9DA6DBD61F4AA0137582392 +C6CEC8015A8DD01EB17008ACED9AE89AFB55E1F053D9A57DB064F0661A3A54F5 +0F9EF0B432571E0565CECC5EC768C58FC54375B56C2EB92407142CCBAC358087 +6EBD860B184023A2B469208CFB18673BD1627C2270696D9F605F803918615C87 +C32B254325DECA4C05BB3A4BB56DEB2615437FC884B20E41013567E6E3F6273E +94AF91B7F26725994AA70502B31BEEE4CEF862508CA3EC69E487D8FFD6B209D5 +41CD8362A667F7D3ECA63CF7596671827DE3266A9493992417B864029E331149 +CC0BAA82B67813CEE1EFB80CFF42F423F2609345045848E906C7C383243D22FA +E951907F5F9D7CA0BB343C2691F63E87FA26D69AFB843F500536A1A5BCFA87E0 +8E303F81C8CED37B8C7AE7F495DC63A363E1622FE03D5F511A6A37280C8DAB61 +7F8FB45AFCF55A128C4FE17506AA8B9EF2C762F456481A0B900E04DBAD497D43 +64F3F49868A1A612C691517F8B7ED55C8F264B25C3B14E461B57620816E6EE94 +5C5B21A6D524D14485F398451A857E46B02FEB9A5A29116BE466FE0610CC9117 +0B1380A53B4E3048A759312ABB13460648EA241482686FD15C0F14D14E8B18DD +C6112DFEDC9186E159ED1F25BA7DE4257C2EA8ADD8009A27F80801798E3AF985 +B89BBFD6AE47419EC46835C338F0802C5BBCE2DD5510D7BB6AD1DB035C70F0C2 +B4DF6A91E8DFD969543EF46D567F4C2259B4F98E3EAD4DC34E48CE05E226E32F +3B0355A3946BDD4C2B3B0FC12433F8014059E2C62350AA90D7DF460424F95D19 +41EB697CA8FDFBF2CA202A90C71C9263D33F30CD2BFB7413E1D2F54A339D37D7 +9B79B21BC4CC20F73A235505A5AE0485795C42B1407DD35C34B727EA6FDF4EBD +70CA2E3500734E805805D34624586A5B4F554574070DCB5AE202D83CB6611ACE +7CE919EC17649DFA1B018AFEAC2D0E2A170B64897553109FA56EB8F00DB39F3F +199E4BA2B2BF0F8B04A0725D89119C9B1412FBB75E22780489036B671F4CB1A3 +BFADB6D3BAF6944AFD9F1FAF255F5A47823CDE2083B09E92F80B11705C0244F8 +483F831EC5C3F7182820622A0D65B0354484D6FC684022D7779735BB8C4A1070 +56B60E54212EA04CFC91C0A612AE64A8231A9DF2C5B089748E98E43D901CB8D7 +B5C455530AED7CAD854A6CC7F17F5BE6A0B325B403A19BD707F133DEBFEB5673 +AB992D849D6028DCE251FA921D0FF03EF11BC8B687591DCB5363C7006C457DED +973606DAB051CE39275495C248F4492A92B9FB47D20AD9CA9AB78FA07552859F +DC03404B55CB61272E9D7DF8030CF71E944ECD9FD53C7701E3A16E56C389FD8F +FAF72DB2DD460EFD71F22F63891A1DEF8138F04B675A9A84812C3FB0360EA240 +8E443BAD1CE453A7D2A1A9E3DB83355F504E8DFAD1EAA5BE9D5D3F073A05BD5D +4B46B4EC44BF48DD1C06DB24B4E8200010CB6D2B029030F5AC572CE401318813 +618077AE44227BC4274310F3C2C2B063DBD1E60EDD1CBBC5181B7285538BF0DE +04A5367E16FF20FB8639DEB1A14BA4BBBB6525F87AA245CA497FBABF87BC178B +EA84591559B92AA8C737A635971F1C6FFFF4718A67D2F093FEE769CBDBCADCDE +2C196EE4336241EBBD800B2D818E6C32ACFC930E568143A4F66AC3DFEFB0E7D9 +FFF01C888801244B51DF0FEA43EF74241BDEC11A5169B5C12534D7D8470C69E7 +86032C07027FDE7163B096628F0E55EA57AC62917FE696AE302E14EDA6ED05B9 +10CB7C6811972F115B542D2FE33D53805398D026F59363E189AD50A8D68EE97E +BADCBEB1060BACFB4AE87649DDD3E28D1E93311FD00FA2975B564D8EF2BF109E +94493D758F2C4CCAC7B1EFBB133219806ECAADC1FCCF85620A3A9C832BEC98CE +9F94D119FA19A59748F5BEF4FE736C29EFD9A3E65FE287B548A37E41D7318E57 +73A375E8AF829400F19C618BCFE1BD93547C10A68F9B2EC73C8192180837F7C1 +AE6B659B937BB02F74624A08D8D40453EA90ACA9F65E6399D4A136A4747D1D44 +C48A4BC81E4F7902FE544E8A0CD2A0EC80CB601246DE2DAFDAAE34AB5A84FC11 +C0CDDEB26FC7F9F4193AB8936FF11C7D91FE416E979B6349398F92B7639C4160 +DEB1F3B2925E374A8CE1AD9B87DAF8B52352E22531ADD561 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LASY10 +%!PS-AdobeFont-1.1: LASY10 1.001 +%%CreationDate: 1992 Oct 23 20:19:17 +%%RevisionDate: 2001 Jun 05 20:19:17 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LASY10) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /LASY10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 1 /a1 put +dup 2 /a2 put +dup 3 /a3 put +dup 4 /a4 put +dup 48 /a48 put +dup 49 /a49 put +dup 50 /a50 put +dup 51 /a51 put +dup 59 /a59 put +dup 60 /a60 put +dup 61 /a61 put +readonly def +/FontBBox{-19 -192 944 683}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C +705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4 +B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458 +99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646 +87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385 +B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A3915AC9272AA4A7FC35A4 +93A7A0CA8BD1CFA4382085D949EE819A51062591606ECEB5B37419223CC0400E +158F1A0849868CFAE0F71DA6B4FA47A636EDE756530425A6BFE45B8080808B59 +6B886D033437677B151285B047C84C2E2FCB71CCDF34E20E925269E5F1A210F0 +391066823D8F21E03746BF79AAC6FF91517631686722226462D6A9EC5FFCC806 +B959AED95F492481324749E00CA117821C347F9B924BEC8C64C954570252E909 +5C33AC8B1320BB1992A88C619DEA7A8FDDE42390EC82A07BD8BB7F0014A41EC8 +04225B5063D3F04723F51128DE8ADB79F62903E1955A7D49220223CA34FDC3EB +8FB71700EB9CC40DF747C4CC60AD11D3FC038CB2051F7E97CF7C7F7D0F49CA1F +E0FEFCE664544CD1F7C23B05BA649D373539E7BCC761611C17489084912F77C3 +5FB3BC1E91E2B4A47C27BF4989C7703E83C5A505108037DE5006D4F510B8FE1A +570E42E4569FAEBF66058F9D9608A771BEACA2A8AB629DBE939CCBBC116E8BCD +BEC3A33CBF185A68DB60CAC5B21AF4D9B46B3FF4FDFBD6BC3C8101BE15E79245 +F0CF8F670CFA19ABC08C34D85B10C17190497EACEF6E401F322B1E281C1755F0 +BBF9838AF83A0A1601D78E78FD599819762347A77C71374AB428093048E3F1C9 +40CFD63B86C7F70BCD2AC3092DDD3BC91CA714BA28263EB863D5E6E2DBD4FA08 +6B22C1D18B16D7042219B9F0BDF5BF10AADB658CBED51C8B272E4DFA11C5A603 +8B4A437EABAA699B86819EAA072F7D90A9CE1B52287DD3D26C4709118DF35E12 +0469EBEA32B0CE51ABF18261C05F5DE918AFB511D068E9C93599D6ECC7BD9817 +4405C7415A3EDE4D1BBA7F4E531877A52B452E82BAFB6D3CBCA727BECBCBE0DC +857AAD0EA6CECBFC5369DFA26A3CF7BE1411E2C9D5008D225DDC74C115E9E61A +22A05BFFABCF4C09F990DEDB89871E891462F9148215411E04E534DEA0C6E2C7 +CB336F2B55074F41E8A5E374BE10460B85BA7013AA381E029FF7E79E2920A2D8 +9E0B3B6009AD4DAC52D484DF03DA7BDD789BEC266538D4497F160A254FC47819 +9E62F847E78BFA82AB89A23206530E7932AD868C011726A1CF620A6C31115865 +A7601D2AF9A0F550D96D61954886A608C09DB8A450AB27E2803EBBBE944810ED +556166FEE7E97860C0DE12B73DC2BD62D5E884903E2D1F7064D8B033F1288B1B +D73BD481859F2587161C2888CB73D352FD30D9D54DB8945BD31EE6D81783BE8C +EE2447DA85EC4C335E8EEB00FB628250B481501862CBE6BD46C78C12010320F3 +9F4E3B898D729E12540DED97F9FE75434B3BCF60AF517011BD17828F51A12D20 +110E546A9465C738CF7434CC1AD1E794019D382031F8F22409CC196AF36EFCD2 +607242AF2FEAA55057510795652F3DF14EAF755A81115CED9B45A3EA08F6E09E +86790E3F68419D917D467E14423246BA39FD7CCE343EB5B070363C822C496886 +9EC83E78A7927D54A35E69D184AECE780F83B1BB3236FD0FA14BE4404C83A1E0 +730BB7D7A4F3DCD55C46BDC99D2747F22B5262C9C73D0C45C2D36BBFB3AC519F +73730CE073FBDF32CE40FFC998EE3E8166557AB95B4745C84662DE96BA8E050F +575A64B6158CDA1FD2B879192DC2AB04C391F1251AB4079F6E9C573D09F56C10 +AD76B7A719B0929FCA706492FB11BDF94C74B28D4EF85D2A6E31A67C22AE711D +BC362445F011FB1407078262EFD924CF2B432AE5F738D3E69325F7A2A9EB68DD +C8E2C769461B6F23F771700B59B9319810E08E9780DDBC5E12F0B4E66A3851A7 +EE0B6541246F3A8DF3CFED04913184B9218DA101D344D5BEE30DC9407E13AA6F +C03C7D224824888878E923C7395C720FC4C73BAFEEC353C9038F73FA1E351DAD +FC6AFDC0605FB2582BDAF76C95DC422AD5552917421AA575BA777C7B2D32A4A9 +8F8ABEC5E962718019CEB5F95B3E3DA769DEE7823299560DD96A151D4616CE2D +51132E59A5BF099F6B9181EBA9227225C7ECE808F5471CB1C14AFD21795A0FF6 +51B86BF0A0BC78E4EB8279822795ECF262B7F6BD4FB6996489C89DBBA91CC8E8 +8A83255DB00D07B14074F8F120192EC20F7215DA07D0746F05A5FA07095BA30E +B4A48DDEB6CC226D30EB6821197604D0A410C48A1F36D553071581D6DF4F9566 +6C396ADB79FA62F6FBB69AECBF0E285D3B4DE20F8F69A226BEF3B2B4A443EF90 +F02E2F0BBA084FE34F3C219D6DB7F77807D2534701835C5311134B999CA1A56F +B45F88DB490F51591244FDBD2EEF4B450C43E3C898C1E65C109B9E2C79CCBE79 +5FC12E9E2E5EFF59C0185431138FE8D176E537D581E71D6B1FBDEB6E5BC663B6 +5AC4AB2220F96538A316B45870D7BFE87516E989693521268DA79586698F36BA +B1A64106A30F8DE31668DC104D8BACE48DC0D27335791BFAF3181C863DAA5031 +E6E6A91F4F0FC0081642505FAC5B4EABB6DB35D2CB6ADC4BECFF2F9204D760EF +BA2B35F46AAE49FEE196209E05982D0662399F5D395B3C8AA829A9C80B6EE87F +4D937B8B52C0C8F71F8C735498B0A8CE7643E10690CF38D207790F41ECECBE5C +E895C8AB40746A7DF24BCCE21B92B3C87FF8AF73BFD88C327ADC55EE733DBE13 +9F7D3974300C39B87B0B7C42F7691DFB7043084C20B4FD6E5D6A6952BC1C6B5E +70F16F3C04BDDEF40EDBDA7B2BB4167714D985F6F85B694617136007711C0B4A +A53362B6A8BF032DE663578C1D8B1CD875E62135D8DC28A37111D121FE71AEF5 +E3F4828D7B7303B90C10B297F5286BC281F9438218397DB2726683FA5BAF45BA +62C33DBE987CAE28F2111ECC32CAF49386DCC598D2C5691EA4E4C39443081230 +9460B4F728C7B095C6ED1A7104227D1C2F5872BDB90DC4019F5BE37D8AC737A8 +467651520DDF5A7DC5C6E70D2F1E18762BE3C68DC11E49854C78360AB374BBC5 +9AC7BC3E081DFAD05109F19466F805611C8CE909D6F8543D48E7C72D705E94EF +CAF420B795F0D42332D7C7DCC05F8B53744F9D5616C998D54DE2CA573D6BCF55 +C96FC1C213A7447B2AB9C7CBD58A4C9C +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMIB10 +%!PS-AdobeFont-1.1: CMMIB10 1.100 +%%CreationDate: 1996 Jul 23 07:54:00 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMIB10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMIB10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 59 /comma put +readonly def +/FontBBox{-15 -250 1216 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D004B836D34E88C25F6CE738846C8E2E59A2BCF +4ACF80A26D78872E9343A0537BC3BD7715F32ACD958D5AAED865BFE129278935 +063A31C2634DE2F9077E0AAAAEB224466B779096D8E3FF0A12AD5157F6603DED +1A82F3511359143311179080C510740B401C930C96270FD1AB3ECBCFEF5DE53F +E846BAAE95828D5790922640EF8AB9D7CEBE7669FEA02B72F86872D3D8754A18 +A1629C40A7C00C956F140BC63362478279C36EE353638CD3E249897207A94504 +4400668C8E702058EBF7284C9BDF830A3FC79C7EE900CC4C3664F9767A237275 +CEE3671644A75F1E696DA906B4C66870DBE87F5B4A176920C078ADBE24F55C09 +3D18CDE21B5FBC1C6A8AB18E05EDBEF9D1C1C18B3E6377BA2A688579D4F708F9 +A5CF4F56C5E39E2726106E9713E638775E606464CD674E5DC25CE9A696A65806 +C8E9D206B421E246F18013ACC6C7B2985BA93B1B7D7745CCB25B09957F50128C +B523A55ACA6A7A2A0193A536E590291ED9D577B527CAD0372E05BFCA1829FED1 +662D06144A5FFA628C587A4FA05B179F1A7E3B23B47765FDC054271A0DBF9C2B +B4F4771F80D1F7AAD9024868C30DAD5CF728DB2A71D86D53B0E674996E8C01F7 +EF97B225A28872F8AD4752A466E078C2B020EB832F237CB9B5631EB2D2EDDB00 +709D3864CA3A6C3EF18085EAEABC011E9F35C9BE4B5D0B608361F329B5784DAC +5557A602E9E3C204909D84DB988F0BAB914E87CD685C7DA55C5E0B9F0176184F +FC39B570873BBF346A0D1DE3942DA05434949A65CE64D8BAB0A091C40F7FF47A +4FC57CB4420221C7B3EB8B891044B5FB0227009F0F6028D3F28545E63C975F11 +6BCCB67C58A544AE706BA5309FE38161FE6933A744484ACD69323A57815F698F +4D7BA144610B92EB815145A1A91BCFE06D5CA0BD65CB153CDED0244EE607AA93 +80B82B7870CC03C17EDFD45233B740A79F6F20393013964E1A814B95C94DD07F +117BADF4346870F0797A95BF7ED1750F0CFBEA89D72485E4730E53332CB7F646 +6D8AB2DEBF2975B25A0FE0E17229F312D65CDA55295E56EF2563D8081B4B5AB5 +CAFB730FAA30CE0BC3EEDFAD90662D450CF84423EA97B05FA5890257FE048C20 +94494FA4DB24C9F1884379C2CD6D9F617B77A096C0BEDC532E5BEE56D876CF22 +2365AABD1D9849D383AADA380429 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LASYB10 +%!PS-AdobeFont-1.1: LASYB10 1.00 +%%CreationDate: 1992 Oct 23 20:19:19 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LASYB10) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Bold) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /LASYB10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 1 /a1 put +dup 2 /a2 put +dup 3 /a3 put +dup 4 /a4 put +dup 48 /a48 put +dup 49 /a49 put +dup 50 /a50 put +dup 51 /a51 put +dup 59 /a59 put +dup 60 /a60 put +dup 61 /a61 put +readonly def +/FontBBox{-29 -219 1086 697}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D004AF59FCC17BC5C5BCDA248667E22DA632042 +ABD4C635E7F36234B8F3636DF1BFA55DE3992A3ABCEFD3552D6498DCD135A2E7 +A011D4A8CD3DA5B29BBECC5F953202635159476822C532ACB1795E3FEA442D50 +93CDEE47691ED4AFAEFF8E5198EC41B4FA50D35FA023941A223BAF64BFA0421A +CFCAA3933D4583F7F0D643398BA49D509FE0747D40CE5EA3E2DB1611F0866666 +AC0781A2908568C97BA8097DBCEC3B935E9A2A69982991408D88D193AA24AF9B +253E259A17C027EDB7ED4714112624646E3B8306531EB0D6BC7B9B653625CC1E +7986B39DA8CE93CB6A27679C191DABFD83FC4D2B89C95023A25CA5D35E63127B +7B2E4F010B18A0A5E368E89F93877A16A1ADD1ACECD405D326D83CA5D4A510F6 +A1A61AE86D385995F841F115E87DD81321E7E029CECD1E92559EB568AC63B327 +5C2798A34AF9956429D0A64C91F5BC7BF9E6F8E66BC4F0893ABCED929BDB3EA2 +FD7F44BB0CCE0866B26A890B0F659B9DA6E3EE324290D73BDBFB5448E9D71420 +36C0FE538F18E866A50DD23152E2C096E1045E7777888AF5CEFB83B1C6FCA18A +26E83D75AB66291A5A5A285DBB1B952591D0EC3D575F3F4A5AEE28C9E96C27E8 +CC6C07665482BEED7820B8AAAEF9C37AEDF0067B541BEF8BC6D81970D870A885 +6E01F327E06CB06AA0C89EC142AA9CBE59EB4D90B5CDCCD81D289E4BE3F79899 +5040C25B7E807A854FD70F2770139C4B189855374CBC6B12B1A117898BDF1610 +74E3B41D991CA14C79092436BA31EC02D6CECA609739BBE5034D7B296BB0B6AA +AD04510FA14F58D30A23A8EFE7A72F049E876BF97C50139E8C0FF468121D7350 +20084E64972D943EF60770C27E76D66CDF3629546945CCF703CB3CD7488155E0 +9AF648C75CE3A2530DE72775CC2D54F5083AEB25BE25E5E99347C781317DF5EF +F125DDFBF7042C3BE25D2FBE51A683AD71072F708A8992284FD77AB101C2B884 +7AFBB58155C887E023877B2DFFDC471ED67AF4F57DAC50B68910A4883DB36A6E +A36A7A021D115726CEB047B293C820E50E4CF4AB60675AAD91734859F48152D8 +751326488AB6C8FDEB582EBEE819CA48EB0D856D325733F81C9823A9EF812973 +90725E9B42758BBE03D21AA460EC0315E8F4FFB01E9D18D8F2BC668E301AB86E +5FD600B498588B0FC322766DEB8EDA9E6AB1FE8D35255345399DC190C07F3A1A +4A4B9697EEC854ACE5B7FB9E0B47925710DCD503908DCAB34BA90B3D40EB6826 +67B9F19EB0DF6223000CC089CFEB26DE0A60E17FFC485EAF1FB16FCE37CEEAD1 +12A727548BC30A4F387132B8099985FFA297343BF8FC80A2A3F43E2901E4BB77 +6AA49EA0881FA225721085B64CF4F346C4FBC6091343E429FEC9B8519664F1F4 +3FF811A845B1A29ECF5C84A84D14C6CF10CA76783A98F7E4B513C9E4BE35C952 +08869D25C13038238640ACB354237E3E2BF7B8C4C9F9919A547D1827321478BD +DE45C7F88C5FDC02D424FF3DFA29EB6CAE3E9DBC0FD81079BCAF0C39E6BB6FC8 +ED4EC88DF341D25BB6681BB6604151DF7D6471754DF03495252928FEA96FE61E +FC4B446D7DF6718264BF01F3F664CCD44D2C7EFF3A43ADAB173868B4AED27845 +2A36C5E8ECFC15752793B9AAE6A4A073FA656DE369CA316403185D7F13218687 +CF31CA7895210669AF05F9538BB11C01ECD6F5A2577B5711FA1A94768C81030E +C59C76E0FF41D3ACF8A140E465636B5177A62BB05E358E9FCF123950BC3160CC +5E5888C461AFD93B02F1CD092C72D5D0B99C3BE653A82F9E8C0FAFB0B2814D86 +CDFD4246FD7C9857F7FD817D988E8403C200154123DF221B2BD52E5CBC976813 +56F9A7F15F6E6B528AE4B7F75078CE540B85FC09DA861C4C0BFEBB936A740727 +45DA0DA3A78A0EEFD6CE771C5C0A4A4B1BAD3D67B9850F7FA718F9EFCF78007A +FA8C1589AD9A41B4ED062463C6DEE2F8CC23DB5B55E35406387AC154DA99E87D +BBBA967F23CD0BE17CFF0E70E110E3F170C593712B8F68C13A2DCAE8F7272FC4 +39BE8F52FEBC240D4B87062266CF2D10E6EEC8DB8C0200F3317645CF8A2EA21D +2D00418E48FE2785BD40850560F76BA3BA03BE321B6B32A26011E810934ED873 +302A5CD77B60C72965C045D55F4666F3460377A3C0A01A28D33A2A1DCD1917A2 +A132B21DC8D5F0943C06AE2F6AA71A81CE43279725E72D4D6EA59BF8E4C727F5 +97FD04E536923FA04FBBE1F1D583992B64F4494EB6CC5C6D22A1FE1E6F28B2B4 +C49D2B202B55717CF0C05C7A05A079CE0C736BF093DBDCEB2429B5CB9DB1D9A4 +4E0AEF3CA4FE9F6F7E2AEDADCD3CD87744779829639EAC7D0EEB91D8A5F29B5F +4D4FDCBF6A152ECDCB36AD5FF07AECB6EA4712D05A36A46065E8D1E2C362CF32 +749A0E97BADFF5FB06C08A60277BF04F13F1C6574A9F3BDDFCB4309886C645AD +BCE7D3E059F458D8F5839FC314DD8C126BA18CB63038F532F8493301E04EC43C +7BF51569D5CD6E4418483611F0A89ABE52429A5FD232E7DC04E4310862FE6EA5 +C838A7BAA5C7AB1F32266E0BC57BB3075EDC330A365B57EDDEACE0C50B586A5D +AA3D5511E37A3754557AD8A562C6C8AFD3FE9DA735187613D117C244D27FEAEE +46026C55651CC74065C0096EA4D0A5560F6034B16EBD958344FE41F8814D66D9 +5024939C21F0040AF789806BE8578E555F3317AB145DC5433A8F7F4F9EE68205 +076F2E857466D3DE8A8CCE9E8775416470D91F8F6C0D6A9C7FB674424B9B0183 +DEA2C9AB9D01B9F6AFC31FF875D56690F7DCF2573EC3512F81CAA269C9FF5506 +53CE1BC0864B46AE74CCAE3053D1D01FB8EFA66F63F0873717BC82E1101E179C +87118D307EC20DA296FA404C29F0F3D4B5D5F6606A037DA21CE5DF09B69E0286 +A3406989C6FA312E82E14A983D3B7622E5D1EB9571319849E83423619CEF0925 +1F5F21B8DF07DAB6B3887D7D31482F33B0EE1A294045894721A4E181FCF12BC0 +9630F219950F4D25D87221BD2D81E3962C71C1C08F1F55EC0909356AD23C0443 +93C3C9A6562146691A00231390CCF7EA5C501EA52B5D39C6DF666F36DA5CAE17 +131F5D +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LCIRCLEW10 +%!PS-AdobeFont-1.1: LCIRCLEW10 1.001 +%%CreationDate: 1992 Oct 23 20:22:00 +%%RevisionDate: 2001 Jun 05 20:22:00 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LCIRCLEW10) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /LCIRCLEW10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 24 /a24 put +dup 25 /a25 put +dup 26 /a26 put +dup 32 /a32 put +dup 33 /a33 put +dup 34 /a34 put +dup 35 /a35 put +dup 114 /a114 put +readonly def +/FontBBox{-2000 -2000 2080 2080}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +497544391FABD08A483766E9B5C7ABA9A537C053A8ADC16DEBD8B5C9E1EDEB21 +E4E89B0945C0737B96F0194585BE0D9B958F1030EA84710C31971BA7E93777C2 +0658995DC8702442780303E948079822B9EE0C531A5CC49578EB9E683CB77495 +DF613FBDC4536BD7A90F044B7EEE6EACA2042539F62789EA39AA16433AC4BD0F +98AAA04894F5487C279D2766B50B23E16D7F1023E387F60757E6C80FAE85A8AD +149D104B38BABA49C58CCD52B719D635E892DCE74F3D283407537FE6CF45E192 +54BF678237D2B8B3C0AE474E96765078627EFAC8AA84DBF87784E5E755C587AB +BE50DF55D35CDD05D96F562153E2016C3D23ED27DEF2C3908BD0BE882E838796 +BA837E4B671E2CEC2471BC438FAFA250F12170D86934A19C468D5EE6C8B2428C +AF1EA0FBCE58BABD5BD3A354CB89003AFF34BB325334141E622CAC8CC29F962F +E4E4FBB6C0C21D4B0835248F760476BE1B36948376B6A4FBB98E9D9F49D97132 +7166B1D32CB3E6590B11917FF0244AC94551E6EF79FCEB8FD65D947E2B209930 +4DEFA82AF22E5320B8A19C0B968D88806CCCC1FC5934ED4B8FCA05AA42A725B0 +1FB85D31D75E9F198EC6D3A0920C9298E2F1535FF124C0760E00054F631218AD +BACF10F693891EFB272786596ABEA45AD4A2860C4E346515C79FCE68FE8B973D +F54F8D267370670A62546B001E39136F45CC78192A31EF35C1415522DBB171A6 +E36B3DD83802C2305228A4989C062F84219987A9585C33DDBD17150A39A3CA2D +A2A91BA35367D7A031E6F0965F920B26577B7FE34FD3EC315837EC1D91E1442C +2C3515DE36B9FDAB2AB6C742C7D27B63843146711159C1202B67BFD05B61C2C2 +B9F2158FF806B504D8F4256A8A26071309DE213B55DC08BD1B7736E37FAAE154 +EEDC361EB417EECB1EE918BECA57231A7CB682134460003F1A5A5A0CCF2EE77A +8C6C959F1AF74D9E45BE2A43EF45353FE77BD3C10551C1AAED678E41C6F2F945 +062E9032C955D3A49948FA8B283F9616C67B088FCF961587B0A3CED1CC259FD2 +CDAE3923B1C25546EF9E4844CE241657CFC15800889EDCDD1EC8D267E3BEF2B9 +BD1DCBC691635A3B532B740EDEEFCB1072701698E132897E2C0D9520F34018CF +4C847B2A723DF0B8FFF546F5956C85784EF8986999149BF78996581277E43FE7 +9A4409A96954F8E6EDAB0134ACB5757F5F964150D8AD43EFF35A128AB3ED8A7B +9DFBEEBFAA9D6272D7CF76CC59447B8EBF376F0E8F0D179B3BE9EF837388F6ED +36F6E3AB3D64015D628A81A2EBEB2883B7BC71B9D26D7A7D228B06EAF48EDD31 +46FA23B7BE6D1340FFD5F2A2939AA1E3AD7FD9A3EC7289EA41E512008F4B95E5 +9FED4D04D94513B8DF20AE387A9B6A2EE41777802D8E66735F2C05DAD7583F6F +D415B6833A8CB7483D1EB9BE08859581D805810D39694196933275D8528BA5F8 +AA24E1D17ACA093C04233120F1FAD8844E3CF04C3BB2CED0BDCACCB364426560 +AEADB3D02CFAF79979EAFF971346AF84BAEDCDE7F0A0C4768840711B90AB14A2 +00FB4544CF055E222330C8793C7AC675DA0DED5742B659CE5F0102C8267FAC42 +4E70B57C834085731F5BB4543AB491B0F04EDA0F018B9DC2A6BA373CB182AA61 +A97D0D24443EB61FBD49CA65B593B06989747A3BA4FBCC9093E3E2CDE322BB2F +7304226C5CB5CD3015FA4CEA544AB7DED49AA97E9CFB7D6BE72491042F93507A +449500F7AC14B4A2379098B5D1DB92B4D6AB1C4BFB4748F9FE8D96F324584D62 +69883FF22A868A141457533E5BDF09E1752DAEF5A2E09304D4D90A5D691E3929 +8E0627BF57634E6EDF30CF232953E3E52E8A01C6C0A1D21E123D45F71AC92285 +E5EC8B0124114B9CDF773A4ADFA4F8FE62CA8837AE701412EE763E433650A315 +06BCE11BA8F919CEF49C9C622B4AF84ACEF9973BA4FCF7FC85DAE67DB56CF1E2 +09ACAC211D2B636D49AE7CC6C64B98AD9FFD598C067F187CAF2ACEAA94E09E30 +683CC6DE3F0898111AC3BB3948239249489DAF1CECBC89DB509BCE +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LINEW10 +%!PS-AdobeFont-1.1: LINEW10 1.001 +%%CreationDate: 1992 Oct 23 20:22:06 +%%RevisionDate: 2001 Jun 05 20:22:06 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LINEW10) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /LINEW10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 27 /a27 put +dup 45 /a45 put +dup 54 /a54 put +dup 63 /a63 put +readonly def +/FontBBox{-220 -220 1040 1040}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +497544391FABD08A483766E9B5C7ABA9A537C053A8ADC16DEBD8B5C9E1EDEB21 +E4E89B0945C0737B96F0194585BE0D9B958F1030EA84710C31971BA7E93777C2 +0658995DC8702442780303E948079822B9EE0C531A5CC49578EB9E683CB77495 +DF613FBDC4536BD7A90F044B7EEE6EACA2042539F62789EA39AA16433AC4BD0F +98AAA04894F5487C279D2766B50B23E16D7F1023E387F60757E6C80FAE85A8AD +149D104B38BABA49C58CCD52B719D635E892DCE74F3D283407537FE6CF45E192 +54BF678237D2B8B3C0AE474E96765078627EFAC8AA84DBF87784E5E755C587AB +BE50DF55D35CDD05D96F562153E2016C3D23ED27DEF2C3908BD0BE882E838796 +BA837E4B671E2CEC2471BC438FAFA0F4FA9D004C64F187F897B89212356640B3 +3661AB6C36FD6C98BB4FBCF5016D9C6ECC317E76CA0CB5E739017091C4F3BA9D +AA0AC0CA3DE976094AA0C0DCB079008241EC2D1CD368958277386F52D7EF4AD3 +581A6658E5F46DA384CAC13208485723CAA3BB78E33D485D545EE7D9197E98E2 +53937C88E0A691E696912A9CF4D608936E212C18E3A1A792B4255891642599B8 +BF60A177C86186C00E2E0220FB80A0EEBB1D115B275FD94CBF960E1705EE0C4B +6938170DF6725216E76A3BE36F23D1DD3530FDDB409E758352FB2EC5D2EF0265 +B48A2C566E252846ED6717686FD6E86946CE37C9A3493C521DF4EF527F87464A +5E36DAD61032A752C75175660A559CFA480FF4A25C4B14BC7B27B42314218445 +FD3DB330A46DDB3C8A9F386855F555961A476077CCDDC68A26C1097AAEEFF530 +BEE89FC2850256D81DD96003533789A77B01967B7D0485CAB1FCF1977988257A +0ACAE84A584F9424F39D2A31B1B8493F9991F4E01C0B6647A3A78B80EC6A0E25 +E6E3D2CA32C4C7389D7BBA57C12FC00B99594E3B7055A2E28E9E92976F49321E +39418AE9FFF387C11FC1D88287F4C521283666FBD0A7516F160B29A1CFB55C35 +CEE54B5D7AC47E7A6C375C5B99135E310E5ED13697F9851ED930F2F412A3CD4D +F379CB616448DD6DBECAA1E31682AFEB4C3717501D47CF4D7F73E29569991F79 +C8AE39FD330A405C3B78A986B36F0F44A365E7A7BC93FDCA330AF7E83B6ACB81 +1ABC7125005D32848E2EDF11B09DEFF84835CDC4BDB8BDF704DCC887D46D5103 +3A53331E5361C61521FA1C9EF48EAD7F694697257625753B9692017E07056933 +EEC2B12745507467FB8D215E88E5A9380E0A460F25633C9CBEF48EA0135BFD27 +2D4AEB7668A7512087063E9D516569D1AB04C29B03333D03547EE6BFB88197DC +25052A260F8CA613F356FEF1D54B51F3A6D87DBC5D60904C49D244FFC336F892 +97AB11ADB3F954122F49687AA5037D4BAB26913EE95E54F0159945638F77CF2E +2BF5505B977A88F15428BA611030589371675892AFC801206A33DD26CEE6AFD4 +3C82669E345D5FCD039C1DECEB790DD00C56463B4CAD236B3A6C702593FD +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LINE10 +%!PS-AdobeFont-1.1: LINE10 1.001 +%%CreationDate: 1992 Oct 23 20:22:05 +%%RevisionDate: 2001 Jun 05 20:22:05 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LINE10) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /LINE10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 27 /a27 put +dup 45 /a45 put +dup 54 /a54 put +dup 63 /a63 put +readonly def +/FontBBox{-150 -150 1020 1020}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +497544391FABD08A483766E9B5C7ABA9A537C053A8ADC16DEBD8B5C9E1EDEB21 +E4E89B0945C0737B96F0194585BE0D9B958F1030EA84710C31971BA7E93777C2 +0658995DC8702442780303E948079822B9EE0C531A5CC49578EB9E683CB77495 +DF613FBDC4536BD7A90F044B7EEE6EACA2042539F62789EA39AA16433AC4BD0F +98AAA04894F5487C279D2766B50B23E16D7F1023E387FA4165DF522DB290D390 +B669550A43638C3C9CC38C7667A22D27F9DB1542620110A8671B2713C8DB93D3 +4C500474AC190831F9C7441DC4A7C27EE88DAEF10D7AEE6FDB22E7625E802B4C +FCEE0DC79988734BDA39B9896B1833D4BEC4F91DB321F343F57B3FC5ECA13AEA +AB108165934BDE65D2EB5A62BD395ABA20F0389A1B71270649CE1A93B29040EB +B3166F9EBC3791671B6EDCEB171F3CCDAA90BBD5EE5042AAC2AD6D838F79E008 +43845E5FCF0B3D71E21543F491832420B45492BFE5D3E278268908D3CA704A48 +AF6C6954A03244409C49A178680D62BC6277BE6A8CF4DFFA69775BB8FCFE579F +0DFD00493CC18A38F7AA197A43E96F5986EB21F77B0C955332C87B18A5F72982 +E3D0B0554AE03D86FF10237036E2CBE514A9BFC5A4F5B2C9E5667EE2B64AB536 +766C45D847C52B75FCF57652200536319F09D0FCEA025A5F5CA61CD63812083D +CE11E82271251C41D0550CF754C13A32F847CC7ED53C14742D3C5AF8E412E542 +DAC233E8C9FA03A4ED4BB95A9B831AF45E02D31003517156A429F54B6E1B1727 +520DE349B22A26C73A2D3CCE0733F2E594DD8E091E2464A31B86C81CF3616399 +F042260B75E2F3010CC15E843A7F7388C01BA40AC4E4F1D50059A55BB5111089 +F167B796709EE54D544E1AF445A3E791EDC71A6D6F2F298A20014956D52138CE +FB138CE99299A8B41905FF9AB01CC58A773478EB89C036BD3F552AE99E75F2AB +712E4EF075F70AF9023B71BE2BFDBB7A7F16D5A307AF4857DBA61421ADFA1022 +8A26549AFC5E926D29195FE85B2E3C01EFB330D900B6A7FE4EA5AB8A0EA87E5D +CD0AE684E50A59FEDD85337F87E8112CEA3F1236D33D5475FC3C473B34F423D2 +18E9BD7905C7F638D080A7C87D681237674701DB7D874937C92A5766AB3D53FC +86C3B3D02964CD566127FD36EED5C9D2413BB626124E557A394FAC265E19DFA0 +CB28EDE6D30A2FE2D7CF5610EF919612948AFBA3DBDBE206510021065FB9E1DA +C733F7C1E2D97BAE9E4C81432C4283BA9DCC3CC9E43515CD9001306FD22C8EEB +EC175694CD7AAB61ED97092DD23E90EDAFD49026057E4890937B0C8C1FD883B7 +6BD6BD46C8E1E8B8932624E866182266AD0F2B48799CBDB75740EA228B54CB0E +91AEAF0B47DAD7E20D073310870A011BAF598AFEAFD78189D389BFC646C74109 +E283A7493D4AF0078D7EBEC26FB7F170DECA32FA84461E7A2FD98884AFA22112 +10BE6EE680666313358632904C34E1936A14E9295B62CDC104 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LCIRCLE10 +%!PS-AdobeFont-1.1: LCIRCLE10 1.001 +%%CreationDate: 1992 Oct 23 20:21:59 +%%RevisionDate: 2001 Jun 05 20:21:59 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LCIRCLE10) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /LCIRCLE10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 24 /a24 put +dup 26 /a26 put +dup 27 /a27 put +dup 32 /a32 put +dup 33 /a33 put +dup 34 /a34 put +dup 35 /a35 put +dup 114 /a114 put +readonly def +/FontBBox{-2000 -2000 2040 2040}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +497544391FABD08A483766E9B5C7ABA9A537C053A8ADC16DEBD8B5C9E1EDEB21 +E4E89B0945C0737B96F0194585BE0D9B958F1030EA84710C31971BA7E93777C2 +0658995DC8702442780303E948079822B9EE0C531A5CC49578EB9E683CB77495 +DF613FBDC4536BD7A90F044B7EEE6EACA2042539F62789EA39AA16433AC4BD0F +98AAA04894F5487C279D2766B50B23E16D7F1023E387FA4165DF522DB290D390 +B669550A43638C3C9CC38C7667A22D27F9DB1542620110A8671B2713C8DB93D3 +4C500474AC190831F9C7441DC4A7C27EE88DAEF10D7AEE6FDB22E7625E802B4C +FCEE0DC79988734BDA39B9896B1833D4BEC4F91DB321F343F57B3FC5ECA13AEA +AB108165934BDE65D2EB5A62BD395AB84402D4A2703E3DC3BEC860D5A4EB785A +1D8D0D1AE7D31BFCD3ABE3E9779B6BC28D93CFCFD8461032D969F1C9A53A6DCA +321062C6750132DD47444F208275E5000794E261F842CA01FD5DCA6F8C92C7EA +E2D8D66ADB1194BD8AC59E9191895A2FCA88F32DA2B27717F18C258EE2402C69 +5655EE4D15708452687828A90653E9FC2707F1E9ACA413DAD6E5EE607F6DCB97 +09B7195203A395C97CCC7390F38D69AEC6323A0AAE0A05958B7987701BBD6497 +F95D8653699C39F179820FB8C2DBD7A4E7EDF03E83F7536946A3F532650AC5CD +48C10BA3AB8F67915EAC0053592CA317E0A8EFD1322398DB7D9B32ECE97791A0 +0B49839C58E426531833D30F153863E92A79516C2878AEE6916F0FA78F94714E +D709C10DB24955FC0DE6769D34E4E1DB2ADED1775C5A5A6313C93B6A0195311B +4A334B4D9B914EA59194239AAD1358BC269B8CBD35A7685ACB29282D46440A38 +083B9CB2258BB81E2489B5FBF551AEA1330D4DF70E9E650964A369CA2F77DEBD +0CDBCECDD2DFE4EE609FBBC60FEEEB5B8FA0C5DE573D01F66FC2DCE43C59D271 +DE4E4A1D4F7B40829C8AFDFEBB82FA488594D463EC07C10B7CCDE49905AF4548 +661F6DAF2100FABC6C6C3B9FBE930B52938F62EDBA363D5459F4F3B3C88F8A0B +307986D5B5335831F4E056065898A91CFCDC045E3D42547F2E48823892193319 +5EE7A40F554AEFF4633FF20604B551517BB0864CE5E026E1993BD62AFE305B8A +E1AAD775B8A43AC253F0595790C870E673FBFA6632344346CC167C3F483FBFD4 +AE355BCD70D140D0F68DAF0652DD24559D22D450C8CD93B098B0A36C15749BA5 +10DE7C6042ED97289E7FC10496AB5A52CA2D63D6587D62F0AFB3BECDA71543A3 +92D76CDCDF1255604CAA309A3A68D742A8236D4BB6C642AD968251C4A5E2A8EB +3468883996D08DDBD6EECAC0F8118E49BC1E546DC873F1C6EE34EE73D2A7562D +6D5F480A66C7E499A0FFCBF6D576774A6D09FD7CA949759FD020584E1B11651B +6467CC3E3E820C48A7E8BB8D5791959EBB1807C3930E0258AF3F94FD09F0FDB8 +1FA475069536022D94A5F955133EE7073F09618004191EF3F3C229056F90F9F3 +F2C4C1066ABD5AEEF32DA669EC69E8948C78627A3F642E7B87DD4A24938030CB +BBBEC79625A309520BF01F8C0437021CDCEB7D7CD3D40466018E1D047E02617E +AD4B817AE15F9CCAB54D42B6889851AD43AC8242FB150C8690784D4DAEF3BD5F +0C0926D2EFC7C583A1C25D3AF881BAD3AC1F8915682DBB1A2484EC312A20411A +131F2D583F33F44D221858ABFB2332F2A6B45B6534AADF25D623AEDBE7078AEC +A4867B3BDFF10BF80226AA3F69BF8983C8CD040E99343243200F23D2D6452808 +31EF23568536C7F8BA3F5A10FB37FD0EB1A4BB7E067D3838CE4761D2C4ACB1DD +53972F32D30B6027A89447D44035C935870B95A08A101A2DBB4E314A0EAF966A +8A19520CA6F062C475F3540635C74747D6978F14F136416D760860F0C7FC066B +AA68F64A016F7DF6ED638E291C45C6C9401330CAD6A495AD8110F0005357FB5D +8027CBEBAA40C28F35D5E0F9C195F7DD67ADE1A89D018F15D18BD4E65B827017 +29DBC1DF2F48CB49FB0DBB8A9B834B +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSY8 +%!PS-AdobeFont-1.1: CMSY8 1.0 +%%CreationDate: 1991 Aug 15 07:22:10 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY8) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY8 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 102 /braceleft put +dup 103 /braceright put +readonly def +/FontBBox{-30 -955 1185 779}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBB2A7C1B5D8E7E8AA0 +5B10EA43D6A8ED61AF5B23D49920D8F79DAB6A59062134D84AC0100187A6CD1F +80F5DDD9D222ACB1C23326A7656A635C4A241CCD32CBFDF8363206B8AA36E107 +1477F5496111E055C7491002AFF272E46ECC46422F0380D093284870022523FB +DA1716CC4F2E2CCAD5F173FCBE6EDDB874AD255CD5E5C0F86214393FCB5F5C20 +9C3C2BB5886E36FC3CCC21483C3AC193485A46E9D22BD7201894E4D45ADD9BF1 +CC5CF6A5010B5654AC0BE0DA903DB563B13840BA3015F72E51E3BC80156388BA +F83C7D393392BCBC227771CDCB976E93302530FA3F4BEF341997D4302A48384A +CEFFC1559BC244835D66BBD96C8A7AA401277C8B7017EA120CCBEF1CD6E00F0D +22EFBE943B7863A7FDB62070671D966D5A13F9DE8E576861C9FE1BDB92A8BA02 +A44BAA2E1461DA7AA97AC9072EC691F74C0E1C03BD3CBC39870CF40AE25F6A80 +0D4B051AC8EB2274DB4856C1CA62C55B122A97CFD0AAA8B37F8D7DB642A58280 +CA5AF2B4BF2207AF703F8902A8BE19BFD9BBEECD63D362F819E71F6A02288C08 +050A7503B4C8BB5CEB75C33C47F25C641F119E55BBBC4AFFEFC6F5C138B24041 +DC0583260A33E4F75D0F14E5CCCA41E94233C670D1884554F334AA0A6C736077 +83445B1DDC9185AC8115B4F590ACDE1D473A52C89AED7F77DCBD773D8C3EADF7 +166D328526B01FBA4BEEBCF52E4B39490A3B3766730036ECFB481D255E317DF4 +79432A95C4F1125EB9903AA9FE1CAC8003EF0DDA0851215036449C3463822D0C +6DCBF375FE062BCD746000DCA10035C3A3FD8371E83A4491256816081D9CE0C2 +8A645903FB0DAEF45CBDEE53BC6391F527A92AE5DC2F6C1555711280A7EF311F +8BE208326B1E2D31D01387DCC5EB47808CF15D610D3D0EBC48EEB2905A86E2F7 +45804E51470A75A82FD5D9EE32BABDAB67F4C8F30E845BBB8FD4DDD885ED613B +997D63DF0D6C5BBBBF249DE7CF3DE605B3EBE10CD5949B4D092860A4D35D8BF7 +BA9F53639E5CB4B0A8D044C5A606E7D9DC3AD3DD15ADFB6BACAAAEFD9ABEF05E +1E0F2BCBD125A3D4F52634EF6C +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSY10 +%!PS-AdobeFont-1.1: CMSY10 1.0 +%%CreationDate: 1991 Aug 15 07:20:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /minus put +readonly def +/FontBBox{-29 -960 1116 775}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A +27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF +5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 +0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 +DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A +71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 +4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C +515DB70A8D4F6146FE068DC1E5DE8BC5703711DA090312BA3FC00A08C453C609 +C627A8B1550654AD5E22C5F3F3CC8C1C0A6C7ADDAB55016A76EC46213FD9BAAF +03F7A5FD261BF647FCA5049118033F809370A84AC3ADA3D5BE032CBB494D7851 +A6242E785CCC20D81FC5EE7871F1E588DA3E31BD321C67142C5D76BC6AC708DF +C21616B4CC92F0F8B92BD37A4AB83E066D1245FAD89B480CB0AC192D4CAFA6AD +241BD8DF7AD566A2022FBC67364AB89F33608554113D210FE5D27F8FB1B2B78A +F22EC999DBAAFC9C60017101D5FB2A3B6E2BF4BE47B8E5E4662B8C41AB471DFC +A31EE1 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSY7 +%!PS-AdobeFont-1.1: CMSY7 1.0 +%%CreationDate: 1991 Aug 15 07:21:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY7) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /minus put +readonly def +/FontBBox{-15 -951 1252 782}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D251491EBF65A98C9FE2B1CF8D725A70281949 +8F4AFFE638BBA6B12386C7F32BA350D62EA218D5B24EE612C2C20F43CD3BFD0D +F02B185B692D7B27BEC7290EEFDCF92F95DDEB507068DE0B0B0351E3ECB8E443 +E611BE0A41A1F8C89C3BC16B352C3443AB6F665EAC5E0CC4229DECFC58E15765 +424C919C273E7FA240BE7B2E951AB789D127625BBCB7033E005050EB2E12B1C8 +E5F3AD1F44A71957AD2CC53D917BFD09235601155886EE36D0C3DD6E7AA2EF9C +C402C77FF1549E609A711FC3C211E64E8F263D60A57E9F2B47E3480B978AAF63 +868AEA25DA3D5413467B76D2F02F8097D2841EDA6677731A6ACFEC0BABF1016A +089B2D24F47B9D66B677886B90AA787AD865B5F78EE434AA47B7B0F1244A4215 +251FDCC670FD01A92226E2C667C2344298D001575BDF782D969D836ECA11E229 +C7A17E28F70F9B17273FF243452DA885068A8BCB5165534F3996CBD8D97307DB +593D606C197AFC259E691C242F6E1E651575B6852AAD54567905E6F542DCA109 +7F6DA24DC9112FBF7CE48B387953787B2BCB841873AED2DFA83339D39E14F4DD +3A51584527AC3A93630D121E2AE0C89D9C3F2FFA767743B1276BE1E648041010 +0FD510F1A8 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI7 +%!PS-AdobeFont-1.1: CMMI7 1.100 +%%CreationDate: 1996 Jul 23 07:53:53 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI7) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 59 /comma put +dup 97 /a put +dup 105 /i put +readonly def +/FontBBox{0 -250 1171 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D77639DF1232A4D6233A9CAF69B151DFD33F +C0962EAC6E3EBFB8AD256A3C654EAAF9A50C51BC6FA90B61B60401C235AFAB7B +B078D20B4B8A6D7F0300CF694E6956FF9C29C84FCC5C9E8890AA56B1BC60E868 +DA8488AC4435E6B5CE34EA88E904D5C978514D7E476BF8971D419363125D4811 +4D886EDDDCDDA8A6B0FDA5CF0603EA9FA5D4393BEBB26E1AB11C2D74FFA6FEE3 +FAFBC6F05B801C1C3276B11080F5023902B56593F3F6B1F37997038F36B9E3AB +76C2E97E1F492D27A8E99F3E947A47166D0D0D063E4E6A9B535DC9F1BED129C5 +123775D5D68787A58C93009FD5DA55B19511B95168C83429BD2D878207C39770 +012318EA7AA39900C97B9D3859E3D0B04750B8390BF1F1BC29DC22BCAD50ECC6 +A3C633D0937A59E859E5185AF9F56704708D5F1C50F78F43DFAC43C4E7DC9413 +44CEFE43279AFD3C167C942889A352F2FF806C2FF8B3EB4908D50778AA58CFFC +4D1B14597A06A994ED8414BBE8B26E74D49F6CF54176B7297CDA112A69518050 +01337CBA5478EB984CDD22020DAED9CA8311C33FBCC84177F5CE870E709FC608 +D28B3A7208EFF72988C136142CE79B4E9C7B3FE588E9824ABC6F04D141E589B3 +914A73A42801305439862414F893D5B6C327A7EE2730DEDE6A1597B09C258F05 +261BC634F64C9F8477CD51634BA648FC70F659C90DC042C0D6B68CD1DF36D615 +24F362B85A58D65A8E6DFD583EF9A79A428F2390A0B5398EEB78F4B5A89D9AD2 +A517E0361749554ABD6547072398FFDD863E40501C316F28FDDF8B550FF8D663 +9843D0BEA42289F85BD844891DB42EC7C51229D33EE7E83B1290404C799B8E8C +889787CDC7AA8BEF7021B3C18A0A61A68CCEA80153A2E09D2E04ACE20306E501 +8CEECA860C3B2609D8785ED2C660E2777EA960ED94D28671B564A8AC85E362A8 +4BADC8FD99D47B66E2D64A8511225459A51B6B411E5205A28723D7C2B6753582 +A6D6A7A1A3F3519391F0A5DC76613810CF1D4FACF987E5ECB26C9B5D06C1F132 +1FDC76DD50C6E853DD21CF8646CFF217214B8DC0845821388C85A0E0A94AA20A +B9FF39586D4AF6CF86F3945C5C699F59E2DEEBBF9EB318E86D57DA4EDEE69A6A +5BDE5847570D4C6F1DD7A7E08A4DC932FDE320FBE0609A7889CC0DD2C982B5B9 +4237940CA4DF113D2174AD8ADF632B72D9208A36A60B9BAE2F0144B40EC76367 +3592BA37CDB5E19C3978A94A695F1E7D59F5D22D63EBC930A30076FC8D25637E +389E725578D02CFD41C0214F4F835D2F0B05F7E63D4DA50A9D42C235DCC91C21 +F14A947FA7B8CD7CEEC5C0370D8619BE1941F9B8FA079B21B596F3BE90E1C9BC +95F62B97009DA3905837583C002CDBCC955D687F1696A9E1F4CFC2F16405B048 +59AE381D6304A500CB183A3EEBF548E7D29B25D74A4A853E4BF1E443C1A0E1E3 +C72873A2194BC4A77EF47227A1D2E7E53EF1DAA1D9EA7FBB81F3BE0096C56647 +1EE33CB7D469AA2BAE35E8D1B282F2644E6F8567432158A6D5974493BD25398D +40A1540FCEE52426BFDFB14CAC003CDD2986CA807ADCC5E49ECEB0A0077FF72E +81F5FFD9C1BE1356E5321523BA9483C068C796EF9CC7EFA041976799557C3C3D +4904A5F4861104ACA3C7F37BA10EB63ED467A8B9B1208A6E63D48F553AC0B323 +6DE4B2E58168AE7D031484CE1A30559EF373C5F27F57AB93F7901ED4A382A150 +C74C166DF19C4EC736F3FA95B0FEA6A1C5F616C5369A92721AC951D4E037C2F3 +8EF1C90AEB +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR7 +%!PS-AdobeFont-1.1: CMR7 1.0 +%%CreationDate: 1991 Aug 20 16:39:21 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR7) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 43 /plus put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 55 /seven put +dup 61 /equal put +readonly def +/FontBBox{-27 -250 1122 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D +E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8 +47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C +8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4 +78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486 +1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E +01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B +C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0 +F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30 +8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF +A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7 +455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2 +9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105 +EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B +52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97 +563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F +0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB +7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1 +0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4 +1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A47CD4FFE5D78 +D8A2086B7832F31FAFBCE07449C2DF202DEF9FC7CEAB4028A0FB788150A07C01 +D06A674C0E9FFCCCCF9D8E5F0D01A69402622894D12C1F675257EE11E4645236 +8EC81C2F2CE06B00CCB14868E8B56F2F030C58FF8CD99977A16B30DF54CED890 +6233C5DC2CECB317276E26258C30FB3784C3EA7BF0D42B5467D1464A673A2745 +BEB09F62635AA2A18E0FB226B7C1CBB5E65C8BD0DC206F1193EEE016CEAE7218 +F3D275E921CA71ECC6AB3F62B3B9AFDAF722729FCC68770AD30755ECF1631776 +E05F1AE202229D3D236EACCA4B9E83238556A0B1BD4CC6B36F099386715E1C9F +AF33A3145F1FB901D3B599EF23E2ECDCFC9ED81A735F3807103DE90A6642CF96 +028CF5BD8F7A04C00819E2E6F322739540D3870343CB5B39C7ED68118F333757 +5506A675DAECCF35C60A1117DDB1F93A3C8C81B191C448B97E6F6EBB051D45CE +42F601CB42E38505C48CA7FB58EEACBF1149F97079E4E907301A69E055E7195E +BF14E05A1DFFCE96E93BD0FB1BE6BC613E24A147EDAE70B7C607CD99CB0D26D7 +0F75B64AA0BB773682726F9ECA2EB0A8FC9645A51A47C312797D3DAE3297B822 +48F8A312D8CB41E0286B4CB5D33B472CEFFB187334ED1D19612C54956F8F8F74 +71AA08249349A42692CCFD0CA8264791586B3FB43322242D29787127D528607D +AFABA475F51EE5957FD253B461BD287A8833E14D70D3898203202717ABF07F95 +84F0CACA5561FA28F43FE398506C510C31B5C360504F9290546EB51CDC680EE6 +4BD5A1D0124630222E12ED2246F0126029D663A241FD9133BB45CE01D5A17BEF +84FB68F1E0D53743AB920D8FA7DFD7A0E277AD4D21370D694A3B6497644D7BC6 +E5ADC73C819A0F7C10D9A9F18989D1E1120A3116D23B46FE38043CABBC616F4B +756A1EA74C4F7A76878379092818666BC1BAC7446B4CD07631315AD0D1B3B8E9 +11B516348F2C640C1BA713EF67AA942601F05B17B735CAD4AD73179D5AF9519A +C076FA154007B4A7F8C82EE14F8B9B4E86A9EFB41525B371AB1D896B1334BEE0 +388B23051401AEBA580D75F5E6B42C5804253E1124D473BD9B5F304AC904D352 +7C994DFB6648E0502AD5410742A1EDE3093A82E828691654DB2ABE3D23B7D29F +42AF77DC7A6DA2F9F4E88FEE5C7D070AF352A9023B4D36BF0B7F927B64530D2D +994AC5FA571F611FF1C2A9597CB738F08F955001280F203E9802CAC7D9CCCD58 +863234DF777F2DB93E88266B27CFD364A3D4B514DA6DE00F0F7734EB108D1843 +ED2518A2E76FA296EB0156E397A2AAB68E79B937AD2BEE3105C9D52E38D9CAAC +1852F82B3C2A3CBC9FDC721E9D3283FE016157375C7D3058668EA9150F7F3F44 +2D8D13DD11EC661E095CFB39A4FD36E7EABD5D4BB61945E4328E9B2E3719BE62 +9DA6BFFFA2C96835D6CD465F88C20A849BDBC10331E56F68FC831D4B7C483F93 +3072AC40ABFF65556ED00843BC66D633ACCCF55187C07057FBA6408B55DEB19E +05B94C9C42C4A0A34485A9A38C9C156BB5C2509DA87C259650858699ABD8CCE9 +87B106B70CB84940EBBADC7556025E244F2CC2FA +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMEX10 +%!PS-AdobeFont-1.1: CMEX10 1.00 +%%CreationDate: 1992 Jul 23 21:22:48 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMEX10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMEX10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 20 /bracketleftbigg put +dup 21 /bracketrightbigg put +dup 32 /parenleftBigg put +dup 33 /parenrightBigg put +dup 80 /summationtext put +readonly def +/FontBBox{-24 -2960 1454 772}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF5B8CAC6A7BEB5D02276E511FFAF2AE11910 +DE076F24311D94D07CACC323F360887F1EA11BDDA7927FF3325986FDB0ABDFC8 +8E4B40E7988921D551EC0867EBCA44C05657F0DC913E7B3004A5F3E1337B6987 +FEBC45F989C8DC6DC0AD577E903F05D0D54208A0AE7F28C734F130C133B48422 +BED48639A2B74E4C08F2E710E24A99F347E0F4394CE64EACB549576E89044E52 +EABE595BC964156D9D8C2BAB0F49664E951D7C1A3D1789C47F03C7051A63D5E8 +DF04FAAC47351E82CAE0794AA9692C6452688A74A7A6A7AD09B8A9783C235EC1 +EA2156261B8FB331827145DE315B6EC1B3D8B67B3323F761EAF4C223BB214C4C +6B062D1B281F5041D068319F4911058376D8EFBA59884BA3318C5BC95684F281 +E0591BC0D1B2A4592A137FF301610019B8AC46AE6E48BC091E888E4487688350 +E9AD5074EE4848271CE4ACC38D8CBC8F3DB32813DDD5B341AF9A6601281ABA38 +4A978B98483A63FCC458D0E3BCE6FD830E7E09B0DB987A6B63B74638FC9F21A5 +8C68479E1A85225670D79CDDE5AC0B77F5A994CA700B5F0FF1F97FC63EFDE023 +8135F04A9D20C31998B12AE06676C362141AAAA395CDEF0A49E0141D335965F2 +FB4198499799CECCC8AA5D255264784CD30A3E8295888EFBC2060ADDD7BAC45A +EEEECDFF7A47A88E69D84C9E572616C1AC69A34B5F0D0DE8EE4EDF9F4ADE0387 +680924D8D5B73EF04EAD7F45977CA8AD73D4DD45DE1966A3B8251C0386164C35 +5880DD2609C80E96D1AB861C9259748E98F6711D4E241A269ED51FF328344664 +3AF9F18DCE671611DB2F5D3EA77EE734D2BED623F973E6840B8DAD1E2C3C2666 +DD4DD1C1CC71EF3BE29E7C9EC47F20088C52CAEC511F532AA38EA262D7F21604 +53A8814BC9D3482F5488A9B7EF0E07CECB5D1765F7CD60783D511382F2076038 +EC078376A799AE7D7A65790775E52AE173C026C03FBB84439DA26AC9A9F86587 +82179141E89F8B1F13580C3D53CE8A6AD55129149E72AC871E1473958543975C +6E9207F34DC1DBC269873A43F2D558D361A7FE23B5E20503499726EC5E5D2871 +2ECE403F04416E65391741B8C68483F93BAC92D26FF5EF49DAE60D468F81E03B +CC41DF5200ABA9E94F165F535B09B495C45096445971C6B1F023E3916FD8C96E +5D484D9CFD0B446D94C0A53B5EF8BB20D1721CFEDB3407DD6EA6C09F4F8EB886 +DD97EEF273E9C2D25BF4E56C8E6B3E047EA69C375C980AD7FCD06EB6F7A707B1 +BB18DD5F5F5846069FB1F99DF99AB77D94B2F820C162EF397DF57B472538CB6F +182752C320F8C95A3D66B425D168FE953D2EDAD3266DB3C63CCC473068D4A7CC +2203368C5577D006AE958E5E1C175091D33856E4C0121DAC7632E297D306B12C +A395851BF91427E91781F72489154D81F2EBA26BBB9CC4AB22902B64A899B5B4 +91EC977AC91D557285F4CAA3402AD8374D63E85FD7E3A97B3ACAAC2544A5E457 +87D58EF5EA937F006D5FBC8858341065D471176E4D48DC99F9D748F3AF809D8C +03717EECA2BEF2D9AD1F6BC052895337838AE56D73B997408A99A7E942D04D15 +689C519EB1BF6EE15BC28279091FF428A412E7883D19BA86F9E2153104728A2D +1C0028788EA424CD688B780463696DC7094F44A8E56680EC9254DB12696D4D4E +5EEFC50AC088C35B1D6A8E6E9BB8FA7ECE695B0D5444900A12E9EC534E322E1E +D7455EE084477F0B875179C3114EBDB98E2F94C8C6D16E71C057612DF64DCC40 +4F152FAF5F8A258A465421362912D0B1CD03EE86125BE1B04F1BCADE0F48A5C3 +1465CAFD2E3805FE8D7273B8C531C20B7220EEE58694552062990231F694A0C9 +6FE5ADA173CB0B69A689847B96A064FF3FE4078FF1DE4553984FB926A37EA705 +AE71E27C1BC470A32C8FEF3EE4B2C43CC37CF12367B14AE661EDE6FFB9C20532 +01CDA9E19D9322D6D2A22EAA68A266AED711ABB7E06528E0D7A3D7922E56C29E +55BF4200944565E8E302C0AB34F72BC429B8DF4741499E5B2C8BF473E85DF62E +48F722769EC59D2BB1B5C23489B815A5859D12EBB1F2A72F3040EB +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR10 +%!PS-AdobeFont-1.1: CMR10 1.00B +%%CreationDate: 1992 Feb 19 19:54:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 52 /four put +dup 54 /six put +dup 55 /seven put +dup 61 /equal put +readonly def +/FontBBox{-251 -250 1009 969}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 +87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F +D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 +92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C +295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 +409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C +4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF +2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E +0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E +B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 +24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B +43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF +D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 +5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC +96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 +7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3901F92CC2EC9BC842 +5EE578CF06846C7078E026DFCB18AD4D78023652F0165DE17C183E43752132BB +19F361414774D5C13AD718B01F47E61745009D823C3996FB208C3A9D4B4F116E +4D38E56725461BBA1FE17CDC27CD99AC7D748CF7750CA2C6E1EC5E4746AC85F5 +E8274DA59750A144AD5AEBE6C9A7CE843BD6837FE2A88078124AA1A94EFC1C50 +B811EAEB2679AD57294AB13E45AEEB8C6EA105696E341E4C14ECF573EEBB83E6 +F9DE39BD6CC376158231CA2A83D91F721ABD116A40698F26610853E7FD075472 +ED40CCE32031FCFAE2737B412807F7C9E6494D0B73B7AB13AFD20D5219A71562 +12A7B57DD9965B15AFB38BEDA28D35D73282D4F1F9A15C4403B7C69C7E80DF54 +C112D7813F7271A5474438A7CC380735F029CFDF4C0C30C3901A7E30F8B3B017 +B1A663CC9481C79B903806F30AF37522828FD5DE3EC220C719B63A90FB3CE72D +AFC207F82CCD8250F4BA04D50D9B6D7AB78E87B456016CBC6273C129F6FBBF8B +E0110ED803D94F55FCD6F5A81F5BDC9CFBBF7D2C5DE7842D72E7D6DB5E4CC7B1 +0FC6DCDCF41556C3BFE5E2EBEB423FB0BFCDFF7F0930304047C29F67368325C3 +BA8815E47A90C5F149FE37618E30A9ABE6FAF8644A1BA737BEABC99ECFAE98A3 +74E11C3C87971EA3AEFACE9E25179B67B1D19A71241E23F55D1FE4879967913F +B679B98C6E9DCE63040F482A16253A09E74DC1A05FDB08C557D431D555FD688B +44C00601B8B43A8C8E2063D24AF1D8EFFAB2CD91BAE023A7FBAE39A4CAA664EC +AD0C0FAFB280B100C427881F8EBF4F8C03309D45F627F1241AB154E914F4BDD8 +DC81BC3D3B569637D3B28D1A6DCF92B17109177E18A3A9DEC32ED64719174F09 +F4945870BB984DF92073DCD619FD35C72E27AC107C62DE06BF7F27249958B6E6 +ADC6402CD366B2362BA3A2B867138B5DDC05566EB295A57D7249928E3AF1E318 +C1CA66E03D143AE09CB213C78B41FFD19422E09037BA93B53398BCBEF05CEFC1 +F10178357B0257D4FCA684100BB9F41720FEDFDD87C0DF34072035954E71D12E +B50116BD6C7417C9D4F88D0A30BB0441D1DCD172361BE048B14BB44534C209EC +3FEE42B7D20CAD2525313BD5009CDF8F4E62E21EEA094A24EE9DD135DD4D9DF1 +3E50027BE32B0B238C56FF8EA3D8BD01AE893A42D7420271228A6967FE708216 +D67FC7AEAE869DF6D4B2D240D426CF00A19A28295FC25D43E690A90ED3C4DE0E +0138A6C80E4808490134D2D460FD752D51B6074064E05085527C2DF8D454D1EF +119890298C63AC49AE079B447D41457DE8F5B5E5FA2776A4FD743860CC7F031F +B0BE0C179D587D820EABABA2418D900D8DB0857ADAE3CFC66827EC5659588C8A +2DE053EF8095246F68465BB4B15AD6E874146C4B531E5BB4BC1336BEFFF00C7E +36707F9B9CC6D50BDF9B3B51BCD4D753A07306683AB726AB60196C3271091DF8 +D844BB3491CC5DAF09E0729F23ABA8C955BC6BCE41750A08931E1E0C1DE1F831 +EF7E62091008BCBAC673AEEB3E5BE063F291862154636CA1A6E2F56F005259B9 +DE447FEA11AB2FFF996EC9E96008D05D6ABFC0A6A7741CC21C720D97FF9190B8 +967849B5A90B57B6D0002574CDF5F57125C51516A1ECD47FEFD5DDBA01B228F7 +81ACE820AA6AA8726E345CDC5389EBC74CDE1E92F3556ADC03946AE4149C1DA0 +4E4431209ED0F3BB429CB8B7E4B45FF09F8CDFF144FFF8347448DB67CF236F73 +F18D913F88F7BF546A14756FB067C2038208E23A99AE10155981DAF13C262A50 +78D4E58A9A59BF71C69EDA8D560FF93AA99BAFD51EB50EE555BAA89DBA9680BD +2839101D613FB26DB04A7C0648D72883AB4486362107A86B61AADC6D184EB0AC +E5F195C6D5FD5F71D95558A62AA8767E5883690743BA86FA6D97912458C1967B +F6A02F69C896401E85142D248E2C0B959CBF82732ACF63515DCE2A454C00ECAB +5D7A74674A4AB84DC9E166FFBD46379AF9034F36D53EB398F2884FEF10D20512 +53E0939051501B59D199B288EF80418A650C215F7A329AAA92ACA64B87D4C8C8 +DD1DDC389F3BF0A295E67FFCE140E59E350B07A3EBC663B1EF5976C8F1FA3C15 +58C7C8DBD7900DB231BF0874082DAB39C0BD53FED49336F5EBB0AB67247B0359 +7CFA4D56D73AF2F9A0AEC27E570CE83C4DF2C2583C24445E9955E29B99899DC8 +EAF914F767A4AFD39FD61E3C40F8A37E2C9519C7ED15E0F922 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI10 +%!PS-AdobeFont-1.1: CMMI10 1.100 +%%CreationDate: 1996 Jul 23 07:53:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /Gamma put +dup 9 /Psi put +dup 10 /Omega put +dup 13 /gamma put +dup 32 /psi put +dup 59 /comma put +dup 73 /I put +dup 97 /a put +dup 127 /tie put +readonly def +/FontBBox{-32 -250 1048 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 +990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E +6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB +DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 +59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 +D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF +8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 +6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 +1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE +03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 +95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 +74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 +3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 +47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 +AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 +42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 +40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 +B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 +95601766758C197F327101A9C9BF396ED625E27A7791ADD341F284AE0094B0FA +AF3771EC218AD799F17E51F1D165BAB43AC03DDC05E9960E8F55A678D087125A +011E7463DB232C8E71A669156185B07C2F4AEE85C97621BB359EE50438911BE5 +F5E489524DD5BDDFD94DCC45CDD5CADF5804CF15027DFD5202CE70A4B325847B +D93278A1C8701C3885F69918CB87CEBB1B03074C4F8B112742C1E276E51717D5 +1C1AE6EA74D8E5E88C0F3132E480887B8757B6955E646E245A8724D853053882 +F7A63D624A777C1FF06EF84908E4AD90BB4181E97942870D2B2083A6E96E5EEA +96E8B7DDF401E0111DCCB062BD4248ACC44B91FB0BE28CA2E186AFE6EFE018C2 +54C8A55F7D1764558FBA7D02D316C7DC14BBD385D0FE932FF128320A787F1B59 +06336F751E1A1287BC7CA3E7836C1B13536E834484B56D68E6AA4A6D9557D7E7 +7B86906D9AE83708C4275C1DE5745843D3742CF9C1523214FE494EDB27991A04 +0CCE280C058B540DB07B57104F5065203EF22D5BF1E1FBB7CFB8A405F4B1EC0A +B4D62C3272D58F29DF1A0E11BD00B40B91EE914EFFFA849D8761526CB5E6A8FE +39D6C2E4BFC42D2299C0CEEC0917FEF69450595CF3963AAB28F3936B14814C84 +7ECBB3E02617BE47E46D09197280C2C3DE4E5581D4784079DDF75F3EFAB6C7E1 +E2581C87A7AAE944D403035CD72D6F9ABB170420C1BEA525F96E6C32F14C05FB +239B90E8B293431985E94890E5EC33530D3C28F0552B1BC50DD6A323F5AF23B6 +0B642BF66D7B9724E40A88763755C023FEB0D86DF4B2889FD9D9624CD1FC25A5 +6542815B11A0425C3DB850CF3DF10A01F4043506ED8168ED041008361AEF5F7B +FF64C14F876518BB1966739C2EBA7D13DBACDB62097BA9559233FEAB7F24CE43 +04BA24D8C2811BE126C10D95E865854E909AF53DD14288BED1BCE1474F14355C +DDC981D19F334F6022F526BAAB962C21280F2DD576E11C6384C827021A7BC9EC +031EDBB67FF653DDA96D971D3ABD3DAC46658D4E2E82784EE1288845ED640213 +9FC049A189FF16D4B32388D8D8B34308406A48B3512560DBECB7EBFE302BAE32 +B662ECB3688FA84330893FF7E388C728A0D1D4ED4200EE738242F69EA3C05C4C +FFFEAD7982C9D38A073026BEF2FF507963B324DB20BDC3EE0CB8970C4865BADD +FFD548C3B94CF328D0CAA5B09EED935060620AE1EB5F992A20C9C28368D597FB +E87D90431DD8B15F501F0F5728568C4B56AF1EB8488DD00F51458EC9BF913F50 +9B764A8806B7E355FBAD1371170D88F6E16CAF36DE3D60FA0D6EE2A11B99498E +75EACB5D36CD5B661BFDD4566540B5DE776BB533751DB730F22FEEE7952F9994 +384B9467EF83E8F102CDC890DEC2D3FF2CDBF1321F8C95BA20D04032F4597DE3 +5B32A143345838A45E59D1BBF86EF551227C2FEAEA6BBB1E7274AB8501C7876E +C469FDAA6D3276CA2AE24B5FCCBD20F035DA8FDF58494291176427DD7FD3963E +7523657694EFF0753E851633296789C206A13A4025EB4CB824B440124985F55E +1E2D1B05BB91B9FEBD9F817611F6C308A20CE9195985A03811E49FD546EC4B61 +E88333C71137EBD177F737DCBDC8B1CB794D3425C0254ADB1FB20E6FBF9B2389 +DF4DCD721EE927CCD7A50DE9ABA53D5BA0212AB4ADAEA63B32D7F34756D2916E +9393B97883C3A1D47E33C9267CCC878FF4D6F92F868FA0AD2C91A58F504D1355 +03B32C1A06E0AB06958E0756F7269608C355F3B413F0020261A289AC0B60DD7F +A48C214F4D6775CD1A775C16F570E8A94FC39DF8A6067DF699450EE6FAB0838B +65FDDB44856B7F5EF99579477AE35AB0962D5AF70E39A87510D634DFEC3E2B6C +8305DAD403333791562F81283355B9FE2CF797EF92AD7112B3A6B52F6F4DBE94 +0AE39F242579B696D2F34E48E5F3E3338D46D03FE9FC5326FF68C72464407D74 +CFF0577EC2A259B26CD2D949603883F58482E29294A01044ACE5368D50B1BEF8 +6D2A57965BF1D721569383AD4783C0CD165733B17330BEAE252E48FE2E197A2C +75B0385136797B7CE340A1F457A67B39C0E574B4BB32E159E908EA777711516E +2A7AD9A5DFF904345898FCBDC062DDD1F57633D21F6D03546123F3E6146BF70A +FA65D36D4154767C079E785FF681D14E3A9437671A33B84FAC7E5D2947B2BBE9 +52EA37E91C0D16354BA53A5360437877D2C5E8867214D20675FA2543CA81529C +BDD2F516B9DE57C21D42A188514CEF691736A8C0CB1616A12436B301F31639B9 +96CA80870EB2AAD144FC32516F15FF42BC82570725B9C6033276E86495C8AF26 +F3BC53104B11F913A43EB37EB8CE3B2339069FFD6E4877638854D2E606EBC49E +E350B5952B087AD2F74F5C6C0E6CA96A1861CF8A3B53919664C74A79B0D02721 +8059596698F8A958AA268605192952D350F3ACABE5BB75DD2EB48E3BFEDD42E3 +23CED2922651115F861378AAE277481B0BA61B163F0CAC42166880CD795F2A6D +8C9267DA8454BB256D317166E0101F2E5FBE515670616BC8D4707E787EF24E03 +71B42BB08983CFE3EB92E9D5A84EF72604EA7890C0423D70D0B10B2609C65952 +8C02600DA310F9E0A3E7D59BD249FB704321708734C467140A9926FBFEE380DF +4D7BAC80ACD62B824D236167CDD809EB757A060E3826B685B61F4CFDBBB1733E +B99A5EC5E405A7ACD0BE1D8F3EE3352A4461665F8322FCA03C52CD6BF92A6310 +232273C994333C676D6B49E484F0481E129F2A32233D06139FABE693DA9F7BAE +33C6E9E6C7 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 40258431 52099146 1000 7200 7200 (testflow.dvi) +@start /Fa 196[228 59[{}1 498.132 /CMMI5 rf /Fb 194[540 +540 678 7[464 455 505 505 43[540 540 540 540 1[{}11 498.132 +/LASY5 rf /Fc 139[138 3[249 53[138 4[249 53[{ +TeXBase1Encoding ReEncodeFont}4 498.132 /Times-Roman +rf /Fd 196[227 59[{}1 597.758 /CMMI6 rf /Fe 194[576 576 +731 7[518 502 537 537 43[576 576 576 576 1[{}11 597.758 +/LASY6 rf /Ff 139[166 3[299 53[166 3[299 54[{ +TeXBase1Encoding ReEncodeFont}4 597.758 /Times-Roman +rf /Fg 194[623 623 794 7[583 560 580 580 43[623 623 623 +623 1[{}11 697.385 /LASY7 rf /Fh 196[235 59[{}1 797.011 +/CMMI8 rf /Fi 194[659 659 847 7[637 607 612 612 43[659 +659 659 659 1[{}11 797.011 /LASY8 rf /Fj 196[256 59[{}1 +896.638 /CMMI9 rf /Fk 194[717 717 922 7[713 676 666 666 +43[717 717 717 717 1[{}11 896.638 /LASY9 rf /Fl 139[249 +3[448 53[249 448 57[{TeXBase1Encoding ReEncodeFont}4 +896.638 /Times-Roman rf /Fm 194[775 775 996 7[789 744 +720 720 43[775 775 775 775 1[{}11 996.264 /LASY10 rf +/Fn 196[318 59[{}1 996.264 /CMMIB10 rf /Fo 194[891 891 +1146 7[805 778 827 827 43[891 891 891 891 1[{}11 996.264 +/LASYB10 rf /Fp 141[299 78[3587 3587 3587 3587 5[2790 +2790 2790 24[{}8 996.264 /LCIRCLEW10 rf /Fq 192[996 8[996 +8[996 17[996 27[{}4 996.264 /LINEW10 rf /Fr 192[996 8[996 +8[996 17[996 27[{}4 996.264 /LINE10 rf /Fs 141[299 78[3587 +3587 3587 3587 4[2790 2790 1[2790 24[{}8 996.264 /LCIRCLE10 +rf /Ft 152[423 423 102[{}2 797.011 /CMSY8 rf /Fu 139[265 +4[399 9[354 22[575 19[265 58[{TeXBase1Encoding ReEncodeFont}5 +797.011 /Times-Bold rf /Fv 107[354 354 25[399 2[399 399 +222 310 265 399 399 399 399 620 222 2[222 399 399 265 +354 399 354 399 354 12[487 3[443 21[222 399 399 399 3[399 +399 399 399 1[199 265 199 44[{TeXBase1Encoding ReEncodeFont}36 +797.011 /Times-Roman rf /Fw 133[670 122[{TeXBase1Encoding ReEncodeFont} +1 1721.54 /Times-Italic rf /Fx 255[775{}1 996.264 /CMSY10 +rf /Fy 255[623{}1 697.385 /CMSY7 rf /Fz 150[282 7[432 +37[237 59[{}3 697.385 /CMMI7 rf /FA 194[612 5[397 3[397 +397 397 397 4[612 43[{}7 697.385 /CMR7 rf /FB 175[1052 +46[789 789 10[526 526 20[{}5 996.264 /CMEX10 rf /FC 194[775 +5[498 498 1[498 1[498 498 498 48[{}7 996.264 /CMR10 rf +/FD 128[277 29[527 23[438 13[277 26[649 18[516 2[770 +610 8[613{}9 996.264 /CMMI10 rf /FE 138[554 332 388 442 +1[554 498 554 830 277 2[277 554 498 1[442 554 442 554 +498 12[665 554 719 1[609 775 719 940 665 775 4[609 1[719 +719 22[249 44[{TeXBase1Encoding ReEncodeFont}30 996.264 +/Times-Bold rf /FF 139[332 442 3[554 609 1[332 2[332 +609 3[609 1[609 498 12[665 3[609 32[295 249 46[{ +TeXBase1Encoding ReEncodeFont}14 996.264 /Palatino-Bold +rf /FG 136[598 2[598 598 598 1[598 598 2[598 5[598 598 +598 598 1[598 50[598 46[{TeXBase1Encoding ReEncodeFont}13 +996.264 /Courier rf /FH 104[996 2[442 442 25[498 498 +719 498 498 277 388 332 1[498 498 498 775 277 498 1[277 +498 498 332 442 498 442 498 442 8[719 3[609 554 665 4[886 +609 2[332 1[719 554 609 719 665 8[277 4[498 498 1[498 +498 498 277 249 1[249 2[332 332 36[554 554 2[{ +TeXBase1Encoding ReEncodeFont}51 996.264 /Times-Roman +rf /FI 171[797 665 2[730 1[863 1129 797 3[930 1[730 1[863 +2[863 65[{TeXBase1Encoding ReEncodeFont}10 1195.52 /Times-Bold +rf /FJ 166[691 691 2[691 638 532 691 1[584 744 691 903 +638 2[372 744 744 1[638 691 691 1[691 65[{TeXBase1Encoding ReEncodeFont} +18 956.413 /Times-Bold rf /FK 135[478 478 2[478 478 478 +1[478 478 1[478 478 2[478 478 478 478 478 1[478 1[478 +4[478 11[478 478 7[478 12[478 10[478 478 46[{ +TeXBase1Encoding ReEncodeFont}23 797.011 /Courier rf +/FL 136[863 1[598 332 465 398 1[598 598 598 930 332 2[332 +598 598 398 531 598 2[531 10[863 2[665 1[863 10[665 2[797 +797 863 6[332 5[598 2[598 598 1[299 42[665 3[{ +TeXBase1Encoding ReEncodeFont}30 1195.52 /Times-Roman +rf /FM 190[1492 65[{TeXBase1Encoding ReEncodeFont}1 2066.25 +/Times-Roman rf /FN 139[689 964 825 2[1239 1239 4[689 +1[1239 825 1101 12[1790 3[1514 1378 2[1378 3[1514 5[1378 +1514 1790 2[1790 17[689 47[{TeXBase1Encoding ReEncodeFont}19 +2478.71 /Times-Roman rf /FO 139[194 3[349 46[504 6[194 +349 349 349 349 349 349 349 349 349 349 48[{ +TeXBase1Encoding ReEncodeFont}14 697.385 /Times-Roman +rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 7200dpi +TeXDict begin +%%PaperSize: Letter + end +%%EndSetup +%%Page: 1 1 +TeXDict begin 1 0 bop -40 0 46880 40 v -40 64800 40 64800 +v 46800 64800 V -40 64840 46880 40 v -7200 29180 7200 +40 v -1437 29727 40 1134 v -2855 29727 V -4272 29727 +V -5689 29727 V -7107 29727 V -303 29443 40 567 v -587 +29443 V -870 29443 V -1154 29443 V -1437 29443 V -1721 +29443 V -2004 29443 V -2288 29443 V -2571 29443 V -2855 +29443 V -3138 29443 V -3421 29443 V -3705 29443 V -3988 +29443 V -4272 29443 V -4555 29443 V -4839 29443 V -5122 +29443 V -5406 29443 V -5689 29443 V -5973 29443 V -6256 +29443 V -6540 29443 V -6823 29443 V -7107 29443 V -1592 +28542 a FO(5)-1940 b(10)-2116 b(15)h(20)p -7200 35660 +7200 40 v -740 36360 40 1440 v -1460 36360 V -2180 36360 +V -2900 36360 V -3620 36360 V -4340 36360 V -5060 36360 +V -5780 36360 V -6500 36360 V -7220 36360 V -380 36000 +40 721 v -1100 36000 V -1820 36000 V -2540 36000 V -3260 +36000 V -3980 36000 V -4700 36000 V -5420 36000 V -6140 +36000 V -6860 36000 V -894 34798 a(1)-1069 b(2)-2334 +34793 y(3)-3055 34798 y(4)-3775 34793 y(5)g(6)-5215 34790 +y(7)-5935 34793 y(8)-6655 34790 y(9)p 46800 29180 7200 +40 v 47064 29443 40 567 v 47347 29443 V 47630 29443 V +47914 29443 V 48197 29443 V 48481 29443 V 48764 29443 +V 49048 29443 V 49331 29443 V 49615 29443 V 49898 29443 +V 50182 29443 V 50465 29443 V 50749 29443 V 51032 29443 +V 51315 29443 V 51599 29443 V 51882 29443 V 52166 29443 +V 52449 29443 V 52733 29443 V 53016 29443 V 53300 29443 +V 53583 29443 V 53867 29443 V 48197 29727 40 1134 v 49615 +29727 V 51032 29727 V 52449 29727 V 53867 29727 V 48043 +28542 a(5)894 b(10)719 b(15)h(20)p 46800 35660 7200 40 +v 47500 36360 40 1440 v 48220 36360 V 48940 36360 V 49660 +36360 V 50380 36360 V 51100 36360 V 51820 36360 V 52540 +36360 V 53260 36360 V 53981 36360 V 47140 36000 40 721 +v 47860 36000 V 48580 36000 V 49300 36000 V 50020 36000 +V 50740 36000 V 51460 36000 V 52180 36000 V 52900 36000 +V 53620 36000 V 47346 34798 a(1)371 b(2)48786 34793 y(3)49506 +34798 y(4)50226 34793 y(5)g(6)51666 34790 y(7)52386 34793 +y(8)53106 34790 y(9)p 21040 0 40 7200 v 20493 -1397 1134 +40 v 20493 -2815 V 20493 -4232 V 20493 -5649 V 20493 +-7067 V 20776 -264 567 40 v 20776 -547 V 20776 -830 V +20776 -1114 V 20776 -1397 V 20776 -1681 V 20776 -1964 +V 20776 -2248 V 20776 -2531 V 20776 -2815 V 20776 -3098 +V 20776 -3382 V 20776 -3665 V 20776 -3949 V 20776 -4232 +V 20776 -4515 V 20776 -4799 V 20776 -5082 V 20776 -5366 +V 20776 -5649 V 20776 -5933 V 20776 -6216 V 20776 -6500 +V 20776 -6783 V 20776 -7067 V 19786 -1184 a(5)19612 -2602 +y(10)19612 -4019 y(15)19612 -5436 y(20)p 25720 0 40 7200 +v 25020 -700 1440 40 v 25020 -1420 V 25020 -2140 V 25020 +-2860 V 25020 -3580 V 25020 -4300 V 25020 -5020 V 25020 +-5740 V 25020 -6460 V 25020 -7181 V 25380 -340 721 40 +v 25380 -1060 V 25380 -1780 V 25380 -2500 V 25380 -3220 +V 25380 -3940 V 25380 -4660 V 25380 -5380 V 25380 -6100 +V 25380 -6820 V 24486 -482 a(1)24486 -1202 y(2)24486 +-1927 y(3)24486 -2642 y(4)24486 -3367 y(5)24486 -4087 +y(6)24486 -4810 y(7)24486 -5527 y(8)24486 -6250 y(9)p +21040 72000 40 7200 v 20493 66237 1134 40 v 20493 67655 +V 20493 69072 V 20493 70489 V 20493 71907 V 20776 65103 +567 40 v 20776 65387 V 20776 65670 V 20776 65954 V 20776 +66237 V 20776 66521 V 20776 66804 V 20776 67088 V 20776 +67371 V 20776 67655 V 20776 67938 V 20776 68221 V 20776 +68505 V 20776 68788 V 20776 69072 V 20776 69355 V 20776 +69639 V 20776 69922 V 20776 70206 V 20776 70489 V 20776 +70773 V 20776 71056 V 20776 71340 V 20776 71623 V 20776 +71907 V 19786 66450 a(5)19612 67868 y(10)19612 69285 +y(15)19612 70702 y(20)p 25720 72000 40 7200 v 25020 65540 +1440 40 v 25020 66260 V 25020 66980 V 25020 67700 V 25020 +68420 V 25020 69140 V 25020 69860 V 25020 70580 V 25020 +71300 V 25020 72020 V 25380 65180 721 40 v 25380 65900 +V 25380 66620 V 25380 67340 V 25380 68060 V 25380 68780 +V 25380 69500 V 25380 70220 V 25380 70940 V 25380 71660 +V 24486 65758 a(1)24486 66478 y(2)24486 67193 y(3)24486 +67918 y(4)24486 68633 y(5)24486 69353 y(6)24486 70071 +y(7)24486 70793 y(8)24486 71511 y(9)6555 2986 y FN(A)619 +b(T)-173 b(est)619 b(for)i(L)17810 2710 y FM(A)18930 +2986 y FN(T)20031 3543 y(E)21236 2986 y(X)f(PS/PDF)g(Printing)15521 +5355 y FL(V)-133 b(ersion)299 b(1.1)1738 b(Build)300 +b(Code:)370 b(0004)9927 7447 y(See)298 b(the)h(test\003o)-30 +b(w)299 b(home)f(page)g(for)h(the)g(latest)g(ne)-30 b(ws)299 +b(and)f(F)-88 b(A)-66 b(Q:)13597 8643 y FK +(http://www.michaelshell.org/tex/testflow/)21594 11631 +y FI(N)60 b FJ(O)22 b(T)60 b(E)g(S)4500 13425 y FH(Document)250 +b(paper)g(type)g(selected)g(under)f(L)19551 13225 y FO(A)19905 +13425 y FH(T)20348 13649 y(E)20832 13425 y(X:)309 b FG(letterpaper)4500 +14620 y FH(Depends)250 b(only)f(on)h(the)f(base)h(article.cls)f(\227)g +(no)h(other)f(e)-15 b(xternal)250 b(packages)h(are)e(loaded.)4500 +15816 y(The)g(main)h(te)-15 b(xt)249 b(font)g(is)g(T)-35 +b(imes)249 b(Roman,)g(the)h(math)f(font)g(is)g(Computer)g(Modern.)4500 +17011 y(Imperial)g(\(0.1in\))g(and)h(metric)f(\(mm\))g(rulers)g(are)g +(pro)-15 b(vided)250 b(to)f(measure)h(centering.)4500 +18207 y(The)f(frame)h(on)f(this)g(page)h(should)f(be)g(centered)i(on)e +(the)g(paper)h(and)g(1in)f(\(25.4mm\))g(from)g(the)h(edges.)4500 +19402 y(T)-80 b(o)249 b(maintain)h(accurate)h(dimensions,)e(do)g(not)g +(scale)h(page)g(when)g(printing.)4500 20598 y(\(i.e.,)f(deselect)h(an) +-15 b(y)250 b(\223\002t)f(to)g(page\224)i(or)e(\223shrink/e)-15 +b(xpand)250 b(page\224)g(options.\))4500 21793 y(F)-15 +b(or)249 b(complete)h(usage)g(information,)f(read)h(the)f +FG(testflow)p 26013 21793 299 40 v 357 w(doc.pdf)e FH(\002le.)14820 +24184 y FI(P)-19 b FJ(A)60 b(L)g(L)g(A)g(D)g(I)g(O)352 +b FI(F)60 b FJ(O)g(N)g(T)356 b FI(H)60 b FJ(I)g(N)g(T)g(I)g(N)g(G)353 +b FI(T)60 b FJ(E)g(S)g(T)15935 25978 y FF(This)248 b(is)h(in)g(bold)f +(Palatino/Palladio.)19038 28369 y FI(L)60 b FJ(I)g(G)g(A)-31 +b(T)60 b(U)g(R)g(E)352 b FI(T)60 b FJ(E)g(S)g(T)4500 +30162 y FE(Ligatur)-18 b(es)2291 b FH(\227)748 b(The)249 +b(of)-25 b(\002ce)249 b(w)-10 b(as)250 b(af)-25 b(fected)250 +b(by)f(the)h(\002)-25 b(v)-15 b(e)249 b(\003a)-15 b(wed)250 +b(muf)-25 b(\003ers.)4500 31357 y FE(No)249 b(Ligatur)-18 +b(es)825 b FH(\227)748 b(The)249 b(office)g(w)-10 b(as)249 +b(affected)h(by)g(the)f(fi)-25 b(v)-15 b(e)250 b(fla)-15 +b(wed)250 b(mufflers.)19891 33748 y FI(M)60 b FJ(A)-31 +b(T)60 b(H)355 b FI(T)60 b FJ(E)g(S)g(T)g(S)15953 35542 +y FE(Lar)-10 b(ge)249 b(Delimiter)h(and)f(Operator)h(T)-92 +b(est)15731 38584 y FD(I)355 b FC(=)17575 37179 y FB(\024)18599 +37976 y FC(1)997 b(0)18599 39172 y(0)g(1)21090 37179 +y FB(\025)22778 38584 y FH(and)25213 36880 y FB( )26614 +37637 y FA(2)26287 37837 y FB(P)26168 39460 y Fz(i)p +FA(=0)27624 38584 y FC(2)28122 38222 y Fz(i)28731 38584 +y FC(=)276 b(7)30280 36880 y FB(!)19986 41910 y FE(Minus)249 +b(Sign)g(T)-92 b(est)14322 44102 y FH(If)248 b FD(a)277 +b FC(=)f(4)p FH(,)249 b(then:)310 b FC(2)20885 43741 +y Fy(\000)p Fz(a)p FA(+7)23220 44102 y Fx(\000)221 b +FC(2)24714 43741 y Fz(a)p Fy(\000)p FA(3)26493 44102 +y FC(=)276 b(2)28042 43741 y FA(3)28711 44102 y Fx(\000)221 +b FC(2)30205 43741 y FA(1)30929 44102 y FC(=)276 b(6)11007 +46413 y FE(Pr)-18 b(oblem)249 b(Character)-92 b(,)251 +b(T)-18 b(imes)248 b(Roman)i(and)f(F)-25 b(ont)249 b(K)-25 +b(er)-15 b(ning)249 b(T)-92 b(ests)15924 48207 y FH(Math)249 +b(italic)g(glyphs:)309 b FD(\000)28 b(;)415 b(\011)54 +b(;)415 b(\012)50 b(;)414 b(\015)55 b(;)415 b( )36 b(;)415 +b(\177)8130 49701 y FH(Lar)-18 b(ge)249 b(T)-35 b(imes)249 +b(Roman)g(italic:)310 b Fw(z)1992 b FH(GS)249 b(k)-10 +b(erning)250 b(test:)308 b Fv(The)199 b(\223Problematic\224)e(little)g +(quotes.)4500 51196 y Fu(Note:)248 b Fv(The)198 b(math)h(italic)e +(glyphs)g(are)i(in)f(the)h(control)e(character)h(positions)e(0,)j(9,)g +(10,)g(13,)f(32)h(and)f(127.)4500 52391 y(i.e.,)h FK(\\Gamma)p +Fv(,)i FK(\\Psi)p Fv(,)g FK(\\Omega)p Fv(,)f FK(\\gamma)p +Fv(,)h FK(\\psi)p Fv(,)f(and)e(the)h FK(\\t)p Ft(f)p +FK(xx)p Ft(g)i Fv(tie-after)d(accent,)g(respecti)-20 +b(v)-12 b(ely)-52 b(.)14566 54782 y FI(P)60 b FJ(I)g(C)g(T)g(U)g(R)g(E) +352 b(A)60 b(N)g(D)355 b FI(L)60 b FJ(A)g(S)g(Y)355 b +FI(F)60 b FJ(O)g(N)g(T)g(S)354 b FI(T)60 b FJ(E)g(S)g(T)p +6372 56514 40 40 v 6398 56510 V 6423 56505 V 6449 56501 +V 6474 56496 V 6500 56492 V 6525 56487 V 6551 56483 V +6576 56478 V 6602 56474 V 6627 56470 V 6653 56465 V 6678 +56461 V 6704 56457 V 6729 56452 V 6755 56448 V 6780 56444 +V 6806 56440 V 6831 56435 V 6857 56431 V 6882 56427 V +6908 56423 V 6933 56419 V 6959 56415 V 6984 56411 V 7010 +56406 V 7036 56402 V 7061 56398 V 7087 56394 V 7112 56390 +V 7138 56386 V 7163 56382 V 7189 56378 V 7214 56374 V +7240 56370 V 7265 56367 V 7291 56363 V 7316 56359 V 7342 +56355 V 7367 56351 V 7393 56347 V 7418 56344 V 7444 56340 +V 7469 56336 V 7495 56332 V 7520 56328 V 7546 56325 V +7571 56321 V 7597 56317 V 7622 56314 V 7648 56310 V 7673 +56306 V 7699 56303 V 7724 56299 V 7750 56296 V 7775 56292 +V 7801 56289 V 7826 56285 V 7852 56282 V 7877 56278 V +7903 56275 V 7928 56271 V 7954 56268 V 7979 56264 V 8005 +56261 V 8030 56258 V 8056 56254 V 8081 56251 V 8107 56248 +V 8133 56244 V 8158 56241 V 8184 56238 V 8209 56235 V +8235 56231 V 8260 56228 V 8286 56225 V 8311 56222 V 8337 +56219 V 8362 56216 V 8388 56212 V 8413 56209 V 8439 56206 +V 8464 56203 V 8490 56200 V 8515 56197 V 8541 56194 V +8566 56191 V 8592 56188 V 8617 56185 V 8643 56182 V 8668 +56180 V 8694 56177 V 8719 56174 V 8745 56171 V 8770 56168 +V 8796 56165 V 8821 56162 V 8847 56160 V 8872 56157 V +8898 56154 V 8923 56151 V 8949 56149 V 8974 56146 V 9000 +56143 V 9025 56141 V 9051 56138 V 9076 56135 V 9102 56133 +V 9127 56130 V 9153 56128 V 9178 56125 V 9204 56123 V +9230 56120 V 9255 56118 V 9281 56115 V 9306 56113 V 9332 +56110 V 9357 56108 V 9383 56105 V 9408 56103 V 9434 56101 +V 9459 56098 V 9485 56096 V 9510 56094 V 9536 56091 V +9561 56089 V 9587 56087 V 9612 56085 V 9638 56082 V 9663 +56080 V 9689 56078 V 9714 56076 V 9740 56074 V 9765 56071 +V 9791 56069 V 9816 56067 V 9842 56065 V 9867 56063 V +9893 56061 V 9918 56059 V 9944 56057 V 9969 56055 V 9995 +56053 V 10020 56051 V 10046 56049 V 10071 56047 V 10097 +56045 V 10122 56044 V 10148 56042 V 10173 56040 V 10199 +56038 V 10224 56036 V 10250 56034 V 10275 56033 V 10301 +56031 V 10327 56029 V 10352 56028 V 10378 56026 V 10403 +56024 V 10429 56023 V 10454 56021 V 10480 56019 V 10505 +56017 V 10531 56016 V 10556 56014 V 10582 56013 V 10607 +56011 V 10633 56010 V 10658 56008 V 10684 56007 V 10709 +56005 V 10735 56004 V 10760 56002 V 10786 56001 V 10811 +56000 V 10837 55998 V 10862 55997 V 10888 55996 V 10913 +55994 V 10939 55993 V 10964 55992 V 10990 55991 V 11015 +55989 V 11041 55988 V 11066 55987 V 11092 55986 V 11117 +55985 V 11143 55983 V 11168 55982 V 11194 55981 V 11219 +55980 V 11245 55979 V 11270 55978 V 11296 55977 V 11321 +55976 V 11347 55975 V 11372 55974 V 11398 55973 V 11424 +55972 V 11449 55971 V 11475 55970 V 11500 55969 V 11526 +55968 V 11551 55967 V 11577 55966 V 11602 55966 V 11628 +55965 V 11653 55964 V 11679 55963 V 11704 55963 V 11730 +55962 V 11755 55961 V 11781 55960 V 11806 55960 V 11832 +55959 V 11857 55959 V 11883 55958 V 11908 55957 V 11934 +55957 V 11959 55956 V 11985 55955 V 12010 55955 V 12036 +55954 V 12061 55954 V 12087 55953 V 12112 55953 V 12138 +55952 V 12163 55952 V 12189 55952 V 12214 55951 V 12240 +55951 V 12265 55951 V 12291 55950 V 12316 55950 V 12342 +55950 V 12367 55949 V 12393 55949 V 12418 55949 V 12444 +55949 V 12469 55948 V 12495 55948 V 12521 55948 V 12546 +55948 V 12572 55948 V 12597 55948 V 12623 55948 V 12648 +55948 V 12674 55948 V 12699 55948 V 12725 55947 V 12750 +55947 V 12776 55947 V 12801 55947 V 12827 55947 V 12852 +55947 V 12878 55947 V 12903 55948 V 12929 55948 V 12954 +55948 V 12980 55948 V 13005 55948 V 13031 55948 V 13056 +55949 V 13082 55949 V 13107 55949 V 13133 55949 V 13158 +55950 V 13184 55950 V 13209 55950 V 13235 55951 V 13260 +55951 V 13286 55951 V 13311 55952 V 13337 55952 V 13362 +55953 V 13388 55953 V 13413 55954 V 13439 55954 V 13464 +55954 V 13490 55955 V 13515 55955 V 13541 55956 V 13566 +55956 V 13592 55957 V 13618 55958 V 13643 55958 V 13669 +55959 V 13694 55960 V 13720 55960 V 13745 55961 V 13771 +55962 V 13796 55963 V 13822 55963 V 13847 55964 V 13873 +55965 V 13898 55966 V 13924 55967 V 13949 55967 V 13975 +55968 V 14000 55969 V 14026 55970 V 14051 55971 V 14077 +55972 V 14102 55973 V 14128 55974 V 14153 55975 V 14179 +55976 V 14204 55977 V 14230 55978 V 14255 55979 V 14281 +55980 V 14306 55981 V 14332 55982 V 14357 55983 V 14383 +55984 V 14408 55986 V 14434 55987 V 14459 55988 V 14485 +55989 V 14510 55990 V 14536 55992 V 14561 55993 V 14587 +55994 V 14612 55996 V 14638 55997 V 14663 55998 V 14689 +56000 V 14715 56001 V 14740 56003 V 14766 56004 V 14791 +56005 V 14817 56007 V 14842 56008 V 14868 56010 V 14893 +56012 V 14919 56013 V 14944 56015 V 14970 56016 V 14995 +56017 V 15021 56019 V 15046 56021 V 15072 56022 V 15097 +56024 V 15123 56026 V 15148 56027 V 15174 56029 V 15199 +56031 V 15225 56033 V 15250 56034 V 15276 56036 V 15301 +56038 V 15327 56040 V 15352 56042 V 15378 56044 V 15403 +56045 V 15429 56047 V 15454 56049 V 15480 56051 V 15505 +56053 V 15531 56055 V 15556 56057 V 15582 56059 V 15607 +56061 V 15633 56063 V 15658 56065 V 15684 56067 V 15709 +56070 V 15735 56071 V 15760 56073 V 15786 56076 V 15812 +56078 V 15837 56080 V 15863 56082 V 15888 56084 V 15914 +56087 V 15939 56089 V 15965 56091 V 15990 56094 V 16016 +56096 V 16041 56098 V 16067 56101 V 16092 56103 V 16118 +56105 V 16143 56108 V 16169 56110 V 16194 56113 V 16220 +56115 V 16245 56118 V 16271 56120 V 16296 56123 V 16322 +56125 V 16347 56128 V 16373 56130 V 16398 56133 V 16424 +56136 V 16449 56138 V 16475 56140 V 16500 56143 V 16526 +56146 V 16551 56148 V 16577 56151 V 16602 56154 V 16628 +56157 V 16653 56159 V 16679 56162 V 16704 56165 V 16730 +56168 V 16755 56171 V 16781 56174 V 16806 56177 V 16832 +56179 V 16857 56182 V 16883 56185 V 16909 56188 V 16934 +56191 V 16960 56194 V 16985 56197 V 17011 56200 V 17036 +56203 V 17062 56207 V 17087 56210 V 17113 56213 V 17138 +56216 V 17164 56219 V 17189 56222 V 17215 56225 V 17240 +56228 V 17266 56231 V 17291 56234 V 17317 56238 V 17342 +56241 V 17368 56244 V 17393 56248 V 17419 56251 V 17444 +56254 V 17470 56258 V 17495 56261 V 17521 56264 V 17546 +56268 V 17572 56271 V 17597 56275 V 17623 56278 V 17648 +56282 V 17674 56285 V 17699 56289 V 17725 56292 V 17750 +56296 V 17776 56299 V 17801 56303 V 17827 56307 V 17852 +56310 V 17878 56314 V 17903 56318 V 17929 56321 V 17954 +56325 V 17980 56328 V 18006 56332 V 18031 56336 V 18057 +56339 V 18082 56343 V 18108 56347 V 18133 56351 V 18159 +56355 V 18184 56359 V 18210 56363 V 18235 56366 V 18261 +56370 V 18286 56374 V 18312 56378 V 18337 56382 V 18363 +56386 V 18388 56390 V 18414 56394 V 18439 56398 V 18465 +56402 V 18490 56407 V 18516 56411 V 18541 56415 V 18567 +56419 V 18592 56423 V 18618 56427 V 18643 56432 V 18669 +56436 V 18694 56440 V 18720 56444 V 18745 56448 V 18771 +56452 V 18796 56456 V 18822 56461 V 18847 56465 V 18873 +56469 V 18898 56474 V 18924 56478 V 18949 56483 V 18975 +56487 V 19000 56492 V 19026 56496 V 19051 56501 V 19077 +56505 V 19103 56510 V 19128 56514 V 7790 56798 a Fs(\033)p +7790 58195 40 23 v 9204 56798 23 40 v 7131 w(\030)p 17711 +58195 40 23 v 16313 56798 23 40 v 7081 56514 a(\033)p +7081 57912 40 23 v 8548 w(\030)p 18419 57912 V 8496 56514 +8550 40 v 5522 55947 a(\033)p 5522 60769 40 3447 v 5522 +62183 a(\032)p 6937 62183 23 40 v 6937 55947 V 10644 +59045 a(r)8831 60859 y("!)8831 57272 y(#)o( )p 10624 +59045 40 1701 v 10644 58341 a Fr(6)p 10644 59065 1701 +40 v 11349 59045 a(-)p 10624 60746 40 1701 v 10644 60746 +a(?)p 8943 59065 1701 40 v 8943 59045 a(\033)p 6352 61636 +80 80 v 6392 61643 V 6432 61650 V 6472 61657 V 6512 61664 +V 6552 61671 V 6591 61678 V 6631 61685 V 6671 61692 V +6711 61698 V 6751 61705 V 6791 61712 V 6831 61718 V 6870 +61725 V 6910 61731 V 6950 61738 V 6990 61744 V 7030 61750 +V 7070 61757 V 7110 61763 V 7150 61769 V 7189 61775 V +7229 61782 V 7269 61788 V 7309 61794 V 7349 61800 V 7389 +61806 V 7429 61812 V 7468 61817 V 7508 61823 V 7548 61829 +V 7588 61835 V 7628 61840 V 7668 61846 V 7708 61852 V +7747 61857 V 7787 61863 V 7827 61868 V 7867 61874 V 7907 +61879 V 7947 61884 V 7987 61890 V 8026 61895 V 8066 61900 +V 8106 61905 V 8146 61910 V 8186 61915 V 8226 61921 V +8266 61926 V 8306 61930 V 8345 61935 V 8385 61940 V 8425 +61945 V 8465 61950 V 8505 61955 V 8545 61959 V 8585 61964 +V 8624 61968 V 8664 61973 V 8704 61977 V 8744 61982 V +8784 61986 V 8824 61991 V 8864 61995 V 8903 61999 V 8943 +62004 V 8983 62008 V 9023 62012 V 9063 62016 V 9103 62020 +V 9143 62024 V 9182 62028 V 9222 62032 V 9262 62036 V +9302 62039 V 9342 62043 V 9382 62047 V 9422 62051 V 9462 +62054 V 9501 62058 V 9541 62062 V 9581 62065 V 9621 62069 +V 9661 62072 V 9701 62075 V 9741 62079 V 9780 62082 V +9820 62085 V 9860 62089 V 9900 62092 V 9940 62095 V 9980 +62098 V 10020 62101 V 10059 62104 V 10099 62107 V 10139 +62110 V 10179 62113 V 10219 62115 V 10259 62118 V 10299 +62121 V 10338 62124 V 10378 62126 V 10418 62129 V 10458 +62131 V 10498 62134 V 10538 62136 V 10578 62139 V 10618 +62141 V 10657 62143 V 10697 62146 V 10737 62148 V 10777 +62150 V 10817 62152 V 10857 62154 V 10897 62156 V 10936 +62158 V 10976 62161 V 11016 62162 V 11056 62164 V 11096 +62166 V 11136 62168 V 11176 62170 V 11215 62171 V 11255 +62173 V 11295 62175 V 11335 62176 V 11375 62178 V 11415 +62179 V 11455 62181 V 11494 62182 V 11534 62183 V 11574 +62185 V 11614 62186 V 11654 62187 V 11694 62188 V 11734 +62189 V 11774 62190 V 11813 62192 V 11853 62193 V 11893 +62194 V 11933 62194 V 11973 62195 V 12013 62196 V 12053 +62197 V 12092 62198 V 12132 62198 V 12172 62199 V 12212 +62200 V 12252 62200 V 12292 62201 V 12332 62201 V 12371 +62202 V 12411 62202 V 12451 62202 V 12491 62202 V 12531 +62203 V 12571 62203 V 12611 62203 V 12650 62203 V 12690 +62203 V 12730 62203 V 12770 62203 V 12810 62203 V 12850 +62203 V 12890 62203 V 12930 62203 V 12969 62202 V 13009 +62202 V 13049 62202 V 13089 62202 V 13129 62201 V 13169 +62201 V 13209 62200 V 13248 62199 V 13288 62199 V 13328 +62198 V 13368 62198 V 13408 62197 V 13448 62196 V 13488 +62195 V 13527 62194 V 13567 62194 V 13607 62193 V 13647 +62192 V 13687 62191 V 13727 62190 V 13767 62188 V 13806 +62187 V 13846 62186 V 13886 62185 V 13926 62183 V 13966 +62182 V 14006 62181 V 14046 62179 V 14086 62178 V 14125 +62176 V 14165 62175 V 14205 62173 V 14245 62171 V 14285 +62170 V 14325 62168 V 14365 62166 V 14404 62164 V 14444 +62162 V 14484 62161 V 14524 62158 V 14564 62157 V 14604 +62154 V 14644 62152 V 14683 62150 V 14723 62148 V 14763 +62146 V 14803 62143 V 14843 62141 V 14883 62139 V 14923 +62136 V 14963 62134 V 15002 62132 V 15042 62129 V 15082 +62126 V 15122 62124 V 15162 62121 V 15202 62118 V 15242 +62115 V 15281 62113 V 15321 62110 V 15361 62107 V 15401 +62104 V 15441 62101 V 15481 62098 V 15521 62095 V 15560 +62092 V 15600 62089 V 15640 62086 V 15680 62082 V 15720 +62079 V 15760 62076 V 15800 62072 V 15839 62069 V 15879 +62065 V 15919 62062 V 15959 62058 V 15999 62054 V 16039 +62051 V 16079 62047 V 16119 62043 V 16158 62040 V 16198 +62036 V 16238 62032 V 16278 62028 V 16318 62024 V 16358 +62020 V 16398 62016 V 16437 62012 V 16477 62008 V 16517 +62004 V 16557 62000 V 16597 61995 V 16637 61991 V 16677 +61986 V 16716 61982 V 16756 61978 V 16796 61973 V 16836 +61969 V 16876 61964 V 16916 61959 V 16956 61955 V 16995 +61950 V 17035 61945 V 17075 61940 V 17115 61936 V 17155 +61931 V 17195 61925 V 17235 61921 V 17275 61915 V 17314 +61911 V 17354 61905 V 17394 61900 V 17434 61895 V 17474 +61890 V 17514 61885 V 17554 61879 V 17593 61874 V 17633 +61868 V 17673 61863 V 17713 61857 V 17753 61852 V 17793 +61846 V 17833 61840 V 17872 61835 V 17912 61829 V 17952 +61824 V 17992 61818 V 18032 61812 V 18072 61806 V 18112 +61800 V 18151 61794 V 18191 61788 V 18231 61782 V 18271 +61776 V 18311 61770 V 18351 61763 V 18391 61757 V 18431 +61751 V 18470 61744 V 18510 61738 V 18550 61731 V 18590 +61725 V 18630 61718 V 18670 61712 V 18710 61705 V 18749 +61698 V 18789 61692 V 18829 61685 V 18869 61678 V 18909 +61671 V 18949 61665 V 18989 61658 V 19028 61650 V 19068 +61644 V 19108 61636 V 6392 63337 32599 80 v 37994 63297 +a Fq(-)14896 59045 y Fp(r)13063 60879 y("!)13063 57292 +y(#)o( )p 14856 59045 80 1701 v 14896 58341 a Fq(6)p +14896 59085 1701 80 v 15601 59045 a(-)p 14856 60746 80 +1701 v 14896 60746 a(?)p 13195 59085 1701 80 v 13195 +59045 a(\033)p 7770 59918 80 23 v 7770 61353 a Fp(\032)p +9204 61353 23 80 v 17691 59918 80 23 v 7131 w(\031)p +16313 61353 23 80 v 7061 60202 80 23 v 7061 61636 a(\032)p +18400 60202 V 8549 w(\031)p 8496 61636 8550 80 v 19959 +55967 a(\030)p 19959 60769 80 3447 v 19959 62203 a(\031)p +18581 62203 23 80 v 18581 55967 V 20893 56494 a FH(10pt)250 +b(bold:)720 b Fo(0)p Fn(;)192 b Fo(1)p Fn(;)f Fo(2)p +Fn(;)g Fo(3)p Fn(;)h Fo(;)p Fn(;)e Fo(<)p Fn(;)i Fo(=)p +Fn(;)f Fo(\001)p Fn(;)g Fo(\002)p Fn(;)h Fo(\003)p Fn(;)f +Fo(\004)22914 57628 y FH(10pt:)720 b Fm(0)p FD(;)166 +b Fm(1)p FD(;)g Fm(2)p FD(;)g Fm(3)p FD(;)g Fm(;)p FD(;)g +Fm(<)p FD(;)g Fm(=)p FD(;)g Fm(\001)p FD(;)g Fm(\002)p +FD(;)g Fm(\003)p FD(;)g Fm(\004)23567 58620 y Fl(9pt:)721 +b Fk(0)p Fj(;)153 b Fk(1)p Fj(;)g Fk(2)p Fj(;)g Fk(3)p +Fj(;)g Fk(;)p Fj(;)h Fk(<)p Fj(;)f Fk(=)p Fj(;)g Fk(\001)p +Fj(;)g Fk(\002)p Fj(;)h Fk(\003)p Fj(;)f Fk(\004)23722 +59471 y Fv(8pt:)718 b Fi(0)p Fh(;)141 b Fi(1)p Fh(;)g +Fi(2)p Fh(;)g Fi(3)p Fh(;)g Fi(;)p Fh(;)g Fi(<)p Fh(;)g +Fi(=)p Fh(;)g Fi(\001)p Fh(;)g Fi(\002)p Fh(;)g Fi(\003)p +Fh(;)g Fi(\004)23877 60179 y FO(7pt:)719 b Fg(0)p Fz(;)135 +b Fg(1)p Fz(;)h Fg(2)p Fz(;)f Fg(3)p Fz(;)h Fg(;)p Fz(;)f +Fg(<)p Fz(;)h Fg(=)p Fz(;)f Fg(\001)p Fz(;)g Fg(\002)p +Fz(;)h Fg(\003)p Fz(;)f Fg(\004)24032 60817 y Ff(6pt:)720 +b Fe(0)p Fd(;)127 b Fe(1)p Fd(;)g Fe(2)p Fd(;)g Fe(3)p +Fd(;)g Fe(;)p Fd(;)g Fe(<)p Fd(;)g Fe(=)p Fd(;)g Fe(\001)p +Fd(;)f Fe(\002)p Fd(;)h Fe(\003)p Fd(;)g Fe(\004)24187 +61384 y Fc(5pt:)721 b Fb(0)p Fa(;)122 b Fb(1)p Fa(;)h +Fb(2)p Fa(;)g Fb(3)p Fa(;)f Fb(;)p Fa(;)g Fb(<)p Fa(;)h +Fb(=)p Fa(;)f Fb(\001)p Fa(;)g Fb(\002)p Fa(;)g Fb(\003)p +Fa(;)g Fb(\004)p eop end +%%Page: 2 2 +TeXDict begin 2 1 bop -40 0 46880 40 v -40 64800 40 64800 +v 46800 64800 V -40 64840 46880 40 v -7200 29180 7200 +40 v -1437 29727 40 1134 v -2855 29727 V -4272 29727 +V -5689 29727 V -7107 29727 V -303 29443 40 567 v -587 +29443 V -870 29443 V -1154 29443 V -1437 29443 V -1721 +29443 V -2004 29443 V -2288 29443 V -2571 29443 V -2855 +29443 V -3138 29443 V -3421 29443 V -3705 29443 V -3988 +29443 V -4272 29443 V -4555 29443 V -4839 29443 V -5122 +29443 V -5406 29443 V -5689 29443 V -5973 29443 V -6256 +29443 V -6540 29443 V -6823 29443 V -7107 29443 V -1592 +28542 a FO(5)-1940 b(10)-2116 b(15)h(20)p -7200 35660 +7200 40 v -740 36360 40 1440 v -1460 36360 V -2180 36360 +V -2900 36360 V -3620 36360 V -4340 36360 V -5060 36360 +V -5780 36360 V -6500 36360 V -7220 36360 V -380 36000 +40 721 v -1100 36000 V -1820 36000 V -2540 36000 V -3260 +36000 V -3980 36000 V -4700 36000 V -5420 36000 V -6140 +36000 V -6860 36000 V -894 34798 a(1)-1069 b(2)-2334 +34793 y(3)-3055 34798 y(4)-3775 34793 y(5)g(6)-5215 34790 +y(7)-5935 34793 y(8)-6655 34790 y(9)p 46800 29180 7200 +40 v 47064 29443 40 567 v 47347 29443 V 47630 29443 V +47914 29443 V 48197 29443 V 48481 29443 V 48764 29443 +V 49048 29443 V 49331 29443 V 49615 29443 V 49898 29443 +V 50182 29443 V 50465 29443 V 50749 29443 V 51032 29443 +V 51315 29443 V 51599 29443 V 51882 29443 V 52166 29443 +V 52449 29443 V 52733 29443 V 53016 29443 V 53300 29443 +V 53583 29443 V 53867 29443 V 48197 29727 40 1134 v 49615 +29727 V 51032 29727 V 52449 29727 V 53867 29727 V 48043 +28542 a(5)894 b(10)719 b(15)h(20)p 46800 35660 7200 40 +v 47500 36360 40 1440 v 48220 36360 V 48940 36360 V 49660 +36360 V 50380 36360 V 51100 36360 V 51820 36360 V 52540 +36360 V 53260 36360 V 53981 36360 V 47140 36000 40 721 +v 47860 36000 V 48580 36000 V 49300 36000 V 50020 36000 +V 50740 36000 V 51460 36000 V 52180 36000 V 52900 36000 +V 53620 36000 V 47346 34798 a(1)371 b(2)48786 34793 y(3)49506 +34798 y(4)50226 34793 y(5)g(6)51666 34790 y(7)52386 34793 +y(8)53106 34790 y(9)p 21040 0 40 7200 v 20493 -1397 1134 +40 v 20493 -2815 V 20493 -4232 V 20493 -5649 V 20493 +-7067 V 20776 -264 567 40 v 20776 -547 V 20776 -830 V +20776 -1114 V 20776 -1397 V 20776 -1681 V 20776 -1964 +V 20776 -2248 V 20776 -2531 V 20776 -2815 V 20776 -3098 +V 20776 -3382 V 20776 -3665 V 20776 -3949 V 20776 -4232 +V 20776 -4515 V 20776 -4799 V 20776 -5082 V 20776 -5366 +V 20776 -5649 V 20776 -5933 V 20776 -6216 V 20776 -6500 +V 20776 -6783 V 20776 -7067 V 19786 -1184 a(5)19612 -2602 +y(10)19612 -4019 y(15)19612 -5436 y(20)p 25720 0 40 7200 +v 25020 -700 1440 40 v 25020 -1420 V 25020 -2140 V 25020 +-2860 V 25020 -3580 V 25020 -4300 V 25020 -5020 V 25020 +-5740 V 25020 -6460 V 25020 -7181 V 25380 -340 721 40 +v 25380 -1060 V 25380 -1780 V 25380 -2500 V 25380 -3220 +V 25380 -3940 V 25380 -4660 V 25380 -5380 V 25380 -6100 +V 25380 -6820 V 24486 -482 a(1)24486 -1202 y(2)24486 +-1927 y(3)24486 -2642 y(4)24486 -3367 y(5)24486 -4087 +y(6)24486 -4810 y(7)24486 -5527 y(8)24486 -6250 y(9)p +21040 72000 40 7200 v 20493 66237 1134 40 v 20493 67655 +V 20493 69072 V 20493 70489 V 20493 71907 V 20776 65103 +567 40 v 20776 65387 V 20776 65670 V 20776 65954 V 20776 +66237 V 20776 66521 V 20776 66804 V 20776 67088 V 20776 +67371 V 20776 67655 V 20776 67938 V 20776 68221 V 20776 +68505 V 20776 68788 V 20776 69072 V 20776 69355 V 20776 +69639 V 20776 69922 V 20776 70206 V 20776 70489 V 20776 +70773 V 20776 71056 V 20776 71340 V 20776 71623 V 20776 +71907 V 19786 66450 a(5)19612 67868 y(10)19612 69285 +y(15)19612 70702 y(20)p 25720 72000 40 7200 v 25020 65540 +1440 40 v 25020 66260 V 25020 66980 V 25020 67700 V 25020 +68420 V 25020 69140 V 25020 69860 V 25020 70580 V 25020 +71300 V 25020 72020 V 25380 65180 721 40 v 25380 65900 +V 25380 66620 V 25380 67340 V 25380 68060 V 25380 68780 +V 25380 69500 V 25380 70220 V 25380 70940 V 25380 71660 +V 24486 65758 a(1)24486 66478 y(2)24486 67193 y(3)24486 +67918 y(4)24486 68633 y(5)24486 69353 y(6)24486 70071 +y(7)24486 70793 y(8)24486 71511 y(9)6555 2986 y FN(A)619 +b(T)-173 b(est)619 b(for)i(L)17810 2710 y FM(A)18930 +2986 y FN(T)20031 3543 y(E)21236 2986 y(X)f(PS/PDF)g(Printing)15521 +5355 y FL(V)-133 b(ersion)299 b(1.1)1738 b(Build)300 +b(Code:)370 b(0004)14675 7746 y FI(D)60 b FJ(U)g(P)g(L)g(E)g(X)353 +b FI(A)60 b FJ(L)g(I)g(G)g(N)g(M)g(E)g(N)g(T)351 b FI(T)60 +b FJ(E)g(S)g(T)356 b FI(S)60 b FJ(I)g(D)g(E)p eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF diff -r 000000000000 -r 8319d82cab07 testflow/testflow_doc.pdf Binary file testflow/testflow_doc.pdf has changed diff -r 000000000000 -r 8319d82cab07 tools/IEEEtrantools.sty --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/IEEEtrantools.sty Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,2770 @@ +%% +%% IEEEtrantools.sty 2014/09/17 version V1.4 +%% +%% +%% This package provides several popular and unique commands from the +%% IEEEtran.cls class (version 1.8a) file. +%% +%% The provided commands include \IEEEPARstart, \IEEEitemize, \IEEEenumerate, +%% \IEEEdescription as well as the \IEEEeqnarray, \IEEEeqnarraybox family +%% of commands including support commands such as \IEEEstrut, the IEEEproof +%% environment and its support commands and the \IEEEauthorrefmark command. +%% Also provides the \bstctlcite command for the control entry types of +%% IEEEtran.bst V1.00 and later. +%% +%% IEEEtrantools.sty should not be used with IEEEtran.cls. +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% +%% +%% Copyright (c) 2002-2014 by Michael Shell +%% See: http://www.michaelshell.org/ +%% for current contact information. +%% +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%% +%% This work is distributed under the LaTeX Project Public License (LPPL) +%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, +%% distributed and modified. A copy of the LPPL, version 1.3, is included +%% in the base LaTeX documentation of all distributions of LaTeX released +%% 2003/12/01 or later. +%% Retain all contribution notices and credits. +%% ** Modified files should be clearly indicated as such, including ** +%% ** renaming them and changing author support contact information. ** +%% +%% File list of work: IEEEtrantools.sty, IEEEtrantools_doc.txt +%%************************************************************************* +%% +%% +%% +%% Available package options (e.g., \usepackage[redeflists]{IEEEtrantools} +%% +%% redeflists +%% Causes IEEEtrantools to redefine the standard itemize, enumerate and +%% description (IED) list environments to their IEEE versions. +%% IEEEitemize, IEEEenumerate and IEEEdescription remain available in any +%% case. This option may not be compatible with packages that alter the +%% standard IED list environments. +%% +%% +%%********************************************************************** + + +\ProvidesPackage{IEEEtrantools}[2014/09/17 V1.4 by Michael Shell] +\typeout{-- See the "IEEEtrantools_doc.txt" manual for usage information.} +\typeout{-- http://www.michaelshell.org/tex/ieeetran/tools/} +\NeedsTeXFormat{LaTeX2e} + + +% If \@IEEEeqnarray is detected, error. +{\@ifundefined{@IEEEeqnarray}{\relax}{% +\PackageError{IEEEtrantools}{The IEEEtrantools package is not for use\MessageBreak + with classes that already provide it}% + {Do not load IEEEtrantools - you don't need it.}% +}} + + +% hook to allow easy changeover to IEEEtran.cls/tools.sty error reporting +\def\@IEEEclspkgerror{\PackageError{IEEEtrantools}} + + +% define needed flags to indicate document options +\newif\if@IEEETOOLSredeflists +\global\@IEEETOOLSredeflistsfalse + + +% IEEEtran class scratch pad registers +% dimen +\newdimen\@IEEEtrantmpdimenA +\newdimen\@IEEEtrantmpdimenB +\newdimen\@IEEEtrantmpdimenC +% count +\newcount\@IEEEtrantmpcountA +\newcount\@IEEEtrantmpcountB +\newcount\@IEEEtrantmpcountC +% token list +\newtoks\@IEEEtrantmptoksA + + +% declare the options +\DeclareOption{redeflists}{\@IEEETOOLSredefliststrue} +% provide legacy support for retainorgcmds which does nothing now. +\DeclareOption{retainorgcmds}{\@IEEETOOLSredeflistsfalse} + +% get and process any supplied options +\ProcessOptions + + +% store the nominal value of jot +\newdimen\IEEEnormaljot +\IEEEnormaljot\jot\relax +% V1.4 allow for other packages that later change \jot +\AtBeginDocument{\IEEEnormaljot\jot\relax} + + + + +%% -- Command Argument Scanning Support Functions -- +% + +% 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}} + + + +% 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}} + + + +% 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 -- + + + + +% -- page setup commands -- + +% The default sample text for calculating margins +\def\IEEEdefaultsampletext{\normalfont\normalsize gT} +\def\IEEEdefaultheadersampletext{\normalfont\normalsize T} +\def\IEEEdefaultfootersampletext{\normalfont\normalsize 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 page setup commands -- + + + + +% Itemize, Enumerate and Description (IED) List Controls +% *************************** +% +% +% IEEE seems to use at least two different values by +% which ITEMIZED list labels are indented to the right +% For The Journal of Lightwave Technology (JLT) and The Journal +% on Selected Areas in Communications (JSAC), they tend to use +% an indention equal to \parindent. For Transactions on Communications +% they tend to indent ITEMIZED lists a little more--- 1.3\parindent. +% We'll provide both values here for you so that you can choose +% which one you like in your document using a command such as: +% setlength{\IEEEilabelindent}{\IEEEilabelindentB} +\newdimen\IEEEilabelindentA +\IEEEilabelindentA \parindent + +\newdimen\IEEEilabelindentB +\IEEEilabelindentB 1.3\parindent +% However, we'll default to using \parindent +% which makes more sense to me +\newdimen\IEEEilabelindent +\IEEEilabelindent \IEEEilabelindentA + + +% This controls the default amount the enumerated list labels +% are indented to the right. +% Normally, this is the same as the paragraph indention +\newdimen\IEEEelabelindent +\IEEEelabelindent \parindent + +% This controls the default amount the description list labels +% are indented to the right. +% Normally, this is the same as the paragraph indention +\newdimen\IEEEdlabelindent +\IEEEdlabelindent \parindent + +% This is the value actually used within the IED lists. +% The IED environments automatically set its value to +% one of the three values above, so global changes do +% not have any effect +\newdimen\IEEElabelindent +\IEEElabelindent \parindent + +% The actual amount labels will be indented is +% \IEEElabelindent multiplied by the factor below +% corresponding to the level of nesting depth +% This provides a means by which the user can +% alter the effective \IEEElabelindent for deeper +% levels +% There may not be such a thing as correct "standard IEEE" +% values. What IEEE actually does may depend on the specific +% circumstances. +% The first list level almost always has full indention. +% The second levels I've seen have only 75% of the normal indentation +% Three level or greater nestings are very rare. I am guessing +% that they don't use any indentation. +\def\IEEElabelindentfactori{1.0} % almost always one +\def\IEEElabelindentfactorii{0.75} % 0.0 or 1.0 may be used in some cases +\def\IEEElabelindentfactoriii{0.0} % 0.75? 0.5? 0.0? +\def\IEEElabelindentfactoriv{0.0} +\def\IEEElabelindentfactorv{0.0} +\def\IEEElabelindentfactorvi{0.0} + +% value actually used within IED lists, it is auto +% set to one of the 6 values above +% global changes here have no effect +\def\IEEElabelindentfactor{1.0} + +% This controls the default spacing between the end of the IED +% list labels and the list text, when normal text is used for +% the labels. +\newdimen\IEEEiednormlabelsep +\IEEEiednormlabelsep 0.6em + +% This controls the default spacing between the end of the IED +% list labels and the list text, when math symbols are used for +% the labels (nomenclature lists). IEEE usually increases the +% spacing in these cases +\newdimen\IEEEiedmathlabelsep +\IEEEiedmathlabelsep 1.2em + +% This controls the extra vertical separation put above and +% below each IED list. IEEE usually puts a little extra spacing +% around each list. However, this spacing is barely noticeable. +\newskip\IEEEiedtopsep +\IEEEiedtopsep 2pt plus 1pt minus 1pt + + +% This command is executed within each IED list environment +% at the beginning of the list. You can use this to set the +% parameters for some/all your IED list(s) without disturbing +% global parameters that affect things other than lists. +% i.e., renewcommand{\IEEEiedlistdecl}{\setlength{\labelsep}{5em}} +% will alter the \labelsep for the next list(s) until +% \IEEEiedlistdecl is redefined. +\def\IEEEiedlistdecl{\relax} + +% This command provides an easy way to set \leftmargin based +% on the \labelwidth, \labelsep and the argument \IEEElabelindent +% Usage: \IEEEcalcleftmargin{width-to-indent-the-label} +% output is in the \leftmargin variable, i.e., effectively: +% \leftmargin = argument + \labelwidth + \labelsep +% Note controlled spacing here, shield end of lines with % +\def\IEEEcalcleftmargin#1{\setlength{\leftmargin}{#1}% +\addtolength{\leftmargin}{\labelwidth}% +\addtolength{\leftmargin}{\labelsep}} + +% This command provides an easy way to set \labelwidth to the +% width of the given text. It is the same as +% \settowidth{\labelwidth}{label-text} +% and useful as a shorter alternative. +% Typically used to set \labelwidth to be the width +% of the longest label in the list +\def\IEEEsetlabelwidth#1{\settowidth{\labelwidth}{#1}} + +% When this command is executed, IED lists will use the +% IEEEiedmathlabelsep label separation rather than the normal +% spacing. To have an effect, this command must be executed via +% the \IEEEiedlistdecl or within the option of the IED list +% environments. +\def\IEEEusemathlabelsep{\setlength{\labelsep}{\IEEEiedmathlabelsep}} + +% A flag which controls whether the IED lists automatically +% calculate \leftmargin from \IEEElabelindent, \labelwidth and \labelsep +% Useful if you want to specify your own \leftmargin +% This flag must be set (\IEEEnocalcleftmargintrue or \IEEEnocalcleftmarginfalse) +% via the \IEEEiedlistdecl or within the option of the IED list +% environments to have an effect. +\newif\ifIEEEnocalcleftmargin +\IEEEnocalcleftmarginfalse + +% A flag which controls whether \IEEElabelindent is multiplied by +% the \IEEElabelindentfactor for each list level. +% This flag must be set via the \IEEEiedlistdecl or within the option +% of the IED list environments to have an effect. +\newif\ifIEEEnolabelindentfactor +\IEEEnolabelindentfactorfalse + + +% internal variable to indicate type of IED label +% justification +% 0 - left; 1 - center; 2 - right +\def\@IEEEiedjustify{0} + + + +% commands to allow the user to control IED +% label justifications. Use these commands within +% the IED environment option or in the \IEEEiedlistdecl +% Note that changing the normal list justifications +% is nonstandard and IEEE may not like it if you do so! +% I include these commands as they may be helpful to +% those who are using these enhanced list controls for +% other non-IEEE related LaTeX work. +% itemize and enumerate automatically default to right +% justification, description defaults to left. +\def\IEEEiedlabeljustifyl{\def\@IEEEiedjustify{0}}%left +\def\IEEEiedlabeljustifyc{\def\@IEEEiedjustify{1}}%center +\def\IEEEiedlabeljustifyr{\def\@IEEEiedjustify{2}}%right + + + + +% commands to save to and restore from the list parameter copies +% this allows us to set all the list parameters within +% the list_decl and prevent \list (and its \@list) +% from overriding any of our parameters +% V1.6 use \edefs instead of dimen's to conserve dimen registers +% Note controlled spacing here, shield end of lines with % +\def\@IEEEsavelistparams{\edef\@IEEEiedtopsep{\the\topsep}% +\edef\@IEEEiedlabelwidth{\the\labelwidth}% +\edef\@IEEEiedlabelsep{\the\labelsep}% +\edef\@IEEEiedleftmargin{\the\leftmargin}% +\edef\@IEEEiedpartopsep{\the\partopsep}% +\edef\@IEEEiedparsep{\the\parsep}% +\edef\@IEEEieditemsep{\the\itemsep}% +\edef\@IEEEiedrightmargin{\the\rightmargin}% +\edef\@IEEEiedlistparindent{\the\listparindent}% +\edef\@IEEEieditemindent{\the\itemindent}} + +% Note controlled spacing here +\def\@IEEErestorelistparams{\topsep\@IEEEiedtopsep\relax% +\labelwidth\@IEEEiedlabelwidth\relax% +\labelsep\@IEEEiedlabelsep\relax% +\leftmargin\@IEEEiedleftmargin\relax% +\partopsep\@IEEEiedpartopsep\relax% +\parsep\@IEEEiedparsep\relax% +\itemsep\@IEEEieditemsep\relax% +\rightmargin\@IEEEiedrightmargin\relax% +\listparindent\@IEEEiedlistparindent\relax% +\itemindent\@IEEEieditemindent\relax} + + +% v1.6b provide original LaTeX IED list environments +% note that latex.ltx defines \itemize and \enumerate, but not \description +% which must be created by the base classes +% save original LaTeX itemize and enumerate +\let\LaTeXitemize\itemize +\let\endLaTeXitemize\enditemize +\let\LaTeXenumerate\enumerate +\let\endLaTeXenumerate\endenumerate +% base class should define \description +\let\LaTeXdescription\description +\let\endLaTeXdescription\enddescription + + +% override LaTeX's default IED lists, if the user requested it +\if@IEEETOOLSredeflists +\def\itemize{\@IEEEitemize} +\def\enditemize{\@endIEEEitemize} +\def\enumerate{\@IEEEenumerate} +\def\endenumerate{\@endIEEEenumerate} +\def\description{\@IEEEdescription} +\def\enddescription{\@endIEEEdescription} +\fi + + +% provide the user with the IEEE IED commands +\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} + + + + + + + + + +% used only by IEEEtran's IEEEeqnarray as other packages may +% have their own, different, implementations +\newcounter{IEEEsubequation}[equation] + +% e.g., "1a" (used only by IEEEtran's IEEEeqnarray) +\def\theIEEEsubequation{\theequation\alph{IEEEsubequation}} +% just like LaTeX2e's \@eqnnum +\def\theequationdis{{\normalfont \normalcolor (\theequation)}}% (1) +% IEEEsubequation used only by IEEEtran's IEEEeqnarray +\def\theIEEEsubequationdis{{\normalfont \normalcolor (\theIEEEsubequation)}}% (1a) + + + + +%% +%% 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]}} +\def\@@IEEEeqnarray[#1]#2{% + % 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]}} +\def\@@IEEEeqnarraybox[#1]{\relax\@ifnextchar[{\@@@IEEEeqnarraybox[#1]}{\@@@IEEEeqnarraybox[#1][b]}} +\def\@@@IEEEeqnarraybox[#1][#2]{\relax\@ifnextchar[{\@@@@IEEEeqnarraybox[#1][#2]}{\@@@@IEEEeqnarraybox[#1][#2][\relax]}} + +% #1 = decl; #2 = t,b,c; #3 = width, #4 = col specs +\def\@@@@IEEEeqnarraybox[#1][#2][#3]#4{\@IEEEeqnarrayISinnerfalse % not yet within the lines of the halign + \@IEEEeqnarraymasterstrutsave% save current master strut values + \@IEEEeqnarraystrutsize{0pt}{0pt}[\relax]% turn off struts by default + \@IEEEeqnarrayusemasterstruttrue% use master strut till user asks otherwise + \IEEEvisiblestrutsfalse% diagnostic mode defaults to off + % no extra space unless the user specifically requests it + \lineskip=0pt\relax% + \lineskiplimit=0pt\relax% + \baselineskip=\normalbaselineskip\relax% + \jot=\IEEEnormaljot\relax% + \mathsurround\z@\relax% no extra spacing around math + % the default end glues are zero for an \IEEEeqnarraybox + \edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPzero}% default start glue + \edef\@IEEEeqnarraycolSEPdefaultend{\@IEEEeqnarraycolSEPzero}% default end glue + \edef\@IEEEeqnarraycolSEPdefaultmid{\@IEEEeqnarraycolSEPzero}% default inter-column glue + \@advanceIEEEeqncolcntfalse% do not advance the col counter for each col the user uses, + % used in \IEEEeqnarraymulticol and in the preamble build + \IEEEeqnarrayboxdecl\relax% allow a way for the user to make global overrides + #1\relax% allow user to override defaults + \let\\\@IEEEeqnarrayboxcr% replace newline with one that allows optional spacing + \@IEEEbuildpreamble{#4}\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 +%% + + + + +% \IEEEPARstart +% Definition for the big two line drop cap letter at the beginning of the +% first paragraph of journal papers. The first argument is the first letter +% of the first word, the second argument is the remaining letters of the +% first word which will be rendered in upper case. +% In V1.6 this has been completely rewritten to: +% +% 1. no longer have problems when the user begins an environment +% within the paragraph that uses \IEEEPARstart. +% 2. auto-detect and use the current font family +% 3. revise handling of the space at the end of the first word so that +% interword glue will now work as normal. +% 4. produce correctly aligned edges for the (two) indented lines. +% +% We generalize things via control macros - playing with these is fun too. +% +% For IEEEtrantools, we do not use a "@" in the names as these are user +% alterable controls. +% +% V1.7 added more control macros to make it easy for IEEEtrantools.sty users +% to change the font style. +% +% the number of lines that are indented to clear it +% may need to increase if using decenders +\providecommand{\IEEEPARstartDROPLINES}{2} +% minimum number of lines left on a page to allow a \@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} + + +% \IEEEauthorrefmark +\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}}}} + + +% V1.3 IEEEQED and IEEEproof +\def\IEEEproofname{Proof} + +\def\IEEEQEDclosed{\mbox{\rule[0pt]{1.3ex}{1.3ex}}} % for a filled box +\def\IEEEQEDopen{{\setlength{\fboxsep}{0pt}\setlength{\fboxrule}{0.2pt}\fbox{\rule[0pt]{0pt}{1.3ex}\rule[0pt]{1.3ex}{0pt}}}} +\def\IEEEQED{\IEEEQEDclosed} % default to closed + +%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} + + +% 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} +% V1.7 I see no need for \providecommand here. +\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}} +\def\@bstctlcite[#1]#2{\@bsphack + \@for\@citeb:=#2\do{% + \edef\@citeb{\expandafter\@firstofone\@citeb}% + \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}% + \@esphack} + + + +% need a backslash character for typeout output +{\catcode`\|=0 \catcode`\\=12 +|xdef|@IEEEbackslash{\}} + + +% hook to allow easy disabling of all legacy warnings +\def\@IEEElegacywarn#1#2{\typeout{** ATTENTION: \@IEEEbackslash #1 is deprecated (line \the\inputlineno). +Use \@IEEEbackslash #2 instead.}} + + +% V1.4 no longer support these legacy commands +% \def\PARstart{\@IEEElegacywarn{PARstart}{IEEEPARstart}\IEEEPARstart} +% \let\labelindent\IEEElabelindent +% \def\calcleftmargin{\@IEEElegacywarn{calcleftmargin}{IEEEcalcleftmargin}\IEEEcalcleftmargin} +% \def\setlabelwidth{\@IEEElegacywarn{setlabelwidth}{IEEEsetlabelwidth}\IEEEsetlabelwidth} +% \def\usemathlabelsep{\@IEEElegacywarn{usemathlabelsep}{IEEEusemathlabelsep}\IEEEusemathlabelsep} +% \def\iedlabeljustifyc{\@IEEElegacywarn{iedlabeljustifyc}{IEEEiedlabeljustifyc}\IEEEiedlabeljustifyc} +% \def\iedlabeljustifyl{\@IEEElegacywarn{iedlabeljustifyl}{IEEEiedlabeljustifyl}\IEEEiedlabeljustifyl} +% \def\iedlabeljustifyr{\@IEEElegacywarn{iedlabeljustifyr}{IEEEiedlabeljustifyr}\IEEEiedlabeljustifyr} + + +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%% End of IEEEtrantools.sty %%%%%%%%%%%%%%%%%%%%%% +% That's all folks! + diff -r 000000000000 -r 8319d82cab07 tools/IEEEtrantools_doc.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/IEEEtrantools_doc.txt Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,315 @@ + +IEEEtrantools_doc.txt 2014/09/17 version 1.4 +(Version 1.4 is based on the commands of version 1.8a of IEEEtran.cls) +This document is the user guide for the IEEEtrantools.sty package. + +The IEEEtrantools.sty package provides several popular and unique +commands from the IEEEtran.cls class (version 1.8a) file. + +IEEEtrantools.sty should not be used with IEEEtran.cls. + +For helpful tips, answers to frequently asked questions and other support, +visit the IEEEtrantools support page at my website: + +http://www.michaelshell.org/tex/ieeetran/tools/ + +The latest version and documentation of IEEEtrantools can be obtained at: +http://mirror.ctan.org/macros/latex/contrib/IEEEtran/ + +Copyright (c) 2002-2014 by Michael Shell + See + http://www.michaelshell.org/ + for current contact information. + +************************************************************************* +Legal Notice: +This code is offered as-is without any warranty either expressed or +implied; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE! +User assumes all risk. +In no event shall IEEE or any contributor to this code be liable for +any damages or losses, including, but not limited to, incidental, +consequential, or any other damages, resulting from the use or misuse +of any information contained here. + +All comments are the opinions of their respective authors and are not +necessarily endorsed by the IEEE. + +This work is distributed under the LaTeX Project Public License (LPPL) +( http://www.latex-project.org/ ) version 1.3, and may be freely used, +distributed and modified. A copy of the LPPL, version 1.3, is included +in the base LaTeX documentation of all distributions of LaTeX released +2003/12/01 or later. +Retain all contribution notices and credits. +** Modified files should be clearly indicated as such, including ** +** renaming them and changing author support contact information. ** + +File list of work: IEEEtrantools.sty, IEEEtrantools_doc.txt, changelog.txt +************************************************************************* + + +Available package options e.g., \usepackage[redeflists]{IEEEtrantools} + + redeflists + Causes IEEEtrantools to redefine the standard LaTeX itemize, + enumerate and description (IED) lists to their IEEE versions. + The default behavior is to retain the standard definitions + of itemize, enumerate and description. The IEEEtran versions are + always available as IEEEitemize, IEEEenumerate and IEEEdescription + and the original LaTeX versions are always available as LaTeXitemize, + LaTeXenumerate and LaTeXdescription. + +********************************************************************** + +The IEEEtrantools.sty package provides several commands from IEEEtran.cls +so that they can be used under other LaTeX classes. This guide covers only +the differences in the use (or undocumented uses) of the commands from +those provided by IEEEtran.cls. For complete documentation on these +commands, see the relevant sections in the IEEEtran_HOWTO manual which +is available at +http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ + +IEEEtrantools.sty provides \IEEEPARstart; the \bstctlcite command for the +control entry types of IEEEtran.bst V1.00 and later; the IEEE IED list +environments; and the complete IEEEeqnarray family, including the +IEEEeqnarray support commands, the IEEEproof environment and +\IEEEauthorrefmark. + +Please note that, as a package file, IEEEtrantools.sty will not attempt +to alter document formatting (other than if the IDE lists are redefined +if the redeflists option is invoked) as controlled by the class file. +Therefore, there may be spacing/layout differences between the results +of the same IEEEtran commands under IEEEtran.cls and the user's class +file as different fonts, default values for the various length commands, +etc., are used than under IEEEtran.cls. + + + + + +*** \IEEEPARstart *** + +\IEEEPARstart{}{} is used to provide a large initial "drop cap" letter(s) as +well as to capitialize the remaining letters of the first word of a chapter +or section (if placed within the second argument). e.g., +\IEEEPARstart{O}{nce} + +Unlike IEEEtran.cls, IEEEtrantools.sty provides the user with a way to +control the various parameters of the \IEEEPARstart letters (in IEEEtran.cls +these parameters are prefixed with a \@, e.g., \@IEEEPARstartDROPLINES +to discourage casual or accidental alteration). + +Below is how the user can alter them (after the IEEEtrantools.sty package +is loaded). Default values are shown. IEEEtrantools will not override +any previous definitions of these parameters if they already exist when +the package is loaded. + + +% The number of lines that are indented to clear the drop cap letter. +% You may need to increase this beyond 1 + \IEEEPARstartDROPDEPTH if +% you are using lowercase letters with descenders. +\renewcommand{\IEEEPARstartDROPLINES}{2} + +% The minimum number of lines left on a page to allow an \IEEEPARstart. +% Does not take into consideration glue shrink, so it tends to be overly +% cautious. +\renewcommand{\IEEEPARstartMINPAGELINES}{2} + +% The height of the drop cap (*above* the baseline), is adjusted to match +% the height of this text in the current font (when \IEEEPARstart is called). +% Use a strut if you want a height not based on that of the main text font. +\renewcommand{\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 +% \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. +\renewcommand{\IEEEPARstartDROPDEPTH}{1.1\baselineskip} + +% The font the drop cap will be rendered in. The argument is a command that +% can take zero or one argument. +\renewcommand{\IEEEPARstartFONTSTYLE}{\bfseries} + +% Any additional, non-font related commands needed to modify the drop cap +% letter, can take zero or one argument. +\renewcommand{\IEEEPARstartCAPSTYLE}{\MakeUppercase} + +% The font that will be used to render the rest of the word (second argument +% to \IEEEPARstart), can take zero or one argument. +\renewcommand{\IEEEPARstartWORDFONTSTYLE}{\relax} + +% Any additional, non-font related commands needed to modify the rest of the +% word (second argument to \IEEEPARstart), can take zero or one argument. +\renewcommand{\IEEEPARstartWORDCAPSTYLE}{\MakeUppercase} + +% The horizontal separation distance from the drop letter to the main text. +% Lengths that depend on the font (i.e., ex, em, etc.) will be referenced to +% the font that is active when \IEEEPARstart is called. +\renewcommand{\IEEEPARstartSEP}{0.15em} + +% The Horizontal offset applied to the left of the drop cap. The drop cap +% can be shifted left (negative) or right (positive) using this parameter. +% Lengths that depend on the font (e.g., ex, em, etc.) will be referenced +% to the font that is active when \IEEEPARstart is called. +\renewcommand{\IEEEPARstartHOFFSET}{0em} + +For \IEEEPARstartSEP and \IEEEPARstartHOFFSET, you can also reference the +length variable, \IEEEPARstartletwidth, which will be set to the width of +the drop drop before it is rendered. e.g., +\renewcommand{\IEEEPARstartHOFFSET}{-0.5\IEEEPARstartletwidth} +will cause the drop cap to be shifted leftward by half its width. + +% Italic correction command applied at the end of the drop cap when +% evaluating its width. Without this, italic or slanted drop cap letters will +% "crash into" the main text because their full true width is not taken into +% consideration. +\renewcommand{\IEEEPARstartITLCORRECT}{\/} + + + + + +*** \bstctlcite *** + +\bstctlcite{} is used to issue a citation for a special IEEEtran.bst BibTeX +style control entry which can control various operating parameters of the +IEEEtran.bst file (V1.00 and later): + +\bstctlcite{IEEEexample:BSTcontrol} + +V1.2 and later of IEEEtrantools.sty provides for an optional argument so +that different auxiliary file specifiers may be used in documents with +multiple bibliographies: + +\bstctlcite[@auxoutsec]{IEEEexample:BSTcontrol} + +See the IEEEtran.bst documentation for details: +http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/bibtex +http://www.michaelshell.org/tex/ieeetran/bibtex/ + +\bstctlcite operates silently and will not alter the citation numbers or +place a citation entry into the main text or bibliography (when used with +IEEEtran.bst). It should not be used with .bst files that do not provide +support for these special BST control entries. + +See the IEEEtran.bst BibTeX style documentation for details. +http://www.michaelshell.org/tex/ieeetran/bibtex/ +http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/bibtex + + + + + +*** itemize, enumerate and description (IED) lists *** + +IEEEtrantools provides the IEEEitemize, IEEEenumerate and IEEEdescription +list environments that offer enhanced controls and make it much easier to +create such lists when the main text is "block indented" from the +labels (IEEE style). + +By default, the LaTeX IED list environments are not overridden with the +IEEE IED versions. To force this, load IEEEtrantools.sty with the +"redeflists" option: + +\usepackage[redeflists]{IEEEtrantools} + +In any event, the IEEE IED list environments are available as IEEEitemize, +IEEEenumerate, and IEEEdescription. The IEEE IED lists depend on the LaTeX +low-level list environment, so class files that redefine it may also alter +the IEEE IED list formatting. The original LaTeX IED environments (as +provided by the LaTeX kernel and class file) are always retained as +LaTeXitemize, LaTeXenumerate and LaTeXdescription. + +Beware that the default enumerate label width will not be correct if +the class file is not using normalfont "9)" style labeled enumerated lists. + +The support commands for the IEEE IED list environments (\IEEEsetlabelwidth, +\IEEEusemathlabelsep, \IEEEiedlabeljustifyl, etc.) are also provided. + +See the section on lists in the IEEEtran_HOWTO manual for full details +on the IEEE style lists. +http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ + + + +*** The IEEEeqnarray family *** + +Please note that IEEEtrantools provides and sets the length variable +\IEEEnormaljot. At the \begin{document}, \IEEEnormaljot will be set to +the current value of \jot. If the user later alters the document's +nominal \jot, the value of \IEEEnormaljot should be revised as well. + +The support commands for the IEEEeqnarray commands (\IEEEstrut, +\IEEEeqnarrayvrule, \IEEEvisiblestrutstrue, etc.) are also provided. + +For more information on the use of the IEEEeqnarray family of commands, +the following sources of information are recommended: + + 1. The IEEEtran HOWTO manual (IEEEeqnarray is covered in the Appendices): + http://mirror.ctan.org/macros/latex/contrib/IEEEtran/ + + 2. Stefan M. Moser's "How to Typeset Equations in LaTeX" + http://moser.cm.nctu.edu.tw/manuals.html#eqlatex + + 3. Tobias Oetiker's "The Not So Short Introduction to LaTeX2e" + http://www.ctan.org/tex-archive/info/lshort/ + + + + +*** The IEEEproof environment *** + +IEEEtrantools provides the IEEEtran IEEEproof environment as well as +several undocumented IEEEtran IEEEproof commands that are useful for +non-IEEE related work: + + 1. \IEEEQEDoff, when issued within an IEEEproof, turns off the + automatic generation of the \IEEEQED symbol at the end of + the proof. + + 2. \IEEEQEDhere emits an \IEEEQED symbol at the place it is executed + and turns off the \IEEEQED symbol at the end of the proof. This + can be useful when using IEEEeqnarray within IEEEproof + \begin{IEEEproof} + \begin{IEEEeqnarray*}{c+x*} + x=1. & \IEEEQEDhere + \end{IEEEeqnarray*} + \end{IEEEproof} + % Thanks to Stefan M. Moser for this example. + + 3. \IEEEQEDhereeqn is somewhat similar to the AMS \qedhere and + is for use with the standard equation environment within + IEEEproof: + \begin{IEEEproof} + \begin{equation*} + x=1. \IEEEQEDhereeqn + \end{equation*} + \end{IEEEproof} + Note that \IEEEQEDhereeqn will put the QED symbol in front + of an equation number if it exists. + + 4. \IEEEproofindentspace allows users to change the indention + of the proof environment from its IEEEtran default of 2\parindent: + + \renewcommand{\IEEEproofindentspace}{1\parindent} + + Place the above redefinition before any IEEEproof environments it is + to affect. + + + + +*** \IEEEauthorrefmark{} *** + +The \IEEEauthorrefmark{} simply takes a number as an argument and generates +a corresponding superscript symbol. Used in IEEEtran.cls to link author +names to their affiliations: + + Michael Shell\IEEEauthorrefmark{2} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%% End of IEEEtrantools_doc.txt %%%%%%%%%%%%%%%%%% +% That's all folks! + diff -r 000000000000 -r 8319d82cab07 tools/README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/README Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,87 @@ + +September 17, 2014 + + +The IEEEtrantools.sty package provides several commands from the +IEEEtran.cls file so that they can be used under other LaTeX classes. The +user guide provided here covers only the differences in the use of the +commands from those provided by IEEEtran.cls. For complete documentation +on these commands, see the relevant sections in the IEEEtran_HOWTO manual +of the IEEEtran LaTeX class, specifically the section covering IEEE-style +lists and the Appendix covering the IEEEeqnarray commands. + +The IEEEtrantools.sty package provides the following IEEEtran.cls commands: + + 1. \IEEEPARstart which produces large initial "drop cap" letters. + + 2. the \bstctlcite command for the control entry types of IEEEtran.bst + V1.00 and later + + 3. the IEEE itemize, enumerate and description list environments + + 4. the complete IEEEeqnarray family for producing multiline equations + as well as matrices and tables, including the IEEEeqnarray support + commands. + + 5. The IEEEproof environment. + + 6. \IEEEauthorrefmark{} + +IEEEtrantools.sty is not needed and should not be used with IEEEtran.cls. + +For helpful tips, answers to frequently asked questions and other support, +visit the IEEEtrantools support page at my website: + +http://www.michaelshell.org/tex/ieeetran/tools/ + + +Enjoy! + +Michael Shell +http://www.michaelshell.org/ + + +******* +2014/09/17 V1.4 (V1.8a of IEEEtran.cls) changes: + + 1) Internal code improvements for command argument processing and + support for future features. + + +********************************** Files ********************************** + +README - This file. + +IEEEtrantools.sty - The LaTeX package file. + +IEEEtrantools_doc.txt - The user manual - supplementary to the + IEEEtran_HOWTO manual. + +changelog.txt - The complete changelog history. + +*************************************************************************** +Legal Notice: +This code is offered as-is without any warranty either expressed or +implied; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE! +User assumes all risk. +In no event shall IEEE or any contributor to this code be liable for +any damages or losses, including, but not limited to, incidental, +consequential, or any other damages, resulting from the use or misuse +of any information contained here. + +All comments are the opinions of their respective authors and are not +necessarily endorsed by the IEEE. + +This work is distributed under the LaTeX Project Public License (LPPL) +( http://www.latex-project.org/ ) version 1.3, and may be freely used, +distributed and modified. A copy of the LPPL, version 1.3, is included +in the base LaTeX documentation of all distributions of LaTeX released +2003/12/01 or later. +Retain all contribution notices and credits. +** Modified files should be clearly indicated as such, including ** +** renaming them and changing author support contact information. ** + +File list of work: IEEEtrantools.sty, IEEEtrantools_doc.txt, changelog.txt +*************************************************************************** + diff -r 000000000000 -r 8319d82cab07 tools/changelog.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/changelog.txt Sun Feb 28 21:41:40 2016 +0900 @@ -0,0 +1,104 @@ + + + Changelog history of the IEEEtrantools.sty LaTeX package. + 2014/09/17 + by Michael Shell (MDS) + http://www.michaelshell.org/ + + + +2014/09/17 V1.4 (V1.8a of IEEEtran.cls) changes: + + 1) Internal code improvements for command argument processing and + support for future features. + + +******* +12/2012 V1.3 (V1.8 of IEEEtran.cls) changes: + + 1) No longer redefines the standard LaTeX itemize, enumerate and + description (IED) lists by default. (e.g., the older package option + "retainorgcmds" is now the default behavior.) A new package option, + "redeflists", can be invoked to redefine the standard IED list + environments to their IEEE versions. IEEEitemize, IEEEenumerate and + IEEEdescription remain available in any case. The redeflists option + may not be compatible with other packages that alter the standard + IED list environments. + + 2) Added new *-forms of \IEEEyesnumber*, \IEEEnonumber*, \IEEEyessubnumber*, + and \IEEEnosubnumber* (the non-star form of the latter is also new) which + persist across IEEEeqnarray lines until countermanded. To provide for + continued subequations across instances of IEEEeqnarrays as well as for + subequations that follow a main equation (e.g., 14, 14a, 14b ...) + \IEEEyessubnumber no longer automatically increments the equation number + on it's first invocation of a subequation group. Invoke both + \IEEEyesnumber\IEEEyessubnumber together to start a new + equation/subequation group. + + 3) Hyperref links now work with IEEEeqnarray equations. + Thanks to Stefan M. Moser for reporting this problem. + + 4) Now provides the IEEEproof environment, as well as the + \IEEEQEDhere, \IEEEQEDhereeqn and \IEEEQEDoff commands. + Also, \IEEEproofindentspace allows users to change the + IEEEproof indentation via \renewcommand. + Thanks to Mark D. Butala, Hennadiy Leontyev and Stefan M. Moser + for suggesting this. Special thanks to Stefan M. Moser for beta + testing and additional suggestions which improved IEEEproof. + + 5) Revised \IEEEeqnarraymulticol{} to allow inner alignments without + requiring extra containing braces to prevent an incomplete \ifx error. + Thanks to Stefan M. Moser and Auke van der Valk for reporting this + problem. + + 6) Added \IEEEauthorrefmark. + + 7) Removed support for legacy IED list commands. + IEEEtrantools no longer defines or references \labelindent so as to + avoid namespace problems with list packages that define it. + Thanks to Sven Köhler for reporting the problem with enumitem.sty. + + +******* + 1/2007 V1.2 (V1.7 of IEEEtran.cls) changes: + + 1) Several commands and environments have depreciated in favor of + replacements with IEEE prefixes to better avoid potential future name + clashes with other packages. Legacy code retained to allow + use of the obsolete forms, but with an warning message to the + console during compilation: + \IEEEPARstart + For IED lists: + \IEEEiedlabeljustifyc, \IEEEiedlabeljustifyl, \IEEEiedlabeljustifyr, + \IEEEnocalcleftmargin, \IEEElabelindent, \IEEEsetlabelwidth, + \IEEEusemathlabelsep + + 2) These commands/lengths now require the IEEE prefix and do not have + legacy support: \IEEEnormaljot. + For IED lists: \ifIEEEnocalcleftmargin, \ifIEEEnolabelindentfactor, + \IEEEiedlistdecl, \IEEElabelindentfactor + + 3) \normalsizebaselineskip no longer provided. + + 4) New \IEEEPARstart controls: + \IEEEPARstartHEIGHTTEXT, \IEEEPARstartFONTSTYLE, \IEEEPARstartCAPSTYLE, + \IEEEPARstartWORDFONTSTYLE, \IEEEPARstartWORDCAPSTYLE, + \IEEEPARstartHOFFSET, \IEEEPARstartITLCORRECT + and the (output) length \IEEEPARstartletwidth. + + 5) Provide for an optional argument to \bstctlcite to provide a way to + specify a different aux file. + + +******* + 11/2002 V1.1 (V1.6b of IEEEtran.cls) changes: + + 1) In addition to the IEEE IED lists, the original LaTeX IED style list + environments are now preserved as LaTeXitemize, LaTeXenumerate, and + LaTeXdescription. Also, users can now redefine \makelabel within + IEEE IED list controls. There may be some use for these in specialized + applications. Thanks to Eli Barzilay for suggesting this feature. + + +******* +