From 1ada4b392a528c8c41215c3c89a5083f642ad695 Mon Sep 17 00:00:00 2001 From: Corwin Perren Date: Sun, 6 May 2018 16:46:11 -0700 Subject: [PATCH] Added spring midterm progress report --- .../IEEEtran.cls | 6347 ++++++++++++ .../figures/gantt_image.pdf | Bin 0 -> 781980 bytes .../goals/goals.tex | 13 + .../spring_midterm_progress_report/latexmk.pl | 8802 +++++++++++++++++ .../spring_midterm_progress_report/latexmkrc | 31 + .../spring_midterm_progress_report/makefile | 18 + .../problems_solutions/problems_solutions.tex | 3 + .../progress/chris.tex | 27 + .../progress/commits.tex | 24 + .../progress/corwin.tex | 17 + .../progress/ken.tex | 36 + .../progress/progress.tex | 7 + .../progress/progress_remaining.tex | 7 + .../progress/progress_summary.tex | 33 + .../progress_report.tex | 149 + .../purpose/purpose.tex | 6 + 16 files changed, 15520 insertions(+) create mode 100644 cs_capstone_documents/spring_midterm_progress_report/IEEEtran.cls create mode 100644 cs_capstone_documents/spring_midterm_progress_report/figures/gantt_image.pdf create mode 100644 cs_capstone_documents/spring_midterm_progress_report/goals/goals.tex create mode 100644 cs_capstone_documents/spring_midterm_progress_report/latexmk.pl create mode 100644 cs_capstone_documents/spring_midterm_progress_report/latexmkrc create mode 100644 cs_capstone_documents/spring_midterm_progress_report/makefile create mode 100644 cs_capstone_documents/spring_midterm_progress_report/problems_solutions/problems_solutions.tex create mode 100644 cs_capstone_documents/spring_midterm_progress_report/progress/chris.tex create mode 100644 cs_capstone_documents/spring_midterm_progress_report/progress/commits.tex create mode 100644 cs_capstone_documents/spring_midterm_progress_report/progress/corwin.tex create mode 100644 cs_capstone_documents/spring_midterm_progress_report/progress/ken.tex create mode 100644 cs_capstone_documents/spring_midterm_progress_report/progress/progress.tex create mode 100644 cs_capstone_documents/spring_midterm_progress_report/progress/progress_remaining.tex create mode 100644 cs_capstone_documents/spring_midterm_progress_report/progress/progress_summary.tex create mode 100644 cs_capstone_documents/spring_midterm_progress_report/progress_report.tex create mode 100644 cs_capstone_documents/spring_midterm_progress_report/purpose/purpose.tex diff --git a/cs_capstone_documents/spring_midterm_progress_report/IEEEtran.cls b/cs_capstone_documents/spring_midterm_progress_report/IEEEtran.cls new file mode 100644 index 0000000..8d2b1c6 --- /dev/null +++ b/cs_capstone_documents/spring_midterm_progress_report/IEEEtran.cls @@ -0,0 +1,6347 @@ +%% +%% IEEEtran.cls 2015/08/26 version V1.8b +%% +%% This is the IEEEtran LaTeX class for authors of the Institute of +%% Electrical and Electronics Engineers (IEEE) Transactions journals and +%% conferences. +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/pkg/ieeetran +%% and +%% http://www.ieee.org/ +%% +%% Based on the original 1993 IEEEtran.cls, but with many bug fixes +%% and enhancements (from both JVH and MDS) over the 1996/7 version. +%% +%% +%% Contributors: +%% Gerry Murray (1993), Silvano Balemi (1993), +%% Jon Dixon (1996), Peter N"uchter (1996), +%% Juergen von Hagen (2000), and Michael Shell (2001-2014) +%% +%% +%% Copyright (c) 1993-2000 by Gerry Murray, Silvano Balemi, +%% Jon Dixon, Peter N"uchter, +%% Juergen von Hagen +%% and +%% Copyright (c) 2001-2015 by Michael Shell +%% +%% Current maintainer (V1.3 to V1.8b): Michael Shell +%% See: +%% http://www.michaelshell.org/ +%% for current contact information. +%% +%% Special thanks to Peter Wilson (CUA) and Donald Arseneau +%% for allowing the inclusion of the \@ifmtarg command +%% from their ifmtarg LaTeX package. +%% +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall the IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%% +%% This work is distributed under the LaTeX Project Public License (LPPL) +%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, +%% distributed and modified. A copy of the LPPL, version 1.3, is included +%% in the base LaTeX documentation of all distributions of LaTeX released +%% 2003/12/01 or later. +%% Retain all contribution notices and credits. +%% ** Modified files should be clearly indicated as such, including ** +%% ** renaming them and changing author support contact information. ** +%% +%% File list of work: IEEEtran.cls, IEEEtran_HOWTO.pdf, bare_adv.tex, +%% bare_conf.tex, bare_jrnl.tex, bare_conf_compsoc.tex, +%% bare_jrnl_compsoc.tex +%% +%% Major changes to the user interface should be indicated by an +%% increase in the version numbers. If a version is a beta, it will +%% be indicated with a BETA suffix, i.e., 1.4 BETA. +%% Small changes can be indicated by appending letters to the version +%% such as "IEEEtran_v14a.cls". +%% In all cases, \Providesclass, any \typeout messages to the user, +%% \IEEEtransversionmajor and \IEEEtransversionminor must reflect the +%% correct version information. +%% The changes should also be documented via source comments. +%%************************************************************************* +%% +% +% Available class options +% e.g., \documentclass[10pt,conference]{IEEEtran} +% +% *** choose only one from each category *** +% +% 9pt, 10pt, 11pt, 12pt +% Sets normal font size. The default is 10pt. +% +% conference, journal, technote, peerreview, peerreviewca +% determines format mode - conference papers, journal papers, +% correspondence papers (technotes), or peer review papers. The user +% should also select 9pt when using technote. peerreview is like +% journal mode, but provides for a single-column "cover" title page for +% anonymous peer review. The paper title (without the author names) is +% repeated at the top of the page after the cover page. For peer review +% papers, the \IEEEpeerreviewmaketitle command must be executed (will +% automatically be ignored for non-peerreview modes) at the place the +% cover page is to end, usually just after the abstract (keywords are +% not normally used with peer review papers). peerreviewca is like +% peerreview, but allows the author names to be entered and formatted +% as with conference mode so that author affiliation and contact +% information can be easily seen on the cover page. +% The default is journal. +% +% draft, draftcls, draftclsnofoot, final +% determines if paper is formatted as a widely spaced draft (for +% handwritten editor comments) or as a properly typeset final version. +% draftcls restricts draft mode to the class file while all other LaTeX +% packages (i.e., \usepackage{graphicx}) will behave as final - allows +% for a draft paper with visible figures, etc. draftclsnofoot is like +% draftcls, but does not display the date and the word "DRAFT" at the foot +% of the pages. If using one of the draft modes, the user will probably +% also want to select onecolumn. +% The default is final. +% +% letterpaper, a4paper, cspaper +% determines paper size: 8.5in X 11in, 210mm X 297mm or 7.875in X 10.75in. +% Changing the paper size in the standard journal and conference modes +% will not alter the typesetting of the document - only the margins will +% be affected. In particular, documents using the a4paper option will +% have reduced side margins (A4 is narrower than US letter) and a longer +% bottom margin (A4 is longer than US letter). For both cases, the top +% margins will be the same and the text will be horizontally centered. +% For the compsoc conference and draft modes, it is the margins that will +% remain constant, and thus the text area size will vary, with changes in +% the paper size. +% The cspaper option is the special ``trim'' paper size (7.875in x 10.75in) +% used in the actual publication of Computer Society journals. Under +% compsoc journal mode, this option does not alter the typesetting of the +% document. Authors should invoke the cspaper option only if requested to +% do so by the editors of the specific journal they are submitting to. +% For final submission to the IEEE, authors should generally use US letter +% (8.5 X 11in) paper unless otherwise instructed. Note that authors should +% ensure that all post-processing (ps, pdf, etc.) uses the same paper +% specificiation as the .tex document. Problems here are by far the number +% one reason for incorrect margins. IEEEtran will automatically set the +% default paper size under pdflatex (without requiring any change to +% pdftex.cfg), so this issue is more important to dvips users. Fix +% config.ps, config.pdf, or ~/.dvipsrc for dvips, or use the +% dvips -t papersize option instead as needed. For the cspaper option, +% the corresponding dvips paper name is "ieeecs". +% See the testflow documentation +% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/testflow +% for more details on dvips paper size configuration. +% The default is letterpaper. +% +% oneside, twoside +% determines if layout follows single sided or two sided (duplex) +% printing. The only notable change is with the headings at the top of +% the pages. +% The default is oneside. +% +% onecolumn, twocolumn +% determines if text is organized into one or two columns per page. One +% column mode is usually used only with draft papers. +% The default is twocolumn. +% +% comsoc, compsoc, transmag +% Use the format of the IEEE Communications Society, IEEE Computer Society +% or IEEE Transactions on Magnetics, respectively. +% +% romanappendices +% Use the "Appendix I" convention when numbering appendices. IEEEtran.cls +% now defaults to Alpha "Appendix A" convention - the opposite of what +% v1.6b and earlier did. +% +% captionsoff +% disables the display of the figure/table captions. Some IEEE journals +% request that captions be removed and figures/tables be put on pages +% of their own at the end of an initial paper submission. The endfloat +% package can be used with this class option to achieve this format. +% +% nofonttune +% turns off tuning of the font interword spacing. Maybe useful to those +% not using the standard Times fonts or for those who have already "tuned" +% their fonts. +% The default is to enable IEEEtran to tune font parameters. +% +% +%---------- +% Available CLASSINPUTs provided (all are macros unless otherwise noted): +% \CLASSINPUTbaselinestretch +% \CLASSINPUTinnersidemargin +% \CLASSINPUToutersidemargin +% \CLASSINPUTtoptextmargin +% \CLASSINPUTbottomtextmargin +% +% Available CLASSINFOs provided: +% \ifCLASSINFOpdf (TeX if conditional) +% \CLASSINFOpaperwidth (macro) +% \CLASSINFOpaperheight (macro) +% \CLASSINFOnormalsizebaselineskip (length) +% \CLASSINFOnormalsizeunitybaselineskip (length) +% +% Available CLASSOPTIONs provided: +% all class option flags (TeX if conditionals) unless otherwise noted, +% e.g., \ifCLASSOPTIONcaptionsoff +% point size options provided as a single macro: +% \CLASSOPTIONpt +% which will be defined as 9, 10, 11, or 12 depending on the document's +% normalsize point size. +% also, class option peerreviewca implies the use of class option peerreview +% and classoption draft implies the use of class option draftcls + + + + + +\ProvidesClass{IEEEtran}[2015/08/26 V1.8b by Michael Shell] +\typeout{-- See the "IEEEtran_HOWTO" manual for usage information.} +\typeout{-- http://www.michaelshell.org/tex/ieeetran/} +\NeedsTeXFormat{LaTeX2e} + +% IEEEtran.cls version numbers, provided as of V1.3 +% These values serve as a way a .tex file can +% determine if the new features are provided. +% The version number of this IEEEtrans.cls can be obtained from +% these values. i.e., V1.4 +% KEEP THESE AS INTEGERS! i.e., NO {4a} or anything like that- +% (no need to enumerate "a" minor changes here) +\def\IEEEtransversionmajor{1} +\def\IEEEtransversionminor{8} + + +% hook to allow easy changeover to IEEEtran.cls/tools.sty error reporting +\def\@IEEEclspkgerror{\ClassError{IEEEtran}} + + +% These do nothing, but provide them like in article.cls +\newif\if@restonecol +\newif\if@titlepage + + +% class option conditionals +\newif\ifCLASSOPTIONonecolumn \CLASSOPTIONonecolumnfalse +\newif\ifCLASSOPTIONtwocolumn \CLASSOPTIONtwocolumntrue + +\newif\ifCLASSOPTIONoneside \CLASSOPTIONonesidetrue +\newif\ifCLASSOPTIONtwoside \CLASSOPTIONtwosidefalse + +\newif\ifCLASSOPTIONfinal \CLASSOPTIONfinaltrue +\newif\ifCLASSOPTIONdraft \CLASSOPTIONdraftfalse +\newif\ifCLASSOPTIONdraftcls \CLASSOPTIONdraftclsfalse +\newif\ifCLASSOPTIONdraftclsnofoot \CLASSOPTIONdraftclsnofootfalse + +\newif\ifCLASSOPTIONpeerreview \CLASSOPTIONpeerreviewfalse +\newif\ifCLASSOPTIONpeerreviewca \CLASSOPTIONpeerreviewcafalse + +\newif\ifCLASSOPTIONjournal \CLASSOPTIONjournaltrue +\newif\ifCLASSOPTIONconference \CLASSOPTIONconferencefalse +\newif\ifCLASSOPTIONtechnote \CLASSOPTIONtechnotefalse + +\newif\ifCLASSOPTIONnofonttune \CLASSOPTIONnofonttunefalse + +\newif\ifCLASSOPTIONcaptionsoff \CLASSOPTIONcaptionsofffalse + +\newif\ifCLASSOPTIONcomsoc \CLASSOPTIONcomsocfalse +\newif\ifCLASSOPTIONcompsoc \CLASSOPTIONcompsocfalse +\newif\ifCLASSOPTIONtransmag \CLASSOPTIONtransmagfalse + +\newif\ifCLASSOPTIONromanappendices \CLASSOPTIONromanappendicesfalse + + +% class info conditionals + +% indicates if pdf (via pdflatex) output +\newif\ifCLASSINFOpdf \CLASSINFOpdffalse + + +% V1.6b internal flag to show if using a4paper +\newif\if@IEEEusingAfourpaper \@IEEEusingAfourpaperfalse +% V1.6b internal flag to show if using cspaper +\newif\if@IEEEusingcspaper \@IEEEusingcspaperfalse + + +% IEEEtran class scratch pad registers +% dimen +\newdimen\@IEEEtrantmpdimenA +\newdimen\@IEEEtrantmpdimenB +\newdimen\@IEEEtrantmpdimenC +% count +\newcount\@IEEEtrantmpcountA +\newcount\@IEEEtrantmpcountB +\newcount\@IEEEtrantmpcountC +% token list +\newtoks\@IEEEtrantmptoksA + +% we use \CLASSOPTIONpt so that we can ID the point size (even for 9pt docs) +% as well as LaTeX's \@ptsize to retain some compatability with some +% external packages +\def\@ptsize{0} +% LaTeX does not support 9pt, so we set \@ptsize to 0 - same as that of 10pt +\DeclareOption{9pt}{\def\CLASSOPTIONpt{9}\def\@ptsize{0}} +\DeclareOption{10pt}{\def\CLASSOPTIONpt{10}\def\@ptsize{0}} +\DeclareOption{11pt}{\def\CLASSOPTIONpt{11}\def\@ptsize{1}} +\DeclareOption{12pt}{\def\CLASSOPTIONpt{12}\def\@ptsize{2}} + + + +\DeclareOption{letterpaper}{\setlength{\paperwidth}{8.5in}% + \setlength{\paperheight}{11in}% + \@IEEEusingAfourpaperfalse + \@IEEEusingcspaperfalse + \def\CLASSOPTIONpaper{letter}% + \def\CLASSINFOpaperwidth{8.5in}% + \def\CLASSINFOpaperheight{11in}} + + +\DeclareOption{a4paper}{\setlength{\paperwidth}{210mm}% + \setlength{\paperheight}{297mm}% + \@IEEEusingAfourpapertrue + \@IEEEusingcspaperfalse + \def\CLASSOPTIONpaper{a4}% + \def\CLASSINFOpaperwidth{210mm}% + \def\CLASSINFOpaperheight{297mm}} + +% special paper option for compsoc journals +\DeclareOption{cspaper}{\setlength{\paperwidth}{7.875in}% + \setlength{\paperheight}{10.75in}% + \@IEEEusingcspapertrue + \@IEEEusingAfourpaperfalse + \def\CLASSOPTIONpaper{ieeecs}% + \def\CLASSINFOpaperwidth{7.875in}% + \def\CLASSINFOpaperheight{10.75in}} + +\DeclareOption{oneside}{\@twosidefalse\@mparswitchfalse + \CLASSOPTIONonesidetrue\CLASSOPTIONtwosidefalse} +\DeclareOption{twoside}{\@twosidetrue\@mparswitchtrue + \CLASSOPTIONtwosidetrue\CLASSOPTIONonesidefalse} + +\DeclareOption{onecolumn}{\CLASSOPTIONonecolumntrue\CLASSOPTIONtwocolumnfalse} +\DeclareOption{twocolumn}{\CLASSOPTIONtwocolumntrue\CLASSOPTIONonecolumnfalse} + +% If the user selects draft, then this class AND any packages +% will go into draft mode. +\DeclareOption{draft}{\CLASSOPTIONdrafttrue\CLASSOPTIONdraftclstrue + \CLASSOPTIONdraftclsnofootfalse} +% draftcls is for a draft mode which will not affect any packages +% used by the document. +\DeclareOption{draftcls}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclstrue + \CLASSOPTIONdraftclsnofootfalse} +% draftclsnofoot is like draftcls, but without the footer. +\DeclareOption{draftclsnofoot}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclstrue + \CLASSOPTIONdraftclsnofoottrue} +\DeclareOption{final}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclsfalse + \CLASSOPTIONdraftclsnofootfalse} + +\DeclareOption{journal}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournaltrue\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} + +\DeclareOption{conference}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencetrue\CLASSOPTIONtechnotefalse} + +\DeclareOption{technote}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotetrue} + +\DeclareOption{peerreview}{\CLASSOPTIONpeerreviewtrue\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} + +\DeclareOption{peerreviewca}{\CLASSOPTIONpeerreviewtrue\CLASSOPTIONpeerreviewcatrue + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} + +\DeclareOption{nofonttune}{\CLASSOPTIONnofonttunetrue} + +\DeclareOption{captionsoff}{\CLASSOPTIONcaptionsofftrue} + +\DeclareOption{comsoc}{\CLASSOPTIONcomsoctrue\CLASSOPTIONcompsocfalse\CLASSOPTIONtransmagfalse} + +\DeclareOption{compsoc}{\CLASSOPTIONcomsocfalse\CLASSOPTIONcompsoctrue\CLASSOPTIONtransmagfalse} + +\DeclareOption{transmag}{\CLASSOPTIONtransmagtrue\CLASSOPTIONcomsocfalse\CLASSOPTIONcompsocfalse} + +\DeclareOption{romanappendices}{\CLASSOPTIONromanappendicestrue} + + +% default to US letter paper, 10pt, twocolumn, one sided, final, journal +\ExecuteOptions{letterpaper,10pt,twocolumn,oneside,final,journal} +% overrride these defaults per user requests +\ProcessOptions + + + +%% -- Command Argument Scanning Support Functions -- + +% Sets the category codes for punctuation to their normal values. +% For local use with argument scanning. +\def\IEEEnormalcatcodespunct{\catcode`\!=12 \catcode`\,=12 \catcode`\:=12 +\catcode`\;=12 \catcode`\`=12 \catcode`\'=12 \catcode`\"=12 \catcode`\.=12 +\catcode`\/=12 \catcode`\?=12 \catcode`\*=12 \catcode`\+=12 \catcode`\-=12 +\catcode`\<=12 \catcode`\>=12 \catcode`\(=12 \catcode`\)=12 \catcode`\[=12 +\catcode`\]=12 \catcode`\==12 \catcode`\|=12} +% Sets the category codes for numbers to their normal values. +% For local use with argument scanning. +\def\IEEEnormalcatcodesnum{\catcode`\0=12 \catcode`\1=12 \catcode`\2=12 +\catcode`\3=12 \catcode`\4=12 \catcode`\5=12 \catcode`\6=12 \catcode`\7=12 +\catcode`\8=12 \catcode`\9=12} +% combined action of \IEEEnormalcatcodespunct and \IEEEnormalcatcodesnum +\def\IEEEnormalcatcodes{\IEEEnormalcatcodespunct\IEEEnormalcatcodesnum} + + +% usage: \@IEEEextracttoken*{} +% \@IEEEextracttoken fully expands its argument (which it then stores in +% \@IEEEextracttokenarg) via \edef and then the meaning of the first +% nonbrace (but including the empty group) token found is assigned via \let +% to \@IEEEextractedtoken as well as stored in the macro +% \@IEEEextractedtokenmacro. Tokens that would otherwise be discarded during +% the acquisition of the first are stored in \@IEEEextractedtokensdiscarded, +% however their original relative brace nesting depths are not guaranteed to +% be preserved. +% If the argument is empty, or if a first nonbrace token does not exist (or +% is an empty group), \@IEEEextractedtoken will be \relax and +% \@IEEEextractedtokenmacro and \@IEEEextractedtokensdiscarded will be empty. +% +% For example: +% \@IEEEextracttoken{{{ab}{cd}}{{ef}g}} +% results in: +% +% \@IEEEextracttokenarg ==> a macro containing {{ab}{cd}}{{ef}g} +% \@IEEEextractedtoken ==> the letter a +% \@IEEEextractedtokenmacro ==> a macro containing a +% \@IEEEextractedtokensdiscarded ==> a macro containing bcd{ef}g +% +% the *-star form, \@IEEEextracttoken*, does not expand its argument +% contents during processing. +\def\@IEEEextracttoken{\@ifstar{\let\@IEEEextracttokendef=\def\@@IEEEextracttoken}{\let\@IEEEextracttokendef=\edef\@@IEEEextracttoken}} + +\def\@@IEEEextracttoken#1{\@IEEEextracttokendef\@IEEEextracttokenarg{#1}\relax +\def\@IEEEextractedtokensdiscarded{}\relax % initialize to empty +% if the macro is unchanged after being acquired as a single undelimited argument +% with anything after it being stripped off as a delimited argument +% we know we have one token without any enclosing braces. loop until this is true. +\let\@IEEEextracttokencurgroup\@IEEEextracttokenarg +\loop + % trap case of an empty argument as this would cause a problem with + % \@@@IEEEextracttoken's first (nondelimited) argument acquisition + \ifx\@IEEEextracttokencurgroup\@empty + \def\@IEEEextractedtokenmacro{}\relax + \else + \expandafter\@@@IEEEextracttoken\@IEEEextracttokencurgroup\@IEEEgeneralsequenceDELIMITER\relax + \fi + \ifx\@IEEEextractedtokenmacro\@IEEEextracttokencurgroup + \else + \let\@IEEEextracttokencurgroup=\@IEEEextractedtokenmacro +\repeat +% we can safely do a \let= here because there should be at most one token +% the relax is needed to handle the case of no token found +\expandafter\let\expandafter\@IEEEextractedtoken\@IEEEextractedtokenmacro\relax} + +\def\@@@IEEEextracttoken#1#2\@IEEEgeneralsequenceDELIMITER{\def\@IEEEextractedtokenmacro{#1}\relax +\def\@@IEEEextractedtokensdiscarded{#2}\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter +\@IEEEextractedtokensdiscarded\expandafter\expandafter\expandafter +{\expandafter\@@IEEEextractedtokensdiscarded\@IEEEextractedtokensdiscarded}} +%% +%% -- End of Command Argument Scanning Support Functions -- + + + +% Computer Society conditional execution command +\long\def\@IEEEcompsoconly#1{\relax\ifCLASSOPTIONcompsoc\relax#1\relax\fi\relax} +% inverse +\long\def\@IEEEnotcompsoconly#1{\relax\ifCLASSOPTIONcompsoc\else\relax#1\relax\fi\relax} +% compsoc conference +\long\def\@IEEEcompsocconfonly#1{\relax\ifCLASSOPTIONcompsoc\ifCLASSOPTIONconference\relax#1\relax\fi\fi\relax} +% compsoc not conference +\long\def\@IEEEcompsocnotconfonly#1{\relax\ifCLASSOPTIONcompsoc\ifCLASSOPTIONconference\else\relax#1\relax\fi\fi\relax} + + +% comsoc verify that newtxmath, mtpro2, mt11p or mathtime has been loaded +\def\@IEEEcomsocverifymathfont{\typeout{-- Verifying Times compatible math font.}\relax + \@ifpackageloaded{newtxmath}{\typeout{-- newtxmath loaded, OK.}}{\@@IEEEcomsocverifymathfont}} +\def\@@IEEEcomsocverifymathfont{\@ifpackageloaded{mtpro2}{\typeout{-- mtpro2 loaded, OK.}}{\@@@IEEEcomsocverifymathfont}} +\def\@@@IEEEcomsocverifymathfont{\@ifpackageloaded{mt11p}{\typeout{-- mt11p2 loaded, OK.}}{\@@@@IEEEcomsocverifymathfont}} +\def\@@@@IEEEcomsocverifymathfont{\@ifpackageloaded{mathtime}{\typeout{-- mathtime loaded, OK.}}{\@IEEEcomsocenforcemathfont}} + +% comsoc, if a Times math font was not loaded by user, enforce it +\def\@IEEEcomsocenforcemathfont{\typeout{** Times compatible math font not found, forcing.}\relax +\IfFileExists{newtxmath.sty}{\typeout{-- Found newtxmath, loading.}\RequirePackage{newtxmath}}{\@@IEEEcomsocenforcemathfont}} +\def\@@IEEEcomsocenforcemathfont{\IfFileExists{mtpro2.sty}{\typeout{-- Found mtpro2, loading.}\RequirePackage{mtpro2}}{\@@@IEEEcomsocenforcemathfont}} +\def\@@@IEEEcomsocenforcemathfont{\IfFileExists{mt11p.sty}{\typeout{-- Found mt11p, loading.}\RequirePackage{mt11p}}{\@@@@IEEEcomsocenforcemathfont}} +\def\@@@@IEEEcomsocenforcemathfont{\IfFileExists{mathtime.sty}{\typeout{-- Found mathtime, loading.}\RequirePackage{mathtime}}{\@@@@@IEEEcomsocenforcemathfont}} +% if no acceptable Times math font package found, error with newtxmath requirement +\def\@@@@@IEEEcomsocenforcemathfont{\typeout{** No Times compatible math font package found. newtxmath is required.}\RequirePackage{newtxmath}} + + +\ifCLASSOPTIONcomsoc + % ensure that if newtxmath is used, the cmintegrals option is also invoked + \PassOptionsToPackage{cmintegrals}{newtxmath} + % comsoc requires a Times like math font + % ensure this requirement is satisfied at document start + \AtBeginDocument{\@IEEEcomsocverifymathfont} +\fi + + + +% The IEEE uses Times Roman font, so we'll default to Times. +% These three commands make up the entire times.sty package. +\renewcommand{\sfdefault}{phv} +\renewcommand{\rmdefault}{ptm} +\renewcommand{\ttdefault}{pcr} + +% V1.7 compsoc nonconference papers, use Palatino/Palladio as the main text font, +% not Times Roman. +\@IEEEcompsocnotconfonly{\renewcommand{\rmdefault}{ppl}} + +% enable the selected main text font +\normalfont\selectfont + + +\ifCLASSOPTIONcomsoc + \typeout{-- Using IEEE Communications Society mode.} +\fi + +\ifCLASSOPTIONcompsoc + \typeout{-- Using IEEE Computer Society mode.} +\fi + + +% V1.7 conference notice message hook +\def\@IEEEconsolenoticeconference{\typeout{}% +\typeout{** Conference Paper **}% +\typeout{Before submitting the final camera ready copy, remember to:}% +\typeout{}% +\typeout{ 1. Manually equalize the lengths of two columns on the last page}% +\typeout{ of your paper;}% +\typeout{}% +\typeout{ 2. Ensure that any PostScript and/or PDF output post-processing}% +\typeout{ uses only Type 1 fonts and that every step in the generation}% +\typeout{ process uses the appropriate paper size.}% +\typeout{}} + + +% we can send console reminder messages to the user here +\AtEndDocument{\ifCLASSOPTIONconference\@IEEEconsolenoticeconference\fi} + + +% warn about the use of single column other than for draft mode +\ifCLASSOPTIONtwocolumn\else% + \ifCLASSOPTIONdraftcls\else% + \typeout{** ATTENTION: Single column mode is not typically used with IEEE publications.}% + \fi% +\fi + + +% V1.7 improved paper size setting code. +% Set pdfpage and dvips paper sizes. Conditional tests are similar to that +% of ifpdf.sty. Retain within {} to ensure tested macros are never altered, +% even if only effect is to set them to \relax. +% if \pdfoutput is undefined or equal to relax, output a dvips special +{\@ifundefined{pdfoutput}{\AtBeginDvi{\special{papersize=\CLASSINFOpaperwidth,\CLASSINFOpaperheight}}}{% +% pdfoutput is defined and not equal to \relax +% check for pdfpageheight existence just in case someone sets pdfoutput +% under non-pdflatex. If exists, set them regardless of value of \pdfoutput. +\@ifundefined{pdfpageheight}{\relax}{\global\pdfpagewidth\paperwidth +\global\pdfpageheight\paperheight}% +% if using \pdfoutput=0 under pdflatex, send dvips papersize special +\ifcase\pdfoutput +\AtBeginDvi{\special{papersize=\CLASSINFOpaperwidth,\CLASSINFOpaperheight}}% +\else +% we are using pdf output, set CLASSINFOpdf flag +\global\CLASSINFOpdftrue +\fi}} + +% let the user know the selected papersize +\typeout{-- Using \CLASSINFOpaperwidth\space x \CLASSINFOpaperheight\space +(\CLASSOPTIONpaper)\space paper.} + +\ifCLASSINFOpdf +\typeout{-- Using PDF output.} +\else +\typeout{-- Using DVI output.} +\fi + + +% The idea hinted here is for LaTeX to generate markleft{} and markright{} +% automatically for you after you enter \author{}, \journal{}, +% \journaldate{}, journalvol{}, \journalnum{}, etc. +% However, there may be some backward compatibility issues here as +% well as some special applications for IEEEtran.cls and special issues +% that may require the flexible \markleft{}, \markright{} and/or \markboth{}. +% We'll leave this as an open future suggestion. +%\newcommand{\journal}[1]{\def\@journal{#1}} +%\def\@journal{} + + + +% pointsize values +% used with ifx to determine the document's normal size +\def\@IEEEptsizenine{9} +\def\@IEEEptsizeten{10} +\def\@IEEEptsizeeleven{11} +\def\@IEEEptsizetwelve{12} + + + +% FONT DEFINITIONS (No sizexx.clo file needed) +% V1.6 revised font sizes, displayskip values and +% revised normalsize baselineskip to reduce underfull vbox problems +% on the 58pc = 696pt = 9.5in text height we want +% normalsize #lines/column baselineskip (aka leading) +% 9pt 63 11.0476pt (truncated down) +% 10pt 58 12pt (exact) +% 11pt 52 13.3846pt (truncated down) +% 12pt 50 13.92pt (exact) +% + +% we need to store the nominal baselineskip for the given font size +% in case baselinestretch ever changes. +% this is a dimen, so it will not hold stretch or shrink +\newdimen\@IEEEnormalsizeunitybaselineskip +\@IEEEnormalsizeunitybaselineskip\baselineskip + + + +%% ******* WARNING! ******* +%% +%% Authors should not alter font sizes, baselineskip ("leading"), +%% margins or other spacing values in an attempt to squeeze more +%% material on each page. +%% +%% The IEEE's own typesetting software will restore the correct +%% values when re-typesetting/proofing the submitted document, +%% possibly resulting in unexpected article over length charges. +%% +%% ******* WARNING! ******* + + +% 9pt option defaults +\ifx\CLASSOPTIONpt\@IEEEptsizenine +\typeout{-- This is a 9 point document.} +\def\normalsize{\@setfontsize{\normalsize}{9}{11.0476pt}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{11.0476pt} +\normalsize +\abovedisplayskip 1.5ex plus 3pt minus 1pt +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 3pt +\belowdisplayshortskip 1.5ex plus 3pt minus 1pt +\def\small{\@setfontsize{\small}{8.5}{10pt}} +\def\footnotesize{\@setfontsize{\footnotesize}{8}{9pt}} +\def\scriptsize{\@setfontsize{\scriptsize}{7}{8pt}} +\def\tiny{\@setfontsize{\tiny}{5}{6pt}} +% sublargesize is the same as large - 10pt +\def\sublargesize{\@setfontsize{\sublargesize}{10}{12pt}} +\def\large{\@setfontsize{\large}{10}{12pt}} +\def\Large{\@setfontsize{\Large}{12}{14pt}} +\def\LARGE{\@setfontsize{\LARGE}{14}{17pt}} +\def\huge{\@setfontsize{\huge}{17}{20pt}} +\def\Huge{\@setfontsize{\Huge}{20}{24pt}} +\fi +% +% 10pt option defaults +\ifx\CLASSOPTIONpt\@IEEEptsizeten +\typeout{-- This is a 10 point document.} +\def\normalsize{\@setfontsize{\normalsize}{10}{12.00pt}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{12pt} +\normalsize +\abovedisplayskip 1.5ex plus 4pt minus 2pt +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 4pt +\belowdisplayshortskip 1.5ex plus 4pt minus 2pt +\def\small{\@setfontsize{\small}{9}{10pt}} +\def\footnotesize{\@setfontsize{\footnotesize}{8}{9pt}} +\def\scriptsize{\@setfontsize{\scriptsize}{7}{8pt}} +\def\tiny{\@setfontsize{\tiny}{5}{6pt}} +% sublargesize is a tad smaller than large - 11pt +\def\sublargesize{\@setfontsize{\sublargesize}{11}{13.4pt}} +\def\large{\@setfontsize{\large}{12}{14pt}} +\def\Large{\@setfontsize{\Large}{14}{17pt}} +\def\LARGE{\@setfontsize{\LARGE}{17}{20pt}} +\def\huge{\@setfontsize{\huge}{20}{24pt}} +\def\Huge{\@setfontsize{\Huge}{24}{28pt}} +\fi +% +% 11pt option defaults +\ifx\CLASSOPTIONpt\@IEEEptsizeeleven +\typeout{-- This is an 11 point document.} +\def\normalsize{\@setfontsize{\normalsize}{11}{13.3846pt}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{13.3846pt} +\normalsize +\abovedisplayskip 1.5ex plus 5pt minus 3pt +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 5pt +\belowdisplayshortskip 1.5ex plus 5pt minus 3pt +\def\small{\@setfontsize{\small}{10}{12pt}} +\def\footnotesize{\@setfontsize{\footnotesize}{9}{10.5pt}} +\def\scriptsize{\@setfontsize{\scriptsize}{8}{9pt}} +\def\tiny{\@setfontsize{\tiny}{6}{7pt}} +% sublargesize is the same as large - 12pt +\def\sublargesize{\@setfontsize{\sublargesize}{12}{14pt}} +\def\large{\@setfontsize{\large}{12}{14pt}} +\def\Large{\@setfontsize{\Large}{14}{17pt}} +\def\LARGE{\@setfontsize{\LARGE}{17}{20pt}} +\def\huge{\@setfontsize{\huge}{20}{24pt}} +\def\Huge{\@setfontsize{\Huge}{24}{28pt}} +\fi +% +% 12pt option defaults +\ifx\CLASSOPTIONpt\@IEEEptsizetwelve +\typeout{-- This is a 12 point document.} +\def\normalsize{\@setfontsize{\normalsize}{12}{13.92pt}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{13.92pt} +\normalsize +\abovedisplayskip 1.5ex plus 6pt minus 4pt +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 6pt +\belowdisplayshortskip 1.5ex plus 6pt minus 4pt +\def\small{\@setfontsize{\small}{10}{12pt}} +\def\footnotesize{\@setfontsize{\footnotesize}{9}{10.5pt}} +\def\scriptsize{\@setfontsize{\scriptsize}{8}{9pt}} +\def\tiny{\@setfontsize{\tiny}{6}{7pt}} +% sublargesize is the same as large - 14pt +\def\sublargesize{\@setfontsize{\sublargesize}{14}{17pt}} +\def\large{\@setfontsize{\large}{14}{17pt}} +\def\Large{\@setfontsize{\Large}{17}{20pt}} +\def\LARGE{\@setfontsize{\LARGE}{20}{24pt}} +\def\huge{\@setfontsize{\huge}{22}{26pt}} +\def\Huge{\@setfontsize{\Huge}{24}{28pt}} +\fi + + + +% V1.8a compsoc font sizes +% compsoc font sizes use bp "Postscript" point units (1/72in) +% rather than the traditional pt (1/72.27) +\ifCLASSOPTIONcompsoc +% -- compsoc defaults -- +% ** will override some of these values later ** +% 9pt +\ifx\CLASSOPTIONpt\@IEEEptsizenine +\def\normalsize{\@setfontsize{\normalsize}{9bp}{11bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{11bp} +\normalsize +\abovedisplayskip 1.5ex plus 3bp minus 1bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0bp plus 3bp +\belowdisplayshortskip 1.5ex plus 3bp minus 1bp +\def\small{\@setfontsize{\small}{8.5bp}{10bp}} +\def\footnotesize{\@setfontsize{\footnotesize}{8bp}{9bp}} +\def\scriptsize{\@setfontsize{\scriptsize}{7bp}{8bp}} +\def\tiny{\@setfontsize{\tiny}{5bp}{6bp}} +% sublargesize is the same as large - 10bp +\def\sublargesize{\@setfontsize{\sublargesize}{10bp}{12bp}} +\def\large{\@setfontsize{\large}{10bp}{12bp}} +\def\Large{\@setfontsize{\Large}{12bp}{14bp}} +\def\LARGE{\@setfontsize{\LARGE}{14bp}{17bp}} +\def\huge{\@setfontsize{\huge}{17bp}{20bp}} +\def\Huge{\@setfontsize{\Huge}{20bp}{24bp}} +\fi +% +% 10pt +\ifx\CLASSOPTIONpt\@IEEEptsizeten +\def\normalsize{\@setfontsize{\normalsize}{10bp}{12bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{12bp} +\normalsize +\abovedisplayskip 1.5ex plus 4bp minus 2bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 4bp +\belowdisplayshortskip 1.5ex plus 4bp minus 2bp +\def\small{\@setfontsize{\small}{9bp}{10bp}} +\def\footnotesize{\@setfontsize{\footnotesize}{8bp}{9bp}} +\def\scriptsize{\@setfontsize{\scriptsize}{7bp}{8bp}} +\def\tiny{\@setfontsize{\tiny}{5bp}{6bp}} +% sublargesize is a tad smaller than large - 11bp +\def\sublargesize{\@setfontsize{\sublargesize}{11bp}{13.5bp}} +\def\large{\@setfontsize{\large}{12bp}{14bp}} +\def\Large{\@setfontsize{\Large}{14bp}{17bp}} +\def\LARGE{\@setfontsize{\LARGE}{17bp}{20bp}} +\def\huge{\@setfontsize{\huge}{20bp}{24bp}} +\def\Huge{\@setfontsize{\Huge}{24bp}{28bp}} +\fi +% +% 11pt +\ifx\CLASSOPTIONpt\@IEEEptsizeeleven +\def\normalsize{\@setfontsize{\normalsize}{11bp}{13.5bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{13.5bp} +\normalsize +\abovedisplayskip 1.5ex plus 5bp minus 3bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 5bp +\belowdisplayshortskip 1.5ex plus 5bp minus 3bp +\def\small{\@setfontsize{\small}{10bp}{12bp}} +\def\footnotesize{\@setfontsize{\footnotesize}{9bp}{10.5bp}} +\def\scriptsize{\@setfontsize{\scriptsize}{8bp}{9bp}} +\def\tiny{\@setfontsize{\tiny}{6bp}{7bp}} +% sublargesize is the same as large - 12bp +\def\sublargesize{\@setfontsize{\sublargesize}{12bp}{14bp}} +\def\large{\@setfontsize{\large}{12bp}{14bp}} +\def\Large{\@setfontsize{\Large}{14bp}{17bp}} +\def\LARGE{\@setfontsize{\LARGE}{17bp}{20bp}} +\def\huge{\@setfontsize{\huge}{20bp}{24bp}} +\def\Huge{\@setfontsize{\Huge}{24bp}{28bp}} +\fi +% +% 12pt +\ifx\CLASSOPTIONpt\@IEEEptsizetwelve +\def\normalsize{\@setfontsize{\normalsize}{12bp}{14bp}}% +\setlength{\@IEEEnormalsizeunitybaselineskip}{14bp}% +\normalsize +\abovedisplayskip 1.5ex plus 6bp minus 4bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 6bp +\belowdisplayshortskip 1.5ex plus 6bp minus 4bp +\def\small{\@setfontsize{\small}{10bp}{12bp}} +\def\footnotesize{\@setfontsize{\footnotesize}{9bp}{10.5bp}} +\def\scriptsize{\@setfontsize{\scriptsize}{8bp}{9bp}} +\def\tiny{\@setfontsize{\tiny}{6bp}{7bp}} +% sublargesize is the same as large - 14bp +\def\sublargesize{\@setfontsize{\sublargesize}{14bp}{17bp}} +\def\large{\@setfontsize{\large}{14bp}{17bp}} +\def\Large{\@setfontsize{\Large}{17bp}{20bp}} +\def\LARGE{\@setfontsize{\LARGE}{20bp}{24bp}} +\def\huge{\@setfontsize{\huge}{22bp}{26bp}} +\def\Huge{\@setfontsize{\Huge}{24bp}{28bp}} +\fi +% +% -- override defaults: compsoc journals use special normalsizes -- +\ifCLASSOPTIONconference +% +% compsoc conferences +% 9pt +\ifx\CLASSOPTIONpt\@IEEEptsizenine +\def\normalsize{\@setfontsize{\normalsize}{9bp}{10.8bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{10.8bp} +\normalsize +\abovedisplayskip 1.5ex plus 3bp minus 1bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0bp plus 3bp +\belowdisplayshortskip 1.5ex plus 3bp minus 1bp +\fi +% 10pt +\ifx\CLASSOPTIONpt\@IEEEptsizeten +\def\normalsize{\@setfontsize{\normalsize}{10bp}{11.2bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{11.2bp} +\normalsize +\abovedisplayskip 1.5ex plus 4bp minus 2bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 4bp +\belowdisplayshortskip 1.5ex plus 4bp minus 2bp +\fi +% 11pt +\ifx\CLASSOPTIONpt\@IEEEptsizeeleven +\def\normalsize{\@setfontsize{\normalsize}{11bp}{13.2bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{13.2bp} +\normalsize +\abovedisplayskip 1.5ex plus 5bp minus 3bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 5bp +\belowdisplayshortskip 1.5ex plus 5bp minus 3bp +\fi +% 12pt +\ifx\CLASSOPTIONpt\@IEEEptsizetwelve +\def\normalsize{\@setfontsize{\normalsize}{12bp}{14.4bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{14.4bp} +\normalsize +\abovedisplayskip 1.5ex plus 6bp minus 4bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 6bp +\belowdisplayshortskip 1.5ex plus 6bp minus 4bp +\fi +% +% compsoc nonconferences +\else +% 9pt +\ifx\CLASSOPTIONpt\@IEEEptsizenine +\def\normalsize{\@setfontsize{\normalsize}{9bp}{10.8bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{10.8bp} +\normalsize +\abovedisplayskip 1.5ex plus 3bp minus 1bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0bp plus 3bp +\belowdisplayshortskip 1.5ex plus 3bp minus 1bp +\fi +% 10pt +\ifx\CLASSOPTIONpt\@IEEEptsizeten +% the official spec is 9.5bp with 11.4bp leading for 10pt, +% but measurements of proofs suggest upto 11.723bp leading +% here we'll use 11.54bp which gives 61 lines per column +% with the standard compsoc margins +\def\normalsize{\@setfontsize{\normalsize}{9.5bp}{11.54bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{11.54bp} +\normalsize +\abovedisplayskip 1.5ex plus 4bp minus 2bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 4bp +\belowdisplayshortskip 1.5ex plus 4bp minus 2bp +\fi +% 11pt +\ifx\CLASSOPTIONpt\@IEEEptsizeeleven +\def\normalsize{\@setfontsize{\normalsize}{11bp}{13.2bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{13.2bp} +\normalsize +\abovedisplayskip 1.5ex plus 5bp minus 3bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 5bp +\belowdisplayshortskip 1.5ex plus 5bp minus 3bp +\fi +% 12pt +\ifx\CLASSOPTIONpt\@IEEEptsizetwelve +\def\normalsize{\@setfontsize{\normalsize}{12bp}{14.4bp}} +\setlength{\@IEEEnormalsizeunitybaselineskip}{14.4bp} +\normalsize +\abovedisplayskip 1.5ex plus 6bp minus 4bp +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip 0pt plus 6bp +\belowdisplayshortskip 1.5ex plus 6bp minus 4bp +\fi +\fi\fi + + + + +% V1.6 The Computer Modern Fonts will issue a substitution warning for +% 24pt titles (24.88pt is used instead, but the default and correct +% Times font will scale exactly as needed) increase the substitution +% tolerance to turn off this warning. +% +% V1.8a, the compsoc bp font sizes can also cause bogus font substitution +% warnings with footnote or scriptsize math and the $\bullet$ itemized +% list of \IEEEcompsocitemizethanks. So, increase this to 1.5pt or more. +\def\fontsubfuzz{1.7bp} + + +% warn the user in case they forget to use the 9pt option with +% technote +\ifCLASSOPTIONtechnote% + \ifx\CLASSOPTIONpt\@IEEEptsizenine\else% + \typeout{** ATTENTION: Technotes are normally 9pt documents.}% + \fi% +\fi + + +% V1.7 +% Improved \textunderscore to provide a much better fake _ when used with +% OT1 encoding. Under OT1, detect use of pcr or cmtt \ttfamily and use +% available true _ glyph for those two typewriter fonts. +\def\@IEEEstringptm{ptm} % Times Roman family +\def\@IEEEstringppl{ppl} % Palatino Roman family +\def\@IEEEstringphv{phv} % Helvetica Sans Serif family +\def\@IEEEstringpcr{pcr} % Courier typewriter family +\def\@IEEEstringcmtt{cmtt} % Computer Modern typewriter family +\DeclareTextCommandDefault{\textunderscore}{\leavevmode +\ifx\f@family\@IEEEstringpcr\string_\else +\ifx\f@family\@IEEEstringcmtt\string_\else +\ifx\f@family\@IEEEstringptm\kern 0em\vbox{\hrule\@width 0.5em\@height 0.5pt\kern -0.3ex}\else +\ifx\f@family\@IEEEstringppl\kern 0em\vbox{\hrule\@width 0.5em\@height 0.5pt\kern -0.3ex}\else +\ifx\f@family\@IEEEstringphv\kern -0.03em\vbox{\hrule\@width 0.62em\@height 0.52pt\kern -0.33ex}\kern -0.03em\else +\kern 0.09em\vbox{\hrule\@width 0.6em\@height 0.44pt\kern -0.63pt\kern -0.42ex}\kern 0.09em\fi\fi\fi\fi\fi\relax} + + + + +% set the default \baselinestretch +\def\baselinestretch{1} +\ifCLASSOPTIONdraftcls + \def\baselinestretch{1.5}% default baselinestretch for draft modes +\fi + + +% process CLASSINPUT baselinestretch +\ifx\CLASSINPUTbaselinestretch\@IEEEundefined +\else + \edef\baselinestretch{\CLASSINPUTbaselinestretch} % user CLASSINPUT override + \typeout{** ATTENTION: Overriding \string\baselinestretch\space to + \baselinestretch\space via \string\CLASSINPUT.} +\fi + +\small\normalsize % make \baselinestretch take affect + + + + +% store the normalsize baselineskip +\newdimen\CLASSINFOnormalsizebaselineskip +\CLASSINFOnormalsizebaselineskip=\baselineskip\relax +% and the normalsize unity (baselinestretch=1) baselineskip +% we could save a register by giving the user access to +% \@IEEEnormalsizeunitybaselineskip. However, let's protect +% its read only internal status +\newdimen\CLASSINFOnormalsizeunitybaselineskip +\CLASSINFOnormalsizeunitybaselineskip=\@IEEEnormalsizeunitybaselineskip\relax +% store the nominal value of jot +\newdimen\IEEEnormaljot +\IEEEnormaljot=0.25\baselineskip\relax + +% set \jot +\jot=\IEEEnormaljot\relax + + + + +% V1.6, we are now going to fine tune the interword spacing +% The default interword glue for Times under TeX appears to use a +% nominal interword spacing of 25% (relative to the font size, i.e., 1em) +% a maximum of 40% and a minimum of 19%. +% For example, 10pt text uses an interword glue of: +% +% 2.5pt plus 1.49998pt minus 0.59998pt +% +% However, the IEEE allows for a more generous range which reduces the need +% for hyphenation, especially for two column text. Furthermore, the IEEE +% tends to use a little bit more nominal space between the words. +% The IEEE's interword spacing percentages appear to be: +% 35% nominal +% 23% minimum +% 50% maximum +% (They may even be using a tad more for the largest fonts such as 24pt.) +% +% for bold text, the IEEE increases the spacing a little more: +% 37.5% nominal +% 23% minimum +% 55% maximum + +% here are the interword spacing ratios we'll use +% for medium (normal weight) +\def\@IEEEinterspaceratioM{0.35} +\def\@IEEEinterspaceMINratioM{0.23} +\def\@IEEEinterspaceMAXratioM{0.50} + +% for bold +\def\@IEEEinterspaceratioB{0.375} +\def\@IEEEinterspaceMINratioB{0.23} +\def\@IEEEinterspaceMAXratioB{0.55} + + +% compsoc nonconference papers use Palatino, +% tweak settings to better match the proofs +\ifCLASSOPTIONcompsoc +\ifCLASSOPTIONconference\else +% for medium (normal weight) +\def\@IEEEinterspaceratioM{0.28} +\def\@IEEEinterspaceMINratioM{0.21} +\def\@IEEEinterspaceMAXratioM{0.47} +% for bold +\def\@IEEEinterspaceratioB{0.305} +\def\@IEEEinterspaceMINratioB{0.21} +\def\@IEEEinterspaceMAXratioB{0.52} +\fi\fi + + +% command to revise the interword spacing for the current font under TeX: +% \fontdimen2 = nominal interword space +% \fontdimen3 = interword stretch +% \fontdimen4 = interword shrink +% since all changes to the \fontdimen are global, we can enclose these commands +% in braces to confine any font attribute or length changes +\def\@@@IEEEsetfontdimens#1#2#3{{% +\setlength{\@IEEEtrantmpdimenB}{\f@size pt}% grab the font size in pt, could use 1em instead. +\setlength{\@IEEEtrantmpdimenA}{#1\@IEEEtrantmpdimenB}% +\fontdimen2\font=\@IEEEtrantmpdimenA\relax +\addtolength{\@IEEEtrantmpdimenA}{-#2\@IEEEtrantmpdimenB}% +\fontdimen3\font=-\@IEEEtrantmpdimenA\relax +\setlength{\@IEEEtrantmpdimenA}{#1\@IEEEtrantmpdimenB}% +\addtolength{\@IEEEtrantmpdimenA}{-#3\@IEEEtrantmpdimenB}% +\fontdimen4\font=\@IEEEtrantmpdimenA\relax}} + +% revise the interword spacing for each font weight +\def\@@IEEEsetfontdimens{{% +\mdseries +\@@@IEEEsetfontdimens{\@IEEEinterspaceratioM}{\@IEEEinterspaceMAXratioM}{\@IEEEinterspaceMINratioM}% +\bfseries +\@@@IEEEsetfontdimens{\@IEEEinterspaceratioB}{\@IEEEinterspaceMAXratioB}{\@IEEEinterspaceMINratioB}% +}} + +% revise the interword spacing for each font shape +% \slshape is not often used for IEEE work and is not altered here. The \scshape caps are +% already a tad too large in the free LaTeX fonts (as compared to what the IEEE uses) so we +% won't alter these either. +\def\@IEEEsetfontdimens{{% +\normalfont +\@@IEEEsetfontdimens +\normalfont\itshape +\@@IEEEsetfontdimens +}} + +% command to revise the interword spacing for each font size (and shape +% and weight). Only the \rmfamily is done here as \ttfamily uses a +% fixed spacing and \sffamily is not used as the main text of IEEE papers. +\def\@IEEEtunefonts{{\selectfont\rmfamily +\tiny\@IEEEsetfontdimens +\scriptsize\@IEEEsetfontdimens +\footnotesize\@IEEEsetfontdimens +\small\@IEEEsetfontdimens +\normalsize\@IEEEsetfontdimens +\sublargesize\@IEEEsetfontdimens +\large\@IEEEsetfontdimens +\LARGE\@IEEEsetfontdimens +\huge\@IEEEsetfontdimens +\Huge\@IEEEsetfontdimens}} + +% if the nofonttune class option is not given, revise the interword spacing +% now - in case IEEEtran makes any default length measurements, and make +% sure all the default fonts are loaded +\ifCLASSOPTIONnofonttune\else +\@IEEEtunefonts +\fi + +% and again at the start of the document in case the user loaded different fonts +\AtBeginDocument{\ifCLASSOPTIONnofonttune\else\@IEEEtunefonts\fi} + + + + + +% -- V1.8a page setup commands -- + +% The default sample text for calculating margins +% Note that IEEE publications use \scriptsize for headers and footers. +\def\IEEEdefaultsampletext{\normalfont\normalsize gT} +\def\IEEEdefaultheadersampletext{\normalfont\scriptsize T}% IEEE headers default to uppercase +\def\IEEEdefaultfootersampletext{\normalfont\scriptsize gT} + + + +% usage: \IEEEsettextwidth{inner margin}{outer margin} +% Sets \textwidth to allow the specified inner and outer margins +% for the current \paperwidth. +\def\IEEEsettextwidth#1#2{\@IEEEtrantmpdimenA\paperwidth +\@IEEEtrantmpdimenB#1\relax +\advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB +\@IEEEtrantmpdimenB#2\relax +\advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB +\textwidth\@IEEEtrantmpdimenA} + + + +% usage: \IEEEsetsidemargin{mode: i, o, c, a}{margin/offset} +% Sets \oddsidemargin and \evensidemargin to yield the specified margin +% of the given mode. +% The available modes are: +% i = inner margin +% o = outer margin +% c = centered, with the given offset +% a = adjust the margins using the given offset +% For the offsets, positive values increase the inner margin. +% \textwidth should be set properly for the given margins before calling this +% function. +\def\IEEEsetsidemargin#1#2{\@IEEEtrantmpdimenA #2\relax +\@IEEEextracttoken{#1}\relax +% check for mode errors +\ifx\@IEEEextractedtokenmacro\@empty + \@IEEEclspkgerror{Empty mode type in \string\IEEEsetsidemargin\space (line \the\inputlineno).\MessageBreak + Defaulting to `i'}{Valid modes for \string\IEEEsetsidemargin\space are: i, o, c and a.}\relax + \let\@IEEEextractedtoken=i\relax + \def\@IEEEextractedtokenmacro{i}\relax +\else + \ifx\@IEEEextractedtokensdiscarded\@empty\else + \typeout{** WARNING: \string\IEEEsetsidemargin\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax + \fi +\fi +% handle each mode +\if\@IEEEextractedtoken a\relax + \advance\oddsidemargin by \@IEEEtrantmpdimenA\relax +\else +\if\@IEEEextractedtoken c\relax + \oddsidemargin\paperwidth + \advance\oddsidemargin by -\textwidth + \divide\oddsidemargin by 2\relax + \advance\oddsidemargin by -1in\relax + \advance\oddsidemargin by \@IEEEtrantmpdimenA\relax +\else +\if\@IEEEextractedtoken o\relax + \oddsidemargin\paperwidth + \advance\oddsidemargin by -\textwidth + \advance\oddsidemargin by -\@IEEEtrantmpdimenA + \advance\oddsidemargin by -1in\relax +\else + \if\@IEEEextractedtoken i\relax + \else + \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEsetsidemargin\space (line \the\inputlineno).\MessageBreak + Defaulting to `i'}% + {Valid modes for \string\IEEEsetsidemargin\space are: i, o, c and a.}% + \fi + \oddsidemargin\@IEEEtrantmpdimenA + \advance\oddsidemargin by -1in\relax +\fi\fi\fi +% odd and even side margins both mean "inner" for single sided pages +\evensidemargin\oddsidemargin +% but are mirrors of each other when twosided is in effect +\if@twoside + \evensidemargin\paperwidth + \advance\evensidemargin by -\textwidth + \advance\evensidemargin by -\oddsidemargin + % have to compensate for both the builtin 1in LaTex offset + % and the fact we already subtracted this offset from \oddsidemargin + \advance\evensidemargin -2in\relax +\fi} + + + +% usage: \IEEEsettextheight[sample text]{top text margin}{bottom text margin} +% Sets \textheight based on the specified top margin and bottom margin. +% Takes into consideration \paperheight, \topskip, and (by default) the +% the actual height and depth of the \IEEEdefaultsampletext text. +\def\IEEEsettextheight{\@ifnextchar [{\@IEEEsettextheight}{\@IEEEsettextheight[\IEEEdefaultsampletext]}} +\def\@IEEEsettextheight[#1]#2#3{\textheight\paperheight\relax + \@IEEEtrantmpdimenA #2\relax + \advance \textheight by -\@IEEEtrantmpdimenA% subtract top margin + \@IEEEtrantmpdimenA #3\relax + \advance \textheight by -\@IEEEtrantmpdimenA% subtract bottom margin + \advance \textheight by \topskip% add \topskip + % subtract off everything above the top, and below the bottom, baselines + \settoheight{\@IEEEtrantmpdimenA}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance \textheight by -\@IEEEtrantmpdimenA + \settodepth{\@IEEEtrantmpdimenA}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance \textheight by -\@IEEEtrantmpdimenA} + + + +\newdimen\IEEEquantizedlength +\IEEEquantizedlength 0sp\relax +\newdimen\IEEEquantizedlengthdiff +\IEEEquantizedlengthdiff 0sp\relax +\def\IEEEquantizedlengthint{0} + +% usage: \IEEEquantizelength{mode: d, c, i}{base unit}{length} +% Sets the length \IEEEquantizedlength to be an integer multiple of the given +% (nonzero) base unit such that \IEEEquantizedlength approximates the given +% length. +% \IEEEquantizedlengthdiff is a length equal to the difference between the +% \IEEEquantizedlength and the given length. +% \IEEEquantizedlengthint is a macro containing the integer number of base units +% in \IEEEquantizedlength. +% i.e., \IEEEquantizedlength = \IEEEquantizedlengthint * base unit +% The mode determines how \IEEEquantizedlength is quantized: +% d = always decrease (always round down \IEEEquantizeint) +% c = use the closest match +% i = always increase (always round up \IEEEquantizeint) +% In anycase, if the given length is already quantized, +% \IEEEquantizedlengthdiff will be set to zero. +\def\IEEEquantizelength#1#2#3{\begingroup +% work in isolation so as not to externally disturb the \@IEEEtrantmp +% variables +% load the argument values indirectly via \IEEEquantizedlengthdiff +% in case the user refers to our \@IEEEtrantmpdimenX, \IEEEquantizedlength, +% etc. in the arguments. we also will work with these as counters, +% i.e., in sp units +% A has the base unit +\IEEEquantizedlengthdiff #2\relax\relax\relax\relax +\@IEEEtrantmpcountA\IEEEquantizedlengthdiff +% B has the input length +\IEEEquantizedlengthdiff #3\relax\relax\relax\relax +\@IEEEtrantmpcountB\IEEEquantizedlengthdiff +\@IEEEtrantmpdimenA\the\@IEEEtrantmpcountA sp\relax +\@IEEEtrantmpdimenB\the\@IEEEtrantmpcountB sp\relax +% \@IEEEtrantmpcountC will have the quantized int +% \IEEEquantizedlength will have the quantized length +% \@IEEEtrantmpdimenC will have the quantized diff +% initialize them to zero as this is what will be +% exported if an error occurs +\@IEEEtrantmpcountC 0\relax +\IEEEquantizedlength 0sp\relax +\@IEEEtrantmpdimenC 0sp\relax +% extract mode +\@IEEEextracttoken{#1}\relax +% check for mode errors +\ifx\@IEEEextractedtokenmacro\@empty + \@IEEEclspkgerror{Empty mode type in \string\IEEEquantizelength\space (line \the\inputlineno).\MessageBreak + Defaulting to `d'}{Valid modes for \string\IEEEquantizelength\space are: d, c and i.}\relax + \let\@IEEEextractedtoken=d\relax + \def\@IEEEextractedtokenmacro{d}\relax +\else + \ifx\@IEEEextractedtokensdiscarded\@empty\else + \typeout{** WARNING: \string\IEEEquantizelength\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax + \fi +\fi +% check for base unit is zero error +\ifnum\@IEEEtrantmpcountA=0\relax +\@IEEEclspkgerror{Base unit is zero in \string\IEEEquantizelength\space (line \the\inputlineno).\MessageBreak + \string\IEEEquantizedlength\space and \string\IEEEquantizedlengthdiff\space are set to zero}{Division by zero is not allowed.}\relax +\else% base unit is nonzero + % \@IEEEtrantmpcountC carries the number of integer units + % in the quantized length (integer length \ base) + \@IEEEtrantmpcountC\@IEEEtrantmpcountB\relax + \divide\@IEEEtrantmpcountC by \@IEEEtrantmpcountA\relax + % \IEEEquantizedlength has the (rounded down) quantized length + % = base * int + \IEEEquantizedlength\@IEEEtrantmpdimenA\relax + \multiply\IEEEquantizedlength by \@IEEEtrantmpcountC\relax + % \@IEEEtrantmpdimenC has the difference + % = quantized length - length + \@IEEEtrantmpdimenC\IEEEquantizedlength\relax + \advance\@IEEEtrantmpdimenC by -\@IEEEtrantmpdimenB\relax + % trap special case of length being already quantized + % to avoid a roundup under i option + \ifdim\@IEEEtrantmpdimenC=0sp\relax + \else % length not is already quantized + % set dimenA to carry the upper quantized (absolute value) difference: + % quantizedlength + base - length + \advance\@IEEEtrantmpdimenA by \IEEEquantizedlength\relax + \advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB\relax + % set dimenB to carry the lower quantized (absolute value) difference: + % length - quantizedlength + \advance\@IEEEtrantmpdimenB by -\IEEEquantizedlength\relax + % handle each mode + \if\@IEEEextractedtoken c\relax + % compare upper and lower amounts, select upper if lower > upper + \ifdim\@IEEEtrantmpdimenB>\@IEEEtrantmpdimenA\relax + % use upper + \advance\IEEEquantizedlength by \the\@IEEEtrantmpcountA sp\relax + \advance\@IEEEtrantmpcountC by 1\relax + \@IEEEtrantmpdimenC\@IEEEtrantmpdimenA + \else% <=. uselower + % no need to do anything for lower, use output values already setup + \fi + \else% not mode c + \if\@IEEEextractedtoken i\relax + % always round up under i mode + \advance\IEEEquantizedlength by \the\@IEEEtrantmpcountA sp\relax + \advance\@IEEEtrantmpcountC by 1\relax + \@IEEEtrantmpdimenC\@IEEEtrantmpdimenA + \else + \if\@IEEEextractedtoken d\relax + \else + \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEquantizelength\space (line \the\inputlineno).\MessageBreak + Defaulting to `d'}% + {Valid modes for \string\IEEEquantizelength\space are: d, c, and i.}\relax + \fi % if d + % no need to do anything for d, use output values already setup + \fi\fi % if i, c + \fi % if length is already quantized +\fi% if base unit is zero +% globally assign the results to macros we use here to escape the enclosing +% group without needing to call \global on any of the \@IEEEtrantmp variables. +% \@IEEEtrantmpcountC has the quantized int +% \IEEEquantizedlength has the quantized length +% \@IEEEtrantmpdimenC has the quantized diff +\xdef\@IEEEquantizedlengthintmacro{\the\@IEEEtrantmpcountC}\relax +\@IEEEtrantmpcountC\IEEEquantizedlength\relax +\xdef\@IEEEquantizedlengthmacro{\the\@IEEEtrantmpcountC}\relax +\@IEEEtrantmpcountC\@IEEEtrantmpdimenC\relax +\xdef\@IEEEquantizedlengthdiffmacro{\the\@IEEEtrantmpcountC}\relax +\endgroup +% locally assign the outputs here from the macros +\expandafter\IEEEquantizedlength\@IEEEquantizedlengthmacro sp\relax +\expandafter\IEEEquantizedlengthdiff\@IEEEquantizedlengthdiffmacro sp\relax +\edef\IEEEquantizedlengthint{\@IEEEquantizedlengthintmacro}\relax} + + + +\newdimen\IEEEquantizedtextheightdiff +\IEEEquantizedtextheightdiff 0sp\relax + +% usage: \IEEEquantizetextheight[base unit]{mode: d, c, i} +% Sets \textheight to be an integer multiple of the current \baselineskip +% (or the optionally specified base unit) plus the first (\topskip) line. +% \IEEEquantizedtextheightdiff is a length equal to the difference between +% the new quantized and original \textheight. +% \IEEEquantizedtextheightlpc is a macro containing the integer number of +% lines per column under the quantized \textheight. i.e., +% \textheight = \IEEEquantizedtextheightlpc * \baselineskip + \topskip +% The mode determines how \textheight is quantized: +% d = always decrease (always round down the number of lines per column) +% c = use the closest match +% i = always increase (always round up the number of lines per column) +% In anycase, if \textheight is already quantized, it will remain unchanged, +% and \IEEEquantizedtextheightdiff will be set to zero. +% Depends on: \IEEEquantizelength +\def\IEEEquantizetextheight{\@ifnextchar [{\@IEEEquantizetextheight}{\@IEEEquantizetextheight[\baselineskip]}} +\def\@IEEEquantizetextheight[#1]#2{\begingroup +% use our \IEEEquantizedtextheightdiff as a scratch pad +% we need to subtract off \topskip before quantization +\IEEEquantizedtextheightdiff\textheight +\advance\IEEEquantizedtextheightdiff by -\topskip\relax +\IEEEquantizelength{#2}{#1}{\IEEEquantizedtextheightdiff} +% add back \topskip line +\advance\IEEEquantizedlength by \topskip +\@IEEEtrantmpcountC\IEEEquantizedlengthint\relax +\advance\@IEEEtrantmpcountC by 1\relax +% globally assign the results to macros we use here to escape the enclosing +% group without needing to call \global on any of the \@IEEEtrantmp variables. +\xdef\@IEEEquantizedtextheightlpcmacro{\the\@IEEEtrantmpcountC}\relax +\@IEEEtrantmpcountC\IEEEquantizedlength\relax +\xdef\@IEEEquantizedtextheightmacro{\the\@IEEEtrantmpcountC}\relax +\@IEEEtrantmpcountC\IEEEquantizedlengthdiff\relax +\xdef\@IEEEquantizedtextheightdiffmacro{\the\@IEEEtrantmpcountC}\relax +\endgroup +% locally assign the outputs here from the macros +\textheight\@IEEEquantizedtextheightmacro sp\relax +\IEEEquantizedtextheightdiff\@IEEEquantizedtextheightdiffmacro sp\relax +\edef\IEEEquantizedtextheightlpc{\@IEEEquantizedtextheightlpcmacro}} + + + +% usage: \IEEEsettopmargin[sample text]{mode: t, b, c, a, q}{margin/offset} +% Sets \topmargin based on the specified vertical margin. +% Takes into consideration the base 1in offset, \headheight, \headsep, +% \topskip, and (by default) the the actual height (or, for the bottom, depth) +% of the \IEEEdefaultsampletext text. +% The available modes are: +% t = top margin +% b = bottom margin +% c = vertically centered, with the given offset +% a = adjust the vertical margins using the given offset +% q = adjust the margins using \IEEEquantizedtextheightdiff and the given offset +% For the offsets, positive values increase the top margin. +% \headheight, \headsep, \topskip and \textheight should be set properly for the +% given margins before calling this function. +\def\IEEEsettopmargin{\@ifnextchar [{\@IEEEsettopmargin}{\@IEEEsettopmargin[\IEEEdefaultsampletext]}} +\def\@IEEEsettopmargin[#1]#2#3{\@IEEEtrantmpdimenA #3\relax +\@IEEEextracttoken{#2}\relax +% check for mode errors +\ifx\@IEEEextractedtokenmacro\@empty + \@IEEEclspkgerror{Empty mode type in \string\IEEEsettopmargin\space (line \the\inputlineno).\MessageBreak + Defaulting to `t'}{Valid modes for \string\IEEEsettopmargin\space are: t, b, c, a and q.}\relax + \let\@IEEEextractedtoken=t\relax + \def\@IEEEextractedtokenmacro{t}\relax +\else + \ifx\@IEEEextractedtokensdiscarded\@empty\else + \typeout{** WARNING: \string\IEEEsettopmargin\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax + \fi +\fi +% handle each mode +\if\@IEEEextractedtoken a\relax + \advance\topmargin by \@IEEEtrantmpdimenA\relax +\else +\if\@IEEEextractedtoken q\relax + % we need to adjust by half the \IEEEquantizedtextheightdiff value + \@IEEEtrantmpdimenB\IEEEquantizedtextheightdiff\relax + \divide\@IEEEtrantmpdimenB by 2\relax + % a positive \IEEEquantizedtextheightdiff means we need to reduce \topmargin + % because \textheight has been lenghtened + \advance\topmargin by -\@IEEEtrantmpdimenB\relax + \advance\topmargin by \@IEEEtrantmpdimenA\relax +\else +\if\@IEEEextractedtoken c\relax + \topmargin\paperheight + \advance\topmargin by -\textheight + % \textheight includes \topskip, but we should not count topskip whitespace here, backout + \advance \topmargin by \topskip + \settoheight{\@IEEEtrantmpdimenB}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\topmargin by -\@IEEEtrantmpdimenB\relax + \settodepth{\@IEEEtrantmpdimenB}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\topmargin by -\@IEEEtrantmpdimenB\relax + \divide\topmargin by 2\relax + \advance\topmargin by \@IEEEtrantmpdimenA\relax +\else +\if\@IEEEextractedtoken b\relax + \topmargin\paperheight + \advance\topmargin by -\textheight + % \textheight includes \topskip, but we should not count topskip whitespace here, backout + \advance \topmargin by \topskip + \settodepth{\@IEEEtrantmpdimenB}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\topmargin by -\@IEEEtrantmpdimenB\relax + \advance\topmargin by -\@IEEEtrantmpdimenA\relax +\else + \if\@IEEEextractedtoken t\relax + \else + \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEsettopmargin\space (line \the\inputlineno).\MessageBreak + Defaulting to `t'}% + {Valid modes for \string\IEEEsettopmargin\space are: t, b, c, a and q.}\relax + \fi + \topmargin\@IEEEtrantmpdimenA\relax + \settoheight{\@IEEEtrantmpdimenB}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\topmargin by \@IEEEtrantmpdimenB\relax +\fi\fi % if t, b, c +% convert desired top margin into actual \topmargin +% this is not done for the q or a modes because they are only adjustments +\advance \topmargin by -\topskip +\advance \topmargin by -1in +\advance \topmargin by -\headheight +\advance \topmargin by -\headsep +\fi\fi % if q, a +} + + + +% usage: \IEEEsetheadermargin[header sample][text sample]{mode: t, b, c, a}{margin/offset} +% Differentially adjusts \topmargin and \headsep (such that their sum is unchanged) +% based on the specified header margin. +% Takes into consideration the base 1in offset, \headheight, \topskip, and (by default) +% the actual height (or depth) of the \IEEEdefaultheadersampletext and +% \IEEEdefaultsampletext text. +% The available modes are: +% t = top margin (top of the header text to the top of the page) +% b = bottom margin (bottom of the header text to the top of the main text) +% c = vertically centered between the main text and the top of the page, +% with the given offset +% a = adjust the vertical position using the given offset +% For the offsets, positive values move the header downward. +% \headheight, \headsep, \topskip and \topmargin should be set properly before +% calling this function. +\def\IEEEsetheadermargin{\@ifnextchar [{\@IEEEsetheadermargin}{\@IEEEsetheadermargin[\IEEEdefaultheadersampletext]}} +\def\@IEEEsetheadermargin[#1]{\@ifnextchar [{\@@IEEEsetheadermargin[#1]}{\@@IEEEsetheadermargin[#1][\IEEEdefaultsampletext]}} +\def\@@IEEEsetheadermargin[#1][#2]#3#4{\@IEEEtrantmpdimenA #4\relax +\@IEEEextracttoken{#3}\relax +% check for mode errors +\ifx\@IEEEextractedtokenmacro\@empty + \@IEEEclspkgerror{Empty mode type in \string\IEEEsetheadermargin\space (line \the\inputlineno).\MessageBreak + Defaulting to `t'}{Valid modes for \string\IEEEsetheadermargin\space are: t, b, c, and a.}\relax + \let\@IEEEextractedtoken=t\relax + \def\@IEEEextractedtokenmacro{t}\relax +\else + \ifx\@IEEEextractedtokensdiscarded\@empty\else + \typeout{** WARNING: \string\IEEEsetheadermargin\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax + \fi +\fi +% handle each mode +\if\@IEEEextractedtoken a\relax + % No need to do anything here and can pass through the adjustment + % value as is. The end adjustment of \topmargin and \headsep will + % do all that is needed +\else +\if\@IEEEextractedtoken c\relax + % get the bottom margin + \@IEEEtrantmpdimenB\headsep\relax + \settodepth{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + \advance\@IEEEtrantmpdimenB by \topskip + \settoheight{\@IEEEtrantmpdimenC}{\begingroup #2\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + % at this point \@IEEEtrantmpdimenB has the actual header bottom margin + % subtract from it the top header margin + \advance\@IEEEtrantmpdimenB -1in\relax % take into consideration the system 1in offset of the top margin + \advance\@IEEEtrantmpdimenB by -\topmargin + \advance\@IEEEtrantmpdimenB by -\headheight + \settoheight{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by \@IEEEtrantmpdimenC + % at this point \@IEEEtrantmpdimenB has the difference between the bottom and top margins + % we need to adjust by half this amount to center the header + \divide\@IEEEtrantmpdimenB by 2\relax + % and add to offset + \advance\@IEEEtrantmpdimenA by \@IEEEtrantmpdimenB +\else +\if\@IEEEextractedtoken b\relax + \@IEEEtrantmpdimenB\headsep\relax + \settodepth{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + \advance\@IEEEtrantmpdimenB by \topskip + \settoheight{\@IEEEtrantmpdimenC}{\begingroup #2\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + % at this point \@IEEEtrantmpdimenB has the actual header bottom margin + % get the difference between the actual and the desired + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenA + \@IEEEtrantmpdimenA\@IEEEtrantmpdimenB +\else + \if\@IEEEextractedtoken t\relax + \else + \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEsetheadermargin\space (line \the\inputlineno).\MessageBreak + Defaulting to `t'}% + {Valid modes for \string\IEEEsetheadermargin\space are: t, b, c and a.}\relax + \fi + \@IEEEtrantmpdimenB 1in\relax % take into consideration the system 1in offset of the top margin + \advance\@IEEEtrantmpdimenB by \topmargin + \advance\@IEEEtrantmpdimenB by \headheight + \settoheight{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + % at this point \@IEEEtrantmpdimenB has the actual header top margin + % get the difference between the desired and the actual + \advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB +\fi\fi % if t, b, c +\fi % if a +% advance \topmargin by the needed amount and reduce \headsep by the same +% so as not to disturb the location of the main text +\advance\topmargin by \@IEEEtrantmpdimenA\relax +\advance\headsep by -\@IEEEtrantmpdimenA\relax +} + + + +% usage: \IEEEsetfootermargin[footer sample][text sample]{mode: t, b, c, a}{margin/offset} +% Adjusts \footskip based on the specified footer margin. +% Takes into consideration the base 1in offset, \paperheight, \headheight, +% \headsep, \textheight and (by default) the actual height (or depth) of the +% \IEEEdefaultfootersampletext and \IEEEdefaultsampletext text. +% The available modes are: +% t = top margin (top of the footer text to the bottom of the main text) +% b = bottom margin (bottom of the footer text to the bottom of page) +% c = vertically centered between the main text and the bottom of the page, +% with the given offset +% a = adjust the vertical position using the given offset +% For the offsets, positive values move the footer downward. +% \headheight, \headsep, \topskip, \topmargin, and \textheight should be set +% properly before calling this function. +\def\IEEEsetfootermargin{\@ifnextchar [{\@IEEEsetfootermargin}{\@IEEEsetfootermargin[\IEEEdefaultfootersampletext]}} +\def\@IEEEsetfootermargin[#1]{\@ifnextchar [{\@@IEEEsetfootermargin[#1]}{\@@IEEEsetfootermargin[#1][\IEEEdefaultsampletext]}} +\def\@@IEEEsetfootermargin[#1][#2]#3#4{\@IEEEtrantmpdimenA #4\relax +\@IEEEextracttoken{#3}\relax +% check for mode errors +\ifx\@IEEEextractedtokenmacro\@empty + \@IEEEclspkgerror{Empty mode type in \string\IEEEsetfootermargin\space (line \the\inputlineno).\MessageBreak + Defaulting to `t'}{Valid modes for \string\IEEEsetfootermargin\space are: t, b, c, and a.}\relax + \let\@IEEEextractedtoken=t\relax + \def\@IEEEextractedtokenmacro{t}\relax +\else + \ifx\@IEEEextractedtokensdiscarded\@empty\else + \typeout{** WARNING: \string\IEEEsetfootermargin\space mode specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax + \fi +\fi +% handle each mode +\if\@IEEEextractedtoken a\relax + % No need to do anything here and can pass through the adjustment + % value as is. The end adjustment of \footskip will do all that + % is needed +\else +\if\@IEEEextractedtoken c\relax + % calculate the bottom margin + \@IEEEtrantmpdimenB 1in\relax % system 1in offset + \advance\@IEEEtrantmpdimenB\topmargin\relax + \advance\@IEEEtrantmpdimenB\headheight\relax + \advance\@IEEEtrantmpdimenB\headsep\relax + \advance\@IEEEtrantmpdimenB\textheight\relax + \advance\@IEEEtrantmpdimenB\footskip\relax + \settodepth{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenC by \@IEEEtrantmpdimenB + \@IEEEtrantmpdimenB\paperheight + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + % at this point \@IEEEtrantmpdimenB has the actual footer bottom margin + % now subtract off the footer top margin + \advance\@IEEEtrantmpdimenB -\footskip\relax + \settodepth{\@IEEEtrantmpdimenC}{\begingroup #2\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by \@IEEEtrantmpdimenC + \settoheight{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by \@IEEEtrantmpdimenC + % at this point \@IEEEtrantmpdimenB has the difference between the bottom + % and top footer margins + % our adjustment must be half this value to center the footer + \divide\@IEEEtrantmpdimenB by 2\relax + % add to the offset + \advance\@IEEEtrantmpdimenA by \@IEEEtrantmpdimenB +\else +\if\@IEEEextractedtoken b\relax + % calculate the bottom margin + \@IEEEtrantmpdimenB 1in\relax % system 1in offset + \advance\@IEEEtrantmpdimenB\topmargin\relax + \advance\@IEEEtrantmpdimenB\headheight\relax + \advance\@IEEEtrantmpdimenB\headsep\relax + \advance\@IEEEtrantmpdimenB\textheight\relax + \advance\@IEEEtrantmpdimenB\footskip\relax + \settodepth{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenC by \@IEEEtrantmpdimenB + \@IEEEtrantmpdimenB\paperheight + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + % at this point \@IEEEtrantmpdimenB has the actual footer bottom margin + % get the difference between the actual and the desired + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenA + \@IEEEtrantmpdimenA\@IEEEtrantmpdimenB +\else + \if\@IEEEextractedtoken t\relax + \else + \@IEEEclspkgerror{Unknown mode type `\@IEEEextractedtokenmacro' in \string\IEEEsetfootermargin\space (line \the\inputlineno).\MessageBreak + Defaulting to `t'}% + {Valid modes for \string\IEEEsetfootermargin\space are: t, b, c and a.}\relax + \fi + \@IEEEtrantmpdimenB\footskip\relax + \settodepth{\@IEEEtrantmpdimenC}{\begingroup #2\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + \settoheight{\@IEEEtrantmpdimenC}{\begingroup #1\relax\relax\relax\endgroup}\relax + \advance\@IEEEtrantmpdimenB by -\@IEEEtrantmpdimenC + % at this point \@IEEEtrantmpdimenB has the actual footer top margin + % get the difference between the desired and the actual + \advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpdimenB +\fi\fi % if t, b, c +\fi % if a +% advance \footskip by the needed amount +\advance\footskip by \@IEEEtrantmpdimenA\relax +} + +% -- End V1.8a page setup commands -- + + + + + +% V1.6 +% LaTeX is a little to quick to use hyphenations +% So, we increase the penalty for their use and raise +% the badness level that triggers an underfull hbox +% warning. The author may still have to tweak things, +% but the appearance will be much better "right out +% of the box" than that under V1.5 and prior. +% TeX default is 50 +\hyphenpenalty=750 +\ifCLASSOPTIONcompsoc +\hyphenpenalty 500 +\fi +% If we didn't adjust the interword spacing, 2200 might be better. +% The TeX default is 1000 +\hbadness=1350 +% The IEEE does not use extra spacing after punctuation +\frenchspacing + +% V1.7 increase this a tad to discourage equation breaks +\binoppenalty=1000 % default 700 +\relpenalty=800 % default 500 + +% v1.8a increase these to discourage widows and orphans +\clubpenalty=1000 % default 150 +\widowpenalty=1000 % default 150 +\displaywidowpenalty=1000 % default 50 + + +% margin note stuff +\marginparsep 10pt +\marginparwidth 20pt +\marginparpush 25pt + + +% if things get too close, go ahead and let them touch +\lineskip 0pt +\normallineskip 0pt +\lineskiplimit 0pt +\normallineskiplimit 0pt + +% The distance from the lower edge of the text body to the +% footline +\footskip 0.4in + +% normally zero, should be relative to font height. +% put in a little rubber to help stop some bad breaks (underfull vboxes) +\parskip 0ex plus 0.2ex minus 0.1ex + +\parindent 1.0em +\ifCLASSOPTIONcompsoc + \parindent 1.5em +\fi + +\headheight 12pt +\headsep 18pt +% use the normal font baselineskip +% so that \topskip is unaffected by changes in \baselinestretch +\topskip=\@IEEEnormalsizeunitybaselineskip + + +% V1.8 \maxdepth defaults to 4pt, but should be font size dependent +\maxdepth=0.5\@IEEEnormalsizeunitybaselineskip +\textheight 58pc % 9.63in, 696pt + +% set the default top margin to 58pt +% which results in a \topmargin of -49.59pt for 10pt documents +\IEEEsettopmargin{t}{58pt} +% tweak textheight to a perfect integer number of lines/column. +% standard is: 9pt/63 lpc; 10pt/58 lpc; 11pt/52 lpc; 12pt/50 lpc +\IEEEquantizetextheight{c} +% tweak top margin so that the error is shared equally at the top and bottom +\IEEEsettopmargin{q}{0sp} + + +\columnsep 1pc +\textwidth 43pc % 2 x 21pc + 1pc = 43pc + +% set the default side margins to center the text +\IEEEsetsidemargin{c}{0pt} + + +% adjust margins for default conference mode +\ifCLASSOPTIONconference + \textheight 9.25in % The standard for conferences (668.4975pt) + \IEEEsettopmargin{t}{0.75in} + % tweak textheight to a perfect integer number of lines/page. + % standard is: 9pt/61 lpc; 10pt/56 lpc; 11pt/50 lpc; 12pt/48 lpc + \IEEEquantizetextheight{c} + % tweak top margin so that the error is shared equally at the top and bottom + \IEEEsettopmargin{q}{0sp} +\fi + + +% compsoc text sizes, margins and spacings +\ifCLASSOPTIONcompsoc + \columnsep 12bp + % CS specs for \textwdith are 6.875in + % \textwidth 6.875in + % however, measurements from proofs show they are using 3.5in columns + \textwidth 7in + \advance\textwidth by \columnsep + % set the side margins to center the text + \IEEEsetsidemargin{c}{0pt} + % top/bottom margins to center + % could just set \textheight to 9.75in for all the different paper sizes + % and then quantize, but we'll do it the long way here to allow for easy + % future per-paper size adjustments + \IEEEsettextheight{0.625in}{0.625in}% 11in - 2 * 0.625in = 9.75in is the standard text height for compsoc journals + \IEEEsettopmargin{t}{0.625in} + \if@IEEEusingcspaper + \IEEEsettextheight{0.5in}{0.5in}% 10.75in - 2 * 0.5in = 9.75in + \IEEEsettopmargin{t}{0.5in} + \fi + \if@IEEEusingAfourpaper + \IEEEsettextheight{24.675mm}{24.675mm}% 297mm - 2 * 24.675mm = 247.650mm (9.75in) + \IEEEsettopmargin{t}{24.675mm} + \fi + % tweak textheight to a perfect integer number of lines/page. + % standard is: 9pt/65 lpc; 10pt/61 lpc; 11pt/53 lpc; 12pt/49 lpc + \IEEEquantizetextheight{c} + % tweak top margin so that the error is shared equally at the top and bottom + \IEEEsettopmargin{q}{0sp} + +% compsoc conference + \ifCLASSOPTIONconference + % compsoc conference use a larger value for columnsep + \columnsep 0.25in + \IEEEsettextwidth{0.75in}{0.75in} + % set the side margins to center the text (0.75in for letterpaper) + \IEEEsetsidemargin{c}{0pt} + % compsoc conferences want 1in top and bottom margin + \IEEEsettextheight{1in}{1in} + \IEEEsettopmargin{t}{1in} + % tweak textheight to a perfect integer number of lines/page. + % standard is: 9pt/58 lpc; 10pt/53 lpc; 11pt/48 lpc; 12pt/46 lpc + \IEEEquantizetextheight{c} + % tweak top margin so that the error is shared equally at the top and bottom + \IEEEsettopmargin{q}{0sp} + \fi +\fi + + + +% draft mode settings override that of all other modes +% provides a nice 1in margin all around the paper and extra +% space between the lines for editor's comments +\ifCLASSOPTIONdraftcls + % we want 1in side margins regardless of paper type + \IEEEsettextwidth{1in}{1in} + \IEEEsetsidemargin{c}{0pt} + % want 1in top and bottom margins + \IEEEsettextheight{1in}{1in} + \IEEEsettopmargin{t}{1in} + % digitize textheight to be an integer number of lines. + % this may cause the top and bottom margins to be off a tad + \IEEEquantizetextheight{c} + % tweak top margin so that the error is shared equally at the top and bottom + \IEEEsettopmargin{q}{0sp} +\fi + + + +% process CLASSINPUT inner/outer margin +% if inner margin defined, but outer margin not, set outer to inner. +\ifx\CLASSINPUTinnersidemargin\@IEEEundefined +\else + \ifx\CLASSINPUToutersidemargin\@IEEEundefined + \edef\CLASSINPUToutersidemargin{\CLASSINPUTinnersidemargin} + \fi +\fi + +\ifx\CLASSINPUToutersidemargin\@IEEEundefined +\else + % if outer margin defined, but inner margin not, set inner to outer. + \ifx\CLASSINPUTinnersidemargin\@IEEEundefined + \edef\CLASSINPUTinnersidemargin{\CLASSINPUToutersidemargin} + \fi + \IEEEsettextwidth{\CLASSINPUTinnersidemargin}{\CLASSINPUToutersidemargin} + \IEEEsetsidemargin{i}{\CLASSINPUTinnersidemargin} + \typeout{** ATTENTION: Overriding inner side margin to \CLASSINPUTinnersidemargin\space and + outer side margin to \CLASSINPUToutersidemargin\space via \string\CLASSINPUT.} +\fi + + + +% process CLASSINPUT top/bottom text margin +% if toptext margin defined, but bottomtext margin not, set bottomtext to toptext margin +\ifx\CLASSINPUTtoptextmargin\@IEEEundefined +\else + \ifx\CLASSINPUTbottomtextmargin\@IEEEundefined + \edef\CLASSINPUTbottomtextmargin{\CLASSINPUTtoptextmargin} + \fi +\fi + +\ifx\CLASSINPUTbottomtextmargin\@IEEEundefined +\else + % if bottomtext margin defined, but toptext margin not, set toptext to bottomtext margin + \ifx\CLASSINPUTtoptextmargin\@IEEEundefined + \edef\CLASSINPUTtoptextmargin{\CLASSINPUTbottomtextmargin} + \fi + \IEEEsettextheight{\CLASSINPUTtoptextmargin}{\CLASSINPUTbottomtextmargin} + \IEEEsettopmargin{t}{\CLASSINPUTtoptextmargin} + \typeout{** ATTENTION: Overriding top text margin to \CLASSINPUTtoptextmargin\space and + bottom text margin to \CLASSINPUTbottomtextmargin\space via \string\CLASSINPUT.} +\fi + + + +% default to center header and footer text in the margins +\IEEEsetheadermargin{c}{0pt} +\IEEEsetfootermargin{c}{0pt} + +% adjust header and footer positions for compsoc journals +\ifCLASSOPTIONcompsoc + \ifCLASSOPTIONjournal + \IEEEsetheadermargin{b}{\@IEEEnormalsizeunitybaselineskip} + \IEEEsetfootermargin{t}{\@IEEEnormalsizeunitybaselineskip} + \fi +\fi + + +% V1.8a display lines per column info message on user's console +\def\IEEEdisplayinfolinespercolumn{\@IEEEtrantmpdimenA=\textheight +% topskip represents only one line even if > baselineskip +\advance\@IEEEtrantmpdimenA by -1\topskip +\@IEEEtrantmpcountA=\@IEEEtrantmpdimenA +\@IEEEtrantmpcountB=\@IEEEtrantmpdimenA +\divide\@IEEEtrantmpcountB by \baselineskip +% need to add one line to include topskip (first) line +\advance\@IEEEtrantmpcountB by 1 +% save lines per column value as text +\edef\@IEEEnumlinespercolumninfotxt{\the\@IEEEtrantmpcountB} +% backout topskip advance to allow direct \@IEEEtrantmpcountA comparison +\advance\@IEEEtrantmpcountB by -1 +% restore value as text height (without topskip) rather than just as number of lines +\multiply\@IEEEtrantmpcountB by \baselineskip +% is the column height an integer number of lines per column? +\ifnum\@IEEEtrantmpcountA=\@IEEEtrantmpcountB +\edef\@IEEEnumlinespercolumnexactinfotxt{exact} +\else +\@IEEEtrantmpdimenA\@IEEEtrantmpcountA sp\relax +\advance\@IEEEtrantmpdimenA by -\@IEEEtrantmpcountB sp\relax +\edef\@IEEEnumlinespercolumnexactinfotxt{approximate, difference = \the\@IEEEtrantmpdimenA} +\fi +\typeout{-- Lines per column: \@IEEEnumlinespercolumninfotxt\space (\@IEEEnumlinespercolumnexactinfotxt).}} +% delay execution till start of document to allow for user changes +\AtBeginDocument{\IEEEdisplayinfolinespercolumn} + + + +% LIST SPACING CONTROLS + +% Controls the amount of EXTRA spacing +% above and below \trivlist +% Both \list and IED lists override this. +% However, \trivlist will use this as will most +% things built from \trivlist like the \center +% environment. +\topsep 0.5\baselineskip + +% Controls the additional spacing around lists preceded +% or followed by blank lines. the IEEE does not increase +% spacing before or after paragraphs so it is set to zero. +% \z@ is the same as zero, but faster. +\partopsep \z@ + +% Controls the spacing between paragraphs in lists. +% The IEEE does not increase spacing before or after paragraphs +% so this is also zero. +% With IEEEtran.cls, global changes to +% this value DO affect lists (but not IED lists). +\parsep \z@ + +% Controls the extra spacing between list items. +% The IEEE does not put extra spacing between items. +% With IEEEtran.cls, global changes to this value DO affect +% lists (but not IED lists). +\itemsep \z@ + +% \itemindent is the amount to indent the FIRST line of a list +% item. It is auto set to zero within the \list environment. To alter +% it, you have to do so when you call the \list. +% However, the IEEE uses this for the theorem environment +% There is an alternative value for this near \leftmargini below +\itemindent -1em + +% \leftmargin, the spacing from the left margin of the main text to +% the left of the main body of a list item is set by \list. +% Hence this statement does nothing for lists. +% But, quote and verse do use it for indention. +\leftmargin 2em + +% we retain this stuff from the older IEEEtran.cls so that \list +% will work the same way as before. However, itemize, enumerate and +% description (IED) could care less about what these are as they +% all are overridden. +\leftmargini 2em +%\itemindent 2em % Alternative values: sometimes used. +%\leftmargini 0em +\leftmarginii 1em +\leftmarginiii 1.5em +\leftmarginiv 1.5em +\leftmarginv 1.0em +\leftmarginvi 1.0em +\labelsep 0.5em +\labelwidth \z@ + + +% The old IEEEtran.cls behavior of \list is retained. +% However, the new V1.3 IED list environments override all the +% @list stuff (\@listX is called within \list for the +% appropriate level just before the user's list_decl is called). +% \topsep is now 2pt as the IEEE puts a little extra space around +% lists - used by those non-IED macros that depend on \list. +% Note that \parsep and \itemsep are not redefined as in +% the sizexx.clo \@listX (which article.cls uses) so global changes +% of these values DO affect \list +% +\def\@listi{\leftmargin\leftmargini \topsep 2pt plus 1pt minus 1pt} +\let\@listI\@listi +\def\@listii{\leftmargin\leftmarginii\labelwidth\leftmarginii% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listiii{\leftmargin\leftmarginiii\labelwidth\leftmarginiii% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listiv{\leftmargin\leftmarginiv\labelwidth\leftmarginiv% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listv{\leftmargin\leftmarginv\labelwidth\leftmarginv% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listvi{\leftmargin\leftmarginvi\labelwidth\leftmarginvi% + \advance\labelwidth-\labelsep \topsep 2pt} + + +% The IEEE uses 5) not 5. +\def\labelenumi{\theenumi)} \def\theenumi{\arabic{enumi}} + +% The IEEE uses a) not (a) +\def\labelenumii{\theenumii)} \def\theenumii{\alph{enumii}} + +% The IEEE uses iii) not iii. +\def\labelenumiii{\theenumiii)} \def\theenumiii{\roman{enumiii}} + +% The IEEE uses A) not A. +\def\labelenumiv{\theenumiv)} \def\theenumiv{\Alph{enumiv}} + +% exactly the same as in article.cls +\def\p@enumii{\theenumi} +\def\p@enumiii{\theenumi(\theenumii)} +\def\p@enumiv{\p@enumiii\theenumiii} + +% itemized list label styles +\def\labelitemi{$\scriptstyle\bullet$} +\def\labelitemii{\textbf{--}} +\def\labelitemiii{$\ast$} +\def\labelitemiv{$\cdot$} + + + +% **** V1.3 ENHANCEMENTS **** +% Itemize, Enumerate and Description (IED) List Controls +% *************************** +% +% +% The IEEE seems to use at least two different values by +% which ITEMIZED list labels are indented to the right +% For The Journal of Lightwave Technology (JLT) and The Journal +% on Selected Areas in Communications (JSAC), they tend to use +% an indention equal to \parindent. For Transactions on Communications +% they tend to indent ITEMIZED lists a little more--- 1.3\parindent. +% We'll provide both values here for you so that you can choose +% which one you like in your document using a command such as: +% setlength{\IEEEilabelindent}{\IEEEilabelindentB} +\newdimen\IEEEilabelindentA +\IEEEilabelindentA \parindent + +\newdimen\IEEEilabelindentB +\IEEEilabelindentB 1.3\parindent +% However, we'll default to using \parindent +% which makes more sense to me +\newdimen\IEEEilabelindent +\IEEEilabelindent \IEEEilabelindentA + + +% This controls the default amount the enumerated list labels +% are indented to the right. +% Normally, this is the same as the paragraph indention +\newdimen\IEEEelabelindent +\IEEEelabelindent \parindent + +% This controls the default amount the description list labels +% are indented to the right. +% Normally, this is the same as the paragraph indention +\newdimen\IEEEdlabelindent +\IEEEdlabelindent \parindent + +% This is the value actually used within the IED lists. +% The IED environments automatically set its value to +% one of the three values above, so global changes do +% not have any effect +\newdimen\IEEElabelindent +\IEEElabelindent \parindent + +% The actual amount labels will be indented is +% \IEEElabelindent multiplied by the factor below +% corresponding to the level of nesting depth +% This provides a means by which the user can +% alter the effective \IEEElabelindent for deeper +% levels +% There may not be such a thing as correct "standard IEEE" +% values. What the IEEE actually does may depend on the specific +% circumstances. +% The first list level almost always has full indention. +% The second levels I've seen have only 75% of the normal indentation +% Three level or greater nestings are very rare. I am guessing +% that they don't use any indentation. +\def\IEEElabelindentfactori{1.0} % almost always one +\def\IEEElabelindentfactorii{0.75} % 0.0 or 1.0 may be used in some cases +\def\IEEElabelindentfactoriii{0.0} % 0.75? 0.5? 0.0? +\def\IEEElabelindentfactoriv{0.0} +\def\IEEElabelindentfactorv{0.0} +\def\IEEElabelindentfactorvi{0.0} + +% value actually used within IED lists, it is auto +% set to one of the 6 values above +% global changes here have no effect +\def\IEEElabelindentfactor{1.0} + +% This controls the default spacing between the end of the IED +% list labels and the list text, when normal text is used for +% the labels. +% compsoc uses a larger value here, but we'll set that later +% in the class so that this code block area can be extracted +% as-is for IEEEtrantools.sty +\newdimen\IEEEiednormlabelsep +\IEEEiednormlabelsep 0.6em + +% This controls the default spacing between the end of the IED +% list labels and the list text, when math symbols are used for +% the labels (nomenclature lists). The IEEE usually increases the +% spacing in these cases +\newdimen\IEEEiedmathlabelsep +\IEEEiedmathlabelsep 1.2em + +% This controls the extra vertical separation put above and +% below each IED list. the IEEE usually puts a little extra spacing +% around each list. However, this spacing is barely noticeable. +% compsoc uses a larger value here, but we'll set that later +% in the class so that this code block area can be extracted +% as-is for IEEEtrantools.sty +\newskip\IEEEiedtopsep +\IEEEiedtopsep 2pt plus 1pt minus 1pt + + +% This command is executed within each IED list environment +% at the beginning of the list. You can use this to set the +% parameters for some/all your IED list(s) without disturbing +% global parameters that affect things other than lists. +% i.e., renewcommand{\IEEEiedlistdecl}{\setlength{\labelsep}{5em}} +% will alter the \labelsep for the next list(s) until +% \IEEEiedlistdecl is redefined. +\def\IEEEiedlistdecl{\relax} + +% This command provides an easy way to set \leftmargin based +% on the \labelwidth, \labelsep and the argument \IEEElabelindent +% Usage: \IEEEcalcleftmargin{width-to-indent-the-label} +% output is in the \leftmargin variable, i.e., effectively: +% \leftmargin = argument + \labelwidth + \labelsep +% Note controlled spacing here, shield end of lines with % +\def\IEEEcalcleftmargin#1{\setlength{\leftmargin}{#1}% +\addtolength{\leftmargin}{\labelwidth}% +\addtolength{\leftmargin}{\labelsep}} + +% This command provides an easy way to set \labelwidth to the +% width of the given text. It is the same as +% \settowidth{\labelwidth}{label-text} +% and useful as a shorter alternative. +% Typically used to set \labelwidth to be the width +% of the longest label in the list +\def\IEEEsetlabelwidth#1{\settowidth{\labelwidth}{#1}} + +% When this command is executed, IED lists will use the +% IEEEiedmathlabelsep label separation rather than the normal +% spacing. To have an effect, this command must be executed via +% the \IEEEiedlistdecl or within the option of the IED list +% environments. +\def\IEEEusemathlabelsep{\setlength{\labelsep}{\IEEEiedmathlabelsep}} + +% A flag which controls whether the IED lists automatically +% calculate \leftmargin from \IEEElabelindent, \labelwidth and \labelsep +% Useful if you want to specify your own \leftmargin +% This flag must be set (\IEEEnocalcleftmargintrue or \IEEEnocalcleftmarginfalse) +% via the \IEEEiedlistdecl or within the option of the IED list +% environments to have an effect. +\newif\ifIEEEnocalcleftmargin +\IEEEnocalcleftmarginfalse + +% A flag which controls whether \IEEElabelindent is multiplied by +% the \IEEElabelindentfactor for each list level. +% This flag must be set via the \IEEEiedlistdecl or within the option +% of the IED list environments to have an effect. +\newif\ifIEEEnolabelindentfactor +\IEEEnolabelindentfactorfalse + + +% internal variable to indicate type of IED label +% justification +% 0 - left; 1 - center; 2 - right +\def\@IEEEiedjustify{0} + + +% commands to allow the user to control IED +% label justifications. Use these commands within +% the IED environment option or in the \IEEEiedlistdecl +% Note that changing the normal list justifications +% is nonstandard and the IEEE may not like it if you do so! +% I include these commands as they may be helpful to +% those who are using these enhanced list controls for +% other non-IEEE related LaTeX work. +% itemize and enumerate automatically default to right +% justification, description defaults to left. +\def\IEEEiedlabeljustifyl{\def\@IEEEiedjustify{0}}%left +\def\IEEEiedlabeljustifyc{\def\@IEEEiedjustify{1}}%center +\def\IEEEiedlabeljustifyr{\def\@IEEEiedjustify{2}}%right + + + + +% commands to save to and restore from the list parameter copies +% this allows us to set all the list parameters within +% the list_decl and prevent \list (and its \@list) +% from overriding any of our parameters +% V1.6 use \edefs instead of dimen's to conserve dimen registers +% Note controlled spacing here, shield end of lines with % +\def\@IEEEsavelistparams{\edef\@IEEEiedtopsep{\the\topsep}% +\edef\@IEEEiedlabelwidth{\the\labelwidth}% +\edef\@IEEEiedlabelsep{\the\labelsep}% +\edef\@IEEEiedleftmargin{\the\leftmargin}% +\edef\@IEEEiedpartopsep{\the\partopsep}% +\edef\@IEEEiedparsep{\the\parsep}% +\edef\@IEEEieditemsep{\the\itemsep}% +\edef\@IEEEiedrightmargin{\the\rightmargin}% +\edef\@IEEEiedlistparindent{\the\listparindent}% +\edef\@IEEEieditemindent{\the\itemindent}} + +% Note controlled spacing here +\def\@IEEErestorelistparams{\topsep\@IEEEiedtopsep\relax% +\labelwidth\@IEEEiedlabelwidth\relax% +\labelsep\@IEEEiedlabelsep\relax% +\leftmargin\@IEEEiedleftmargin\relax% +\partopsep\@IEEEiedpartopsep\relax% +\parsep\@IEEEiedparsep\relax% +\itemsep\@IEEEieditemsep\relax% +\rightmargin\@IEEEiedrightmargin\relax% +\listparindent\@IEEEiedlistparindent\relax% +\itemindent\@IEEEieditemindent\relax} + + +% v1.6b provide original LaTeX IED list environments +% note that latex.ltx defines \itemize and \enumerate, but not \description +% which must be created by the base classes +% save original LaTeX itemize and enumerate +\let\LaTeXitemize\itemize +\let\endLaTeXitemize\enditemize +\let\LaTeXenumerate\enumerate +\let\endLaTeXenumerate\endenumerate + +% provide original LaTeX description environment from article.cls +\newenvironment{LaTeXdescription} + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} + {\endlist} +\newcommand*\descriptionlabel[1]{\hspace\labelsep + \normalfont\bfseries #1} + + +% override LaTeX's default IED lists +\def\itemize{\@IEEEitemize} +\def\enditemize{\@endIEEEitemize} +\def\enumerate{\@IEEEenumerate} +\def\endenumerate{\@endIEEEenumerate} +\def\description{\@IEEEdescription} +\def\enddescription{\@endIEEEdescription} + +% provide the user with aliases - may help those using packages that +% override itemize, enumerate, or description +\def\IEEEitemize{\@IEEEitemize} +\def\endIEEEitemize{\@endIEEEitemize} +\def\IEEEenumerate{\@IEEEenumerate} +\def\endIEEEenumerate{\@endIEEEenumerate} +\def\IEEEdescription{\@IEEEdescription} +\def\endIEEEdescription{\@endIEEEdescription} + + +% V1.6 we want to keep the IEEEtran IED list definitions as our own internal +% commands so they are protected against redefinition +\def\@IEEEitemize{\@ifnextchar[{\@@IEEEitemize}{\@@IEEEitemize[\relax]}} +\def\@IEEEenumerate{\@ifnextchar[{\@@IEEEenumerate}{\@@IEEEenumerate[\relax]}} +\def\@IEEEdescription{\@ifnextchar[{\@@IEEEdescription}{\@@IEEEdescription[\relax]}} +\def\@endIEEEitemize{\endlist} +\def\@endIEEEenumerate{\endlist} +\def\@endIEEEdescription{\endlist} + + +% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS +% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS +% IEEEtran itemized list MDS 1/2001 +% Note controlled spacing here, shield end of lines with % +\def\@@IEEEitemize[#1]{% + \ifnum\@itemdepth>3\relax\@toodeep\else% + \ifnum\@listdepth>5\relax\@toodeep\else% + \advance\@itemdepth\@ne% + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + % get the IEEElabelindentfactor for this level + \advance\@listdepth\@ne% we need to know what the level WILL be + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% + \advance\@listdepth-\@ne% undo our increment + \def\@IEEEiedjustify{2}% right justified labels are default + % set other defaults + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% + \topsep\IEEEiedtopsep% + \IEEElabelindent\IEEEilabelindent% + \labelsep\IEEEiednormlabelsep% + \partopsep 0ex% + \parsep 0ex% + \itemsep 0ex% + \rightmargin 0em% + \listparindent 0em% + \itemindent 0em% + % calculate the label width + % the user can override this later if + % they specified a \labelwidth + \settowidth{\labelwidth}{\csname labelitem\romannumeral\the\@itemdepth\endcsname}% + \@IEEEsavelistparams% save our list parameters + \list{\csname\@itemitem\endcsname}{% + \@IEEErestorelistparams% override any list{} changes + % to our globals + \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel + \IEEEiedlistdecl% let user alter parameters + #1\relax% + % If the user has requested not to use the + % IEEElabelindent factor, don't revise \IEEElabelindent + \ifIEEEnolabelindentfactor\relax% + \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent% + \fi% + % Unless the user has requested otherwise, + % calculate our left margin based + % on \IEEElabelindent, \labelwidth and + % \labelsep + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}% + \fi}\fi\fi}% + + +% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS +% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS +% IEEEtran enumerate list MDS 1/2001 +% Note controlled spacing here, shield end of lines with % +\def\@@IEEEenumerate[#1]{% + \ifnum\@enumdepth>3\relax\@toodeep\else% + \ifnum\@listdepth>5\relax\@toodeep\else% + \advance\@enumdepth\@ne% + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + % get the IEEElabelindentfactor for this level + \advance\@listdepth\@ne% we need to know what the level WILL be + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% + \advance\@listdepth-\@ne% undo our increment + \def\@IEEEiedjustify{2}% right justified labels are default + % set other defaults + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% + \topsep\IEEEiedtopsep% + \IEEElabelindent\IEEEelabelindent% + \labelsep\IEEEiednormlabelsep% + \partopsep 0ex% + \parsep 0ex% + \itemsep 0ex% + \rightmargin 0em% + \listparindent 0em% + \itemindent 0em% + % calculate the label width + % We'll set it to the width suitable for all labels using + % normalfont 1) to 9) + % The user can override this later + \settowidth{\labelwidth}{9)}% + \@IEEEsavelistparams% save our list parameters + \list{\csname label\@enumctr\endcsname}{\usecounter{\@enumctr}% + \@IEEErestorelistparams% override any list{} changes + % to our globals + \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel + \IEEEiedlistdecl% let user alter parameters + #1\relax% + % If the user has requested not to use the + % IEEElabelindent factor, don't revise \IEEElabelindent + \ifIEEEnolabelindentfactor\relax% + \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent% + \fi% + % Unless the user has requested otherwise, + % calculate our left margin based + % on \IEEElabelindent, \labelwidth and + % \labelsep + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}% + \fi}\fi\fi}% + + +% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS +% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS +% IEEEtran description list MDS 1/2001 +% Note controlled spacing here, shield end of lines with % +\def\@@IEEEdescription[#1]{% + \ifnum\@listdepth>5\relax\@toodeep\else% + % get the IEEElabelindentfactor for this level + \advance\@listdepth\@ne% we need to know what the level WILL be + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% + \advance\@listdepth-\@ne% undo our increment + \def\@IEEEiedjustify{0}% left justified labels are default + % set other defaults + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% + \topsep\IEEEiedtopsep% + \IEEElabelindent\IEEEdlabelindent% + % assume normal labelsep + \labelsep\IEEEiednormlabelsep% + \partopsep 0ex% + \parsep 0ex% + \itemsep 0ex% + \rightmargin 0em% + \listparindent 0em% + \itemindent 0em% + % Bogus label width in case the user forgets + % to set it. + % TIP: If you want to see what a variable's width is you + % can use the TeX command \showthe\width-variable to + % display it on the screen during compilation + % (This might be helpful to know when you need to find out + % which label is the widest) + \settowidth{\labelwidth}{Hello}% + \@IEEEsavelistparams% save our list parameters + \list{}{\@IEEErestorelistparams% override any list{} changes + % to our globals + \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel + \IEEEiedlistdecl% let user alter parameters + #1\relax% + % If the user has requested not to use the + % labelindent factor, don't revise \IEEElabelindent + \ifIEEEnolabelindentfactor\relax% + \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent% + \fi% + % Unless the user has requested otherwise, + % calculate our left margin based + % on \IEEElabelindent, \labelwidth and + % \labelsep + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}\relax% + \fi}\fi} + +% v1.6b we use one makelabel that does justification as needed. +\def\@IEEEiedmakelabel#1{\relax\if\@IEEEiedjustify 0\relax +\makebox[\labelwidth][l]{\normalfont #1}\else +\if\@IEEEiedjustify 1\relax +\makebox[\labelwidth][c]{\normalfont #1}\else +\makebox[\labelwidth][r]{\normalfont #1}\fi\fi} + + +% compsoc uses a larger value for the normal labelsep +% and also extra spacing above and below each list +\ifCLASSOPTIONcompsoc + \IEEEiednormlabelsep 1.2em + \IEEEiedtopsep 6pt plus 3pt minus 3pt +\fi + + +% VERSE and QUOTE +% V1.7 define environments with newenvironment +\newenvironment{verse}{\let\\=\@centercr + \list{}{\itemsep\z@ \itemindent -1.5em \listparindent \itemindent + \rightmargin\leftmargin\advance\leftmargin 1.5em}\item\relax} + {\endlist} +\newenvironment{quotation}{\list{}{\listparindent 1.5em \itemindent\listparindent + \rightmargin\leftmargin \parsep 0pt plus 1pt}\item\relax} + {\endlist} +\newenvironment{quote}{\list{}{\rightmargin\leftmargin}\item\relax} + {\endlist} + + +% \titlepage +% provided only for backward compatibility. \maketitle is the correct +% way to create the title page. +\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \else \newpage \fi \thispagestyle{empty}\c@page\z@} +\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi} + +% standard values from article.cls +\arraycolsep 5pt +\arrayrulewidth .4pt +\doublerulesep 2pt + +\tabcolsep 6pt +\tabbingsep 0.5em + + +%% FOOTNOTES +% +%\skip\footins 10pt plus 4pt minus 2pt +% V1.6 respond to changes in font size +% space added above the footnotes (if present) +\skip\footins 0.9\baselineskip plus 0.4\baselineskip minus 0.2\baselineskip + +% V1.6, we need to make \footnotesep responsive to changes +% in \baselineskip or strange spacings will result when in +% draft mode. Here is a little LaTeX secret - \footnotesep +% determines the height of an invisible strut that is placed +% *above* the baseline of footnotes after the first. Since +% LaTeX considers the space for characters to be 0.7\baselineskip +% above the baseline and 0.3\baselineskip below it, we need to +% use 0.7\baselineskip as a \footnotesep to maintain equal spacing +% between all the lines of the footnotes. The IEEE often uses a tad +% more, so use 0.8\baselineskip. This slightly larger value also helps +% the text to clear the footnote marks. Note that \thanks in IEEEtran +% uses its own value of \footnotesep which is set in \maketitle. +{\footnotesize +\global\footnotesep 0.8\baselineskip} + + +\skip\@mpfootins = \skip\footins +\fboxsep = 3pt +\fboxrule = .4pt +% V1.6 use 1em, then use LaTeX2e's \@makefnmark +% Note that the IEEE normally *left* aligns the footnote marks, so we don't need +% box resizing tricks here. +\long\def\@makefntext#1{\parindent 1em\indent\hbox{\@makefnmark}#1}% V1.6 use 1em +% V1.7 compsoc does not use superscipts for footnote marks +\ifCLASSOPTIONcompsoc +\def\@IEEEcompsocmakefnmark{\hbox{\normalfont\@thefnmark.\ }} +\long\def\@makefntext#1{\parindent 1em\indent\hbox{\@IEEEcompsocmakefnmark}#1} +\fi + +% The IEEE does not use footnote rules +\def\footnoterule{} + +% V1.7 for compsoc, the IEEE uses a footnote rule only for \thanks. We devise a "one-shot" +% system to implement this. +\newif\if@IEEEenableoneshotfootnoterule +\@IEEEenableoneshotfootnoterulefalse +\ifCLASSOPTIONcompsoc +\def\footnoterule{\relax\if@IEEEenableoneshotfootnoterule +\kern-5pt +\hbox to \columnwidth{\hfill\vrule width 0.5\columnwidth height 0.4pt\hfill} +\kern4.6pt +\global\@IEEEenableoneshotfootnoterulefalse +\else +\relax +\fi} +\fi + +% V1.6 do not allow LaTeX to break a footnote across multiple pages +\interfootnotelinepenalty=10000 + +% V1.6 discourage breaks within equations +% Note that amsmath normally sets this to 10000, +% but LaTeX2e normally uses 100. +\interdisplaylinepenalty=2500 + +% default allows section depth up to /paragraph +\setcounter{secnumdepth}{4} + +% technotes do not allow /paragraph +\ifCLASSOPTIONtechnote + \setcounter{secnumdepth}{3} +\fi +% neither do compsoc conferences +\@IEEEcompsocconfonly{\setcounter{secnumdepth}{3}} + + +\newcounter{section} +\newcounter{subsection}[section] +\newcounter{subsubsection}[subsection] +\newcounter{paragraph}[subsubsection] + +% used only by IEEEtran's IEEEeqnarray as other packages may +% have their own, different, implementations +\newcounter{IEEEsubequation}[equation] + +% as shown when called by user from \ref, \label and in table of contents +\def\theequation{\arabic{equation}} % 1 +\def\theIEEEsubequation{\theequation\alph{IEEEsubequation}} % 1a (used only by IEEEtran's IEEEeqnarray) +\ifCLASSOPTIONcompsoc +% compsoc is all arabic +\def\thesection{\arabic{section}} +\def\thesubsection{\thesection.\arabic{subsection}} +\def\thesubsubsection{\thesubsection.\arabic{subsubsection}} +\def\theparagraph{\thesubsubsection.\arabic{paragraph}} +\else +\def\thesection{\Roman{section}} % I +% V1.7, \mbox prevents breaks around - +\def\thesubsection{\mbox{\thesection-\Alph{subsection}}} % I-A +% V1.7 use I-A1 format used by the IEEE rather than I-A.1 +\def\thesubsubsection{\thesubsection\arabic{subsubsection}} % I-A1 +\def\theparagraph{\thesubsubsection\alph{paragraph}} % I-A1a +\fi + +% From Heiko Oberdiek. Because of the \mbox in \thesubsection, we need to +% tell hyperref to disable the \mbox command when making PDF bookmarks. +% This done already with hyperref.sty version 6.74o and later, but +% it will not hurt to do it here again for users of older versions. +\@ifundefined{pdfstringdefPreHook}{\let\pdfstringdefPreHook\@empty}{}% +\g@addto@macro\pdfstringdefPreHook{\let\mbox\relax} + + +% Main text forms (how shown in main text headings) +% V1.6, using \thesection in \thesectiondis allows changes +% in the former to automatically appear in the latter +\ifCLASSOPTIONcompsoc + \ifCLASSOPTIONconference% compsoc conference + \def\thesectiondis{\thesection.} + \def\thesubsectiondis{\thesectiondis\arabic{subsection}.} + \def\thesubsubsectiondis{\thesubsectiondis\arabic{subsubsection}.} + \def\theparagraphdis{\thesubsubsectiondis\arabic{paragraph}.} + \else% compsoc not conferencs + \def\thesectiondis{\thesection} + \def\thesubsectiondis{\thesectiondis.\arabic{subsection}} + \def\thesubsubsectiondis{\thesubsectiondis.\arabic{subsubsection}} + \def\theparagraphdis{\thesubsubsectiondis.\arabic{paragraph}} + \fi +\else% not compsoc + \def\thesectiondis{\thesection.} % I. + \def\thesubsectiondis{\Alph{subsection}.} % B. + \def\thesubsubsectiondis{\arabic{subsubsection})} % 3) + \def\theparagraphdis{\alph{paragraph})} % d) +\fi + +% just like LaTeX2e's \@eqnnum +\def\theequationdis{{\normalfont \normalcolor (\theequation)}}% (1) +% IEEEsubequation used only by IEEEtran's IEEEeqnarray +\def\theIEEEsubequationdis{{\normalfont \normalcolor (\theIEEEsubequation)}}% (1a) +% redirect LaTeX2e's equation number display and all that depend on +% it, through IEEEtran's \theequationdis +\def\@eqnnum{\theequationdis} + + + +% V1.7 provide string macros as article.cls does +\def\contentsname{Contents} +\def\listfigurename{List of Figures} +\def\listtablename{List of Tables} +\def\refname{References} +\def\indexname{Index} +\def\figurename{Fig.} +\def\tablename{TABLE} +\@IEEEcompsocconfonly{\def\figurename{Figure}} +\def\partname{Part} +\def\appendixname{Appendix} +\def\abstractname{Abstract} +% IEEE specific names +\def\IEEEkeywordsname{Index Terms} +\def\IEEEproofname{Proof} + + +% LIST OF FIGURES AND TABLES AND TABLE OF CONTENTS +% +\def\@pnumwidth{1.55em} +\def\@tocrmarg{2.55em} +\def\@dotsep{4.5} +\setcounter{tocdepth}{3} + +% adjusted some spacings here so that section numbers will not easily +% collide with the section titles. +% VIII; VIII-A; and VIII-A.1 are usually the worst offenders. +% MDS 1/2001 +\def\tableofcontents{\section*{\contentsname}\@starttoc{toc}} +\def\l@section#1#2{\addpenalty{\@secpenalty}\addvspace{1.0em plus 1pt}% + \@tempdima 2.75em \begingroup \parindent \z@ \rightskip \@pnumwidth% + \parfillskip-\@pnumwidth {\bfseries\leavevmode #1}\hfil\hbox to\@pnumwidth{\hss #2}\par% + \endgroup} +% argument format #1:level, #2:labelindent,#3:labelsep +\def\l@subsection{\@dottedtocline{2}{2.75em}{3.75em}} +\def\l@subsubsection{\@dottedtocline{3}{6.5em}{4.5em}} +% must provide \l@ defs for ALL sublevels EVEN if tocdepth +% is such as they will not appear in the table of contents +% these defs are how TOC knows what level these things are! +\def\l@paragraph{\@dottedtocline{4}{6.5em}{5.5em}} +\def\l@subparagraph{\@dottedtocline{5}{6.5em}{6.5em}} +\def\listoffigures{\section*{\listfigurename}\@starttoc{lof}} +\def\l@figure{\@dottedtocline{1}{0em}{2.75em}} +\def\listoftables{\section*{\listtablename}\@starttoc{lot}} +\let\l@table\l@figure + + +% Definitions for floats +% +% Normal Floats +% V1.8 floatsep et al. revised down by 0.15\baselineskip +% to account for the sideeffects of \topskip compensation +\floatsep 0.85\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip +\textfloatsep 1.55\baselineskip plus 0.2\baselineskip minus 0.4\baselineskip +\@fptop 0pt plus 1fil +\@fpsep 0.75\baselineskip plus 2fil +\@fpbot 0pt plus 1fil +\def\topfraction{0.9} +\def\bottomfraction{0.4} +\def\floatpagefraction{0.8} +% V1.7, let top floats approach 90% of page +\def\textfraction{0.1} + +% Double Column Floats +\dblfloatsep 0.85\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip + +\dbltextfloatsep 1.55\baselineskip plus 0.2\baselineskip minus 0.4\baselineskip +% Note that it would be nice if the rubber here actually worked in LaTeX2e. +% There is a long standing limitation in LaTeX, first discovered (to the best +% of my knowledge) by Alan Jeffrey in 1992. LaTeX ignores the stretchable +% portion of \dbltextfloatsep, and as a result, double column figures can and +% do result in an non-integer number of lines in the main text columns with +% underfull vbox errors as a consequence. A post to comp.text.tex +% by Donald Arseneau confirms that this had not yet been fixed in 1998. +% IEEEtran V1.6 will fix this problem for you in the titles, but it doesn't +% protect you from other double floats. Happy vspace'ing. + +\@dblfptop 0pt plus 1fil +\@dblfpsep 0.75\baselineskip plus 2fil +\@dblfpbot 0pt plus 1fil +\def\dbltopfraction{0.8} +\def\dblfloatpagefraction{0.8} +\setcounter{dbltopnumber}{4} + +\intextsep 0.85\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip +\setcounter{topnumber}{2} +\setcounter{bottomnumber}{2} +\setcounter{totalnumber}{4} + + + +% article class provides these, we should too. +\newlength\abovecaptionskip +\newlength\belowcaptionskip +% but only \abovecaptionskip is used above figure captions and *below* table +% captions +\setlength\abovecaptionskip{0.5\baselineskip} +% compsoc journals are a little more generous +\ifCLASSOPTIONcompsoc\ifCLASSOPTIONjournal + \setlength\abovecaptionskip{0.75\baselineskip} +\fi\fi +\setlength\belowcaptionskip{0pt} +% V1.6 create hooks in case the caption spacing ever needs to be +% overridden by a user +\def\@IEEEfigurecaptionsepspace{\vskip\abovecaptionskip\relax}% +\def\@IEEEtablecaptionsepspace{\vskip\abovecaptionskip\relax}% + + +% 1.6b revise caption system so that \@makecaption uses two arguments +% as with LaTeX2e. Otherwise, there will be problems when using hyperref. +\def\@IEEEtablestring{table} + + +% V1.8 compensate for \topskip so top of top figures align with tops of the first lines of main text +% here we calculate a space equal to the amount \topskip exceeds the main text height +% we hook in at \@floatboxreset +\def\@IEEEfiguretopskipspace{\ifdim\prevdepth=-1000pt\relax +\setlength{\@IEEEtrantmpdimenA}{1\topskip}\relax +\addtolength{\@IEEEtrantmpdimenA}{-0.7\@IEEEnormalsizeunitybaselineskip}\relax +\vspace*{\@IEEEtrantmpdimenA}\fi} +% V1.8 compensate for \topskip at the top of top tables so caption text is on main text baseline +% use a strut set on the caption baseline within \@makecaption +\def\@IEEEtabletopskipstrut{\ifdim\prevdepth=-1000pt\rule{0pt}{\topskip}\fi} +% the \ifdim\prevdepth checks are always expected to be true for IEEE style float caption ordering +% because top of figure content and top of captions in tables is the first thing on the vertical +% list of these floats +% thanks to Donald Arseneau for his 2000/11/11 post "Re: caption hacking" with info on this topic. + + +\ifCLASSOPTIONcompsoc +% V1.7 compsoc \@makecaption +\ifCLASSOPTIONconference% compsoc conference +\long\def\@makecaption#1#2{% +% test if is a for a figure or table +\ifx\@captype\@IEEEtablestring% +% if a table, do table caption +\footnotesize\bgroup\par\centering\@IEEEtabletopskipstrut{\normalfont\footnotesize {#1.}\nobreakspace\scshape #2}\par\addvspace{0.5\baselineskip}\egroup% +\@IEEEtablecaptionsepspace +% if not a table, format it as a figure +\else +\@IEEEfigurecaptionsepspace +\setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}\nobreakspace #2}% +\ifdim \wd\@tempboxa >\hsize% +% if caption is longer than a line, let it wrap around +\setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}\nobreakspace}% +\parbox[t]{\hsize}{\normalfont\footnotesize \noindent\unhbox\@tempboxa#2}% +% if caption is shorter than a line, center +\else% +\hbox to\hsize{\normalfont\footnotesize\hfil\box\@tempboxa\hfil}% +\fi\fi} +% +\else% nonconference compsoc +\long\def\@makecaption#1#2{% +% test if is a for a figure or table +\ifx\@captype\@IEEEtablestring% +% if a table, do table caption +\footnotesize\bgroup\par\centering\@IEEEtabletopskipstrut{\normalfont\sffamily\footnotesize #1}\\{\normalfont\sffamily\footnotesize #2}\par\addvspace{0.5\baselineskip}\egroup% +\@IEEEtablecaptionsepspace +% if not a table, format it as a figure +\else +\@IEEEfigurecaptionsepspace +\setbox\@tempboxa\hbox{\normalfont\sffamily\footnotesize {#1.}\nobreakspace #2}% +\ifdim \wd\@tempboxa >\hsize% +% if caption is longer than a line, let it wrap around +\setbox\@tempboxa\hbox{\normalfont\sffamily\footnotesize {#1.}\nobreakspace}% +\parbox[t]{\hsize}{\normalfont\sffamily\footnotesize \noindent\unhbox\@tempboxa#2}% +% if caption is shorter than a line, left justify +\else% +\hbox to\hsize{\normalfont\sffamily\footnotesize\box\@tempboxa\hfil}% +\fi\fi} +\fi +% +\else% traditional noncompsoc \@makecaption +\long\def\@makecaption#1#2{% +% test if is a for a figure or table +\ifx\@captype\@IEEEtablestring% +% if a table, do table caption +\footnotesize\bgroup\par\centering\@IEEEtabletopskipstrut{\normalfont\footnotesize #1}\\{\normalfont\footnotesize\scshape #2}\par\addvspace{0.5\baselineskip}\egroup% +\@IEEEtablecaptionsepspace +% if not a table, format it as a figure +\else +\@IEEEfigurecaptionsepspace +% 3/2001 use footnotesize, not small; use two nonbreaking spaces, not one +\setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}\nobreakspace\nobreakspace #2}% +\ifdim \wd\@tempboxa >\hsize% +% if caption is longer than a line, let it wrap around +\setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}\nobreakspace\nobreakspace}% +\parbox[t]{\hsize}{\normalfont\footnotesize\noindent\unhbox\@tempboxa#2}% +% if caption is shorter than a line, center if conference, left justify otherwise +\else% +\ifCLASSOPTIONconference \hbox to\hsize{\normalfont\footnotesize\hfil\box\@tempboxa\hfil}% +\else \hbox to\hsize{\normalfont\footnotesize\box\@tempboxa\hfil}% +\fi\fi\fi} +\fi + + + +% V1.7 disable captions class option, do so in a way that retains operation of \label +% within \caption +\ifCLASSOPTIONcaptionsoff +\long\def\@makecaption#1#2{\vspace*{2em}\footnotesize\bgroup\par\addvspace{0.5\baselineskip}\centering{\footnotesize #1}\par\addvspace{0.5\baselineskip}\egroup% +\let\@IEEEtemporiglabeldefsave\label +\let\@IEEEtemplabelargsave\relax +\def\label##1{\gdef\@IEEEtemplabelargsave{##1}}% +\setbox\@tempboxa\hbox{#2}% +\let\label\@IEEEtemporiglabeldefsave +\ifx\@IEEEtemplabelargsave\relax\else\label{\@IEEEtemplabelargsave}\fi} +\fi + + +% V1.7 define end environments with \def not \let so as to work OK with +% preview-latex +\newcounter{figure} +\def\thefigure{\@arabic\c@figure} +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{\figurename\nobreakspace\thefigure} +% V1.8 within figures add \@IEEEfiguretopskipspace compensation to LaTeX2e's \@floatboxreset +\def\figure{\def\@floatboxreset{\reset@font\normalsize\@setminipage\@IEEEfiguretopskipspace}\@float{figure}} +\def\endfigure{\end@float} +% V1.8 also add \@IEEEfiguretopskipspace compensation to \figure* +\@namedef{figure*}{\def\@floatboxreset{\reset@font\normalsize\@setminipage\@IEEEfiguretopskipspace}\@dblfloat{figure}} +\@namedef{endfigure*}{\end@dblfloat} + +\newcounter{table} +\ifCLASSOPTIONcompsoc +\def\thetable{\arabic{table}} +\else +\def\thetable{\@Roman\c@table} +\fi +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\def\fnum@table{\tablename\nobreakspace\thetable} +% V1.6 The IEEE uses 8pt text for tables +% within tables alter LaTeX2e's \@floatboxreset to use \footnotesize +\def\table{\def\@floatboxreset{\reset@font\footnotesize\@setminipage}\@float{table}} +\def\endtable{\end@float} +% v1.6b double column tables need to default to footnotesize as well. +\@namedef{table*}{\def\@floatboxreset{\reset@font\footnotesize\@setminipage}\@dblfloat{table}} +\@namedef{endtable*}{\end@dblfloat} + + + + +%% -- Command Argument Scanning Support Functions -- +%% V1.8a + +% usage: \@IEEEstripouterbraces*{} +% \@IEEEstripouterbraces fully expands its argument (which it then stores +% in \@IEEEstripouterbracesarg) via \edef, then removes any outer enclosing +% braces, and finally stores the result in the macro +% \@IEEEstrippedouterbraces. +% +% For example: +% \@IEEEstripouterbraces{{{{ab}c}}} +% results in: +% +% \@IEEEstripouterbracesarg ==> a macro containing {{{ab}c}} +% \@IEEEstrippedouterbraces ==> a macro containing {ab}c +% +% the *-star form,\@IEEEstripouterbraces*, does not expand the argument +% contents during processing +\def\@IEEEstripouterbraces{\@ifstar{\let\@IEEEstripouterbracesdef=\def\@@IEEEstripouterbraces}{\let\@IEEEstripouterbracesdef=\edef\@@IEEEstripouterbraces}} + +\def\@@IEEEstripouterbraces#1{\@IEEEstripouterbracesdef\@IEEEstripouterbracesarg{#1}\relax +% If the macro is unchanged after being acquired as a single delimited +% argument, we know we have one sequence of tokens without any enclosing +% braces. Loop until this is true. +\loop + \expandafter\@@@IEEEstripouterbraces\@IEEEstripouterbracesarg\@IEEEgeneralsequenceDELIMITER +\ifx\@IEEEstrippedouterbraces\@IEEEstripouterbracesarg +\else + \let\@IEEEstripouterbracesarg\@IEEEstrippedouterbraces +\repeat} + +\def\@@@IEEEstripouterbraces#1\@IEEEgeneralsequenceDELIMITER{\def\@IEEEstrippedouterbraces{#1}} + + + +% usage: \@IEEEextractgroup*{} +% \@IEEEextractgroup fully expands its argument (which it then stores in +% \@IEEEextractgrouparg) via \edef and then assigns the first "brace group" +% of tokens to the macro \@IEEEextractedgroup. +% The remaining groups, if any, are stored in the macro +% \@IEEEextractedgroupremain. If the argument does not contain the requisite +% groups, the respective macros will be defined to be empty. +% There is an asymmetry in that \@IEEEextractedgroup is stripped of its first +% outer grouping while \@IEEEextractedgroupremain retains even the outer +% grouping (if present) that originally identified it as a group. +% +% For example: +% \@IEEEextractgroup{{{ab}}{c{de}}} +% results in: +% +% \@IEEEextractgrouparg ==> a macro containing {{ab}}{c{de}} +% \@IEEEextractedgroup ==> a macro containing {ab} +% \@IEEEextractedgroupremain ==> a macro containing {c{de}} +% +% The *-star form, \@IEEEextractgroup*, does not expand its argument +% contents during processing. +\def\@IEEEextractgroup{\@ifstar{\let\@IEEEextractgroupdef=\def\@@IEEEextractgroup}{\let\@IEEEextractgroupdef=\edef\@@IEEEextractgroup}} + +\def\@@IEEEextractgroup#1{\@IEEEextractgroupdef\@IEEEextractgrouparg{#1}\relax +% trap the case of an empty extracted group as this would cause problems with +% \@IEEEextractgroupremain's argument acquisition +\ifx\@IEEEextractgrouparg\@empty + \def\@IEEEextractedgroup{}\relax + \def\@IEEEextractedgroupremain{}\relax +\else + % We have to use some dirty tricks here. We want to insert {} around + % whatever remains after the first group so that TeX's argument scanner + % will preserve any originally enclosing braces as well as provide an + % empty argument to acquire even if there isn't a second group. + % In this first of two dirty tricks, we put a } at the end of the structure + % we are going to extract from. The \ifnum0=`{\fi keeps TeX happy to allow + % what would otherwise be an unbalanced macro definition for + % \@@IEEEextractgroup to be acceptable to it. + \ifnum0=`{\fi\expandafter\@IEEEextractgroupremain\@IEEEextractgrouparg}\relax +\fi} + +% In the second part of the dirty tricks, we insert a leading { right after +% the first group is acquired, but before the remainder is. Again, the +% \ifnum0=`}\fi keeps TeX happy during definition time, but will disappear +% during run time. +\def\@IEEEextractgroupremain#1{\def\@IEEEextractedgroup{#1}\expandafter\@@IEEEextractgroupremain\expandafter{\ifnum0=`}\fi} + +\def\@@IEEEextractgroupremain#1{\def\@IEEEextractedgroupremain{#1}} + + + +% \@IEEEextracttoken relocated at top because margin setting commands rely on it + + + +% usage: \@IEEEextracttokengroups*{} +% \@IEEEextracttokengroups fully expands its argument (which it then stores +% in \@IEEEextracttokengroupsarg) and then assigns the first "brace group" of +% tokens (with the outermost braces removed) to the macro +% \@IEEEextractedfirstgroup. +% The meaning of the first nonbrace (but including the empty group) token +% within this first group is assigned via \let to \@IEEEextractedfirsttoken +% as well as stored in the macro \@IEEEextractedfirsttokenmacro. If a first +% nonbrace token does not exist (or is an empty group), these will be \relax +% and empty, respectively. Tokens that would otherwise be discarded during +% the acquisition of the first token in the first group are stored in +% \@IEEEextractedfirsttokensdiscarded, however their original relative brace +% nesting depths are not guaranteed to be preserved. +% The first group within this first group is stored in the macro +% \@IEEEextractedfirstfirstgroup. +% Likewise for the next group after the first: \@IEEEextractednextgroup, +% \@IEEEextractednextfirstgroup, \@IEEEextractednextgroupfirsttoken, +% \@IEEEextractednextgroupfirsttokenmacro, and +% \@IEEEextractednextfirsttokensdiscarded. +% All tokens/groups after the first group, including any enclosing braces, +% are stored in the macro \@IEEEextractedafterfirstgroupremain which will +% be empty if none exist. +% +% For example: +% \@IEEEextracttokengroups{{{ab}{cd}}{{ef}g}} +% will result in: +% +% \@IEEEextracttokengroupsarg ==> a macro containing {{ab}{cd}}{{ef}g} +% \@IEEEextractedfirstgroup ==> a macro containing {ab}{cd} +% \@IEEEextractedafterfirstgroupremain ==> a macro containing {{ef}g} +% \@IEEEextractedfirsttoken ==> the letter a +% \@IEEEextractedfirsttokenmacro ==> a macro containing a +% \@IEEEextractedfirsttokensdiscarded ==> a macro containing bcd +% \@IEEEextractedfirstfirstgroup ==> a macro containing ab +% \@IEEEextractednextgroup ==> a macro containing {ef}g +% \@IEEEextractednextfirsttoken ==> the letter e +% \@IEEEextractednextfirsttokenmacro ==> a macro containing e +% \@IEEEextractednextfirsttokensdiscarded ==> a macro containing fg +% \@IEEEextractednextfirstgroup ==> a macro containing ef +% +% If given an empty argument, \@IEEEextractedfirsttoken and +% \@IEEEextractednextfirsttoken will be set to \relax +% and all the macros will be empty. +% the *-star form, \@IEEEextracttokengroups*, does not expand its argument +% contents during processing. +% +% Depends on: \@IEEEextractgroup, \@IEEEextracttoken +\def\@IEEEextracttokengroups{\@ifstar{\let\@IEEEextracttokengroupsdef=\def\@@IEEEextracttokengroups}{\let\@IEEEextracttokengroupsdef=\edef\@@IEEEextracttokengroups}} +\def\@@IEEEextracttokengroups#1{\@IEEEextracttokengroupsdef\@IEEEextracttokengroupsarg{#1}\relax +% begin extraction, these functions are safe with empty arguments +% first group +\expandafter\@IEEEextractgroup\expandafter*\expandafter{\@IEEEextracttokengroupsarg}\relax +\let\@IEEEextractedfirstgroup\@IEEEextractedgroup +\let\@IEEEextractedafterfirstgroupremain\@IEEEextractedgroupremain +\expandafter\@IEEEextracttoken\expandafter*\expandafter{\@IEEEextractedfirstgroup}\relax +\let\@IEEEextractedfirsttoken\@IEEEextractedtoken +\let\@IEEEextractedfirsttokenmacro\@IEEEextractedtokenmacro +\let\@IEEEextractedfirsttokensdiscarded\@IEEEextractedtokensdiscarded +% first first group +\expandafter\@IEEEextractgroup\expandafter*\expandafter{\@IEEEextractedfirstgroup}\relax +\let\@IEEEextractedfirstfirstgroup\@IEEEextractedgroup +% next group +\expandafter\@IEEEextractgroup\expandafter*\expandafter{\@IEEEextractedafterfirstgroupremain}\relax +\let\@IEEEextractednextgroup\@IEEEextractedgroup +\expandafter\@IEEEextracttoken\expandafter*\expandafter{\@IEEEextractednextgroup}\relax +\let\@IEEEextractednextfirsttoken\@IEEEextractedtoken +\let\@IEEEextractednextfirsttokenmacro\@IEEEextractedtokenmacro +\let\@IEEEextractednextfirsttokensdiscarded\@IEEEextractedtokensdiscarded +% next first group +\expandafter\@IEEEextractgroup\expandafter*\expandafter{\@IEEEextractednextgroup}\relax +\let\@IEEEextractednextfirstgroup\@IEEEextractedgroup} + + +%% -- End of Command Argument Scanning Support Functions -- + + + + +%% +%% START OF IEEEeqnarray DEFINITIONS +%% +%% Inspired by the concepts, examples, and previous works of LaTeX +%% coders and developers such as Donald Arseneau, Fred Bartlett, +%% David Carlisle, Tony Liu, Frank Mittelbach, Piet van Oostrum, +%% Roland Winkler and Mark Wooding. +%% I don't make the claim that my work here is even near their calibre. ;) + + +\newif\if@IEEEeqnarrayboxnojot% flag to indicate if the environment was called as the star form +\@IEEEeqnarrayboxnojotfalse + +\newif\if@advanceIEEEeqncolcnt% tracks if the environment should advance the col counter +% allows a way to make an \IEEEeqnarraybox that can be used within an \IEEEeqnarray +% used by IEEEeqnarraymulticol so that it can work properly in both +\@advanceIEEEeqncolcnttrue + +\newcount\@IEEEeqnnumcols % tracks how many IEEEeqnarray cols are defined +\newcount\@IEEEeqncolcnt % tracks how many IEEEeqnarray cols the user actually used + + +% The default math style used by the columns +\def\IEEEeqnarraymathstyle{\displaystyle} +% The default text style used by the columns +% default to using the current font +\def\IEEEeqnarraytextstyle{\relax} + +% like the iedlistdecl but for \IEEEeqnarray +\def\IEEEeqnarraydecl{\relax} +\def\IEEEeqnarrayboxdecl{\relax} + + + +% V1.8 flags to indicate that equation numbering is to persist +\newif\if@IEEEeqnumpersist% +\@IEEEeqnumpersistfalse +\newif\if@IEEEsubeqnumpersist% +\@IEEEsubeqnumpersistfalse +% +% V1.8 flags to indicate if (sub)equation number of last line was preadvanced +\newif\if@IEEEeqnumpreadv% +\@IEEEeqnumpreadvfalse +\newif\if@IEEEsubeqnumpreadv% +\@IEEEsubeqnumpreadvfalse + +\newcount\@IEEEsubeqnnumrollback% saves previous value of IEEEsubequation number in case we need to restore it + +% \yesnumber is the opposite of \nonumber +% a novel concept with the same def as the equationarray package +% However, we give IEEE versions too since some LaTeX packages such as +% the MDWtools mathenv.sty redefine \nonumber to something else. +% This command is intended for use in non-IEEEeqnarray math environments +\providecommand{\yesnumber}{\global\@eqnswtrue} + + +% IEEEyes/nonumber +% V1.8 add persistant * forms +% These commands can alter the type of equation an IEEEeqnarray line is. +\def\IEEEyesnumber{\@ifstar{\global\@IEEEeqnumpersisttrue\global\@IEEEsubeqnumpersistfalse\@IEEEyesnumber}{\@IEEEyesnumber}} + +\def\@IEEEyesnumber{\global\@eqnswtrue +\if@IEEEeqnarrayISinner% alter counters and label only inside an IEEEeqnarray +\ifnum\c@IEEEsubequation>0\relax + \stepcounter{equation}\setcounter{IEEEsubequation}{0}\gdef\@currentlabel{\p@equation\theequation}\relax + \gdef\@currentHref{\@IEEEtheHrefequation}% setup hyperref label +\fi +% even if we reached this eqn num via a preadv, it is legit now +\global\@IEEEeqnumpreadvfalse\global\@IEEEsubeqnumpreadvfalse +\fi} + +\def\IEEEnonumber{\@ifstar{\global\@IEEEeqnumpersistfalse\global\@IEEEsubeqnumpersistfalse\global\@eqnswfalse}{\global\@eqnswfalse}} + + +\def\IEEEyessubnumber{\@ifstar{\global\@IEEEsubeqnumpersisttrue\@IEEEyessubnumber}{\@IEEEyessubnumber}} +% +\def\@IEEEyessubnumber{\if@IEEEeqnarrayISinner% alter counters and label only inside an IEEEeqnarray + \ifnum\c@IEEEsubequation>0\relax% if it already is a subequation, we are good to go as-is + \else% if we are a regular equation we have to watch out for two cases + \if@IEEEeqnumpreadv% if this equation is the result of a preadvance, backout and bump the sub eqnnum + \global\advance\c@equation\m@ne\global\c@IEEEsubequation=\@IEEEsubeqnnumrollback\addtocounter{IEEEsubequation}{1}\relax + \else% non-preadvanced equations just need initialization of their sub eqnnum + \setcounter{IEEEsubequation}{1}\relax + \fi + \fi% fi already is subequation + \gdef\@currentlabel{\p@IEEEsubequation\theIEEEsubequation}\relax + \gdef\@currentHref{\@IEEEtheHrefsubequation}% setup hyperref label + \global\@IEEEeqnumpreadvfalse\global\@IEEEsubeqnumpreadvfalse% no longer a preadv anymore + \global\@eqnswtrue +\fi} + + +\def\IEEEnosubnumber{\@ifstar{\global\@IEEEsubeqnumpersistfalse\@IEEEnosubnumber}{\@IEEEnosubnumber}} +% +\def\@IEEEnosubnumber{\if@IEEEeqnarrayISinner% alter counters and label only inside an IEEEeqnarray + \if@eqnsw % we do nothing unless we know we will display because we play with the counters here + % if it currently is a subequation, bump up to the next equation number and turn off the subequation + \ifnum\c@IEEEsubequation>0\relax\addtocounter{equation}{1}\setcounter{IEEEsubequation}{0}\relax + \fi + \global\@IEEEeqnumpreadvfalse\global\@IEEEsubeqnumpreadvfalse% no longer a preadv anymore + \gdef\@currentlabel{\p@equation\theequation}\relax + \gdef\@currentHref{\@IEEEtheHrefequation}% setup hyperref label + \fi +\fi} + + + +% allows users to "push away" equations that get too close to the equation numbers +\def\IEEEeqnarraynumspace{\hphantom{\ifnum\c@IEEEsubequation>0\relax\theIEEEsubequationdis\else\theequationdis\fi}} + +% provides a way to span multiple columns within IEEEeqnarray environments +% will consider \if@advanceIEEEeqncolcnt before globally advancing the +% column counter - so as to work within \IEEEeqnarraybox +% usage: \IEEEeqnarraymulticol{number cols. to span}{col type}{cell text} +\long\def\IEEEeqnarraymulticol#1#2#3{\multispan{#1}\relax +% check if column is defined for the precolumn definition +% We have to be careful here because TeX scans for & even within an \iffalse +% where it does not expand macros. So, if we used only one \ifx and a #3 +% appeared in the false branch and the user inserted another alignment +% structure that uses & in the \IEEEeqnarraymulticol{}, TeX will not see that +% there is an inner alignment in the false branch yet still will see any & +% there and will think that they apply to the outer alignment resulting in an +% incomplete \ifx error. +% So, here we use separate checks for the pre and post parts in order to keep +% the #3 outside of all conditionals. +\relax\expandafter\ifx\csname @IEEEeqnarraycolDEF#2\endcsname\@IEEEeqnarraycolisdefined\relax +\csname @IEEEeqnarraycolPRE#2\endcsname +\else% if not, error and use default type +\@IEEEclspkgerror{Invalid column type "#2" in \string\IEEEeqnarraymulticol.\MessageBreak +Using a default centering column instead}% +{You must define IEEEeqnarray column types before use.}% +\csname @IEEEeqnarraycolPRE@IEEEdefault\endcsname +\fi +% The ten \relax are to help prevent misleading error messages in case a user +% accidently inserted a macro that tries to acquire additional arguments. +#3\relax\relax\relax\relax\relax\relax\relax\relax\relax\relax +% check if column is defined for the postcolumn definition +\expandafter\ifx\csname @IEEEeqnarraycolDEF#2\endcsname\@IEEEeqnarraycolisdefined\relax +\csname @IEEEeqnarraycolPOST#2\endcsname +\else% if not, use the default type +\csname @IEEEeqnarraycolPOST@IEEEdefault\endcsname +\fi +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by #1\relax\fi} + +% like \omit, but maintains track of the column counter for \IEEEeqnarray +\def\IEEEeqnarrayomit{\omit\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by 1\relax\fi} + + +% provides a way to define a letter referenced column type +% usage: \IEEEeqnarraydefcol{col. type letter/name}{pre insertion text}{post insertion text} +\def\IEEEeqnarraydefcol#1#2#3{\expandafter\def\csname @IEEEeqnarraycolPRE#1\endcsname{#2}% +\expandafter\def\csname @IEEEeqnarraycolPOST#1\endcsname{#3}% +\expandafter\def\csname @IEEEeqnarraycolDEF#1\endcsname{1}} + + +% provides a way to define a numerically referenced inter-column glue types +% usage: \IEEEeqnarraydefcolsep{col. glue number}{glue definition} +\def\IEEEeqnarraydefcolsep#1#2{\expandafter\def\csname @IEEEeqnarraycolSEP\romannumeral #1\endcsname{#2}% +\expandafter\def\csname @IEEEeqnarraycolSEPDEF\romannumeral #1\endcsname{1}} + + +\def\@IEEEeqnarraycolisdefined{1}% just a macro for 1, used for checking undefined column types + + +% expands and appends the given argument to the \@IEEEtrantmptoksA token list +% used to build up the \halign preamble +\def\@IEEEappendtoksA#1{\edef\@@IEEEappendtoksA{\@IEEEtrantmptoksA={\the\@IEEEtrantmptoksA #1}}% +\@@IEEEappendtoksA} + +% also appends to \@IEEEtrantmptoksA, but does not expand the argument +% uses \toks8 as a scratchpad register +\def\@IEEEappendNOEXPANDtoksA#1{\toks8={#1}% +\edef\@@IEEEappendNOEXPANDtoksA{\@IEEEtrantmptoksA={\the\@IEEEtrantmptoksA\the\toks8}}% +\@@IEEEappendNOEXPANDtoksA} + +% define some common column types for the user +% math +\IEEEeqnarraydefcol{l}{$\IEEEeqnarraymathstyle}{$\hfil} +\IEEEeqnarraydefcol{c}{\hfil$\IEEEeqnarraymathstyle}{$\hfil} +\IEEEeqnarraydefcol{r}{\hfil$\IEEEeqnarraymathstyle}{$} +\IEEEeqnarraydefcol{L}{$\IEEEeqnarraymathstyle{}}{{}$\hfil} +\IEEEeqnarraydefcol{C}{\hfil$\IEEEeqnarraymathstyle{}}{{}$\hfil} +\IEEEeqnarraydefcol{R}{\hfil$\IEEEeqnarraymathstyle{}}{{}$} +% text +\IEEEeqnarraydefcol{s}{\IEEEeqnarraytextstyle}{\hfil} +\IEEEeqnarraydefcol{t}{\hfil\IEEEeqnarraytextstyle}{\hfil} +\IEEEeqnarraydefcol{u}{\hfil\IEEEeqnarraytextstyle}{} + +% vertical rules +\IEEEeqnarraydefcol{v}{}{\vrule width\arrayrulewidth} +\IEEEeqnarraydefcol{vv}{\vrule width\arrayrulewidth\hfil}{\hfil\vrule width\arrayrulewidth} +\IEEEeqnarraydefcol{V}{}{\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth} +\IEEEeqnarraydefcol{VV}{\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth\hfil}% +{\hfil\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth} + +% horizontal rules +\IEEEeqnarraydefcol{h}{}{\leaders\hrule height\arrayrulewidth\hfil} +\IEEEeqnarraydefcol{H}{}{\leaders\vbox{\hrule width\arrayrulewidth\vskip\doublerulesep\hrule width\arrayrulewidth}\hfil} + +% plain +\IEEEeqnarraydefcol{x}{}{} +\IEEEeqnarraydefcol{X}{$}{$} + +% the default column type to use in the event a column type is not defined +\IEEEeqnarraydefcol{@IEEEdefault}{\hfil$\IEEEeqnarraymathstyle}{$\hfil} + + +% a zero tabskip (used for "-" col types) +\def\@IEEEeqnarraycolSEPzero{0pt plus 0pt minus 0pt} +% a centering tabskip (used for "+" col types) +\def\@IEEEeqnarraycolSEPcenter{1000pt plus 0pt minus 1000pt} + +% top level default tabskip glues for the start, end, and inter-column +% may be reset within environments not always at the top level, e.g., \IEEEeqnarraybox +\edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPcenter}% default start glue +\edef\@IEEEeqnarraycolSEPdefaultend{\@IEEEeqnarraycolSEPcenter}% default end glue +\edef\@IEEEeqnarraycolSEPdefaultmid{\@IEEEeqnarraycolSEPzero}% default inter-column glue + + + +% creates a vertical rule that extends from the bottom to the top a a cell +% Provided in case other packages redefine \vline some other way. +% usage: \IEEEeqnarrayvrule[rule thickness] +% If no argument is provided, \arrayrulewidth will be used for the rule thickness. +\newcommand\IEEEeqnarrayvrule[1][\arrayrulewidth]{\vrule\@width#1\relax} + +% creates a blank separator row +% usage: \IEEEeqnarrayseprow[separation length][font size commands] +% default is \IEEEeqnarrayseprow[0.25\normalbaselineskip][\relax] +% blank arguments inherit the default values +% uses \skip5 as a scratch register - calls \@IEEEeqnarraystrutsize which uses more scratch registers +\def\IEEEeqnarrayseprow{\relax\@ifnextchar[{\@IEEEeqnarrayseprow}{\@IEEEeqnarrayseprow[0.25\normalbaselineskip]}} +\def\@IEEEeqnarrayseprow[#1]{\relax\@ifnextchar[{\@@IEEEeqnarrayseprow[#1]}{\@@IEEEeqnarrayseprow[#1][\relax]}} +\def\@@IEEEeqnarrayseprow[#1][#2]{\def\@IEEEeqnarrayseprowARGONE{#1}% +\ifx\@IEEEeqnarrayseprowARGONE\@empty% +% get the skip value, based on the font commands +% use skip5 because \IEEEeqnarraystrutsize uses \skip0, \skip2, \skip3 +% assign within a bogus box to confine the font changes +{\setbox0=\hbox{#2\relax\global\skip5=0.25\normalbaselineskip}}% +\else% +{\setbox0=\hbox{#2\relax\global\skip5=#1}}% +\fi% +\@IEEEeqnarrayhoptolastcolumn\IEEEeqnarraystrutsize{\skip5}{0pt}[\relax]\relax} + +% creates a blank separator row, but omits all the column templates +% usage: \IEEEeqnarrayseprowcut[separation length][font size commands] +% default is \IEEEeqnarrayseprowcut[0.25\normalbaselineskip][\relax] +% blank arguments inherit the default values +% uses \skip5 as a scratch register - calls \@IEEEeqnarraystrutsize which uses more scratch registers +\def\IEEEeqnarrayseprowcut{\multispan{\@IEEEeqnnumcols}\relax% span all the cols +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\@ifnextchar[{\@IEEEeqnarrayseprowcut}{\@IEEEeqnarrayseprowcut[0.25\normalbaselineskip]}} +\def\@IEEEeqnarrayseprowcut[#1]{\relax\@ifnextchar[{\@@IEEEeqnarrayseprowcut[#1]}{\@@IEEEeqnarrayseprowcut[#1][\relax]}} +\def\@@IEEEeqnarrayseprowcut[#1][#2]{\def\@IEEEeqnarrayseprowARGONE{#1}% +\ifx\@IEEEeqnarrayseprowARGONE\@empty% +% get the skip value, based on the font commands +% use skip5 because \IEEEeqnarraystrutsize uses \skip0, \skip2, \skip3 +% assign within a bogus box to confine the font changes +{\setbox0=\hbox{#2\relax\global\skip5=0.25\normalbaselineskip}}% +\else% +{\setbox0=\hbox{#2\relax\global\skip5=#1}}% +\fi% +\IEEEeqnarraystrutsize{\skip5}{0pt}[\relax]\relax} + + + +% draws a single rule across all the columns optional +% argument determines the rule width, \arrayrulewidth is the default +% updates column counter as needed and turns off struts +% usage: \IEEEeqnarrayrulerow[rule line thickness] +\def\IEEEeqnarrayrulerow{\multispan{\@IEEEeqnnumcols}\relax% span all the cols +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\@ifnextchar[{\@IEEEeqnarrayrulerow}{\@IEEEeqnarrayrulerow[\arrayrulewidth]}} +\def\@IEEEeqnarrayrulerow[#1]{\leaders\hrule height#1\hfil\relax% put in our rule +% turn off any struts +\IEEEeqnarraystrutsize{0pt}{0pt}[\relax]\relax} + + +% draws a double rule by using a single rule row, a separator row, and then +% another single rule row +% first optional argument determines the rule thicknesses, \arrayrulewidth is the default +% second optional argument determines the rule spacing, \doublerulesep is the default +% usage: \IEEEeqnarraydblrulerow[rule line thickness][rule spacing] +\def\IEEEeqnarraydblrulerow{\multispan{\@IEEEeqnnumcols}\relax% span all the cols +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\@ifnextchar[{\@IEEEeqnarraydblrulerow}{\@IEEEeqnarraydblrulerow[\arrayrulewidth]}} +\def\@IEEEeqnarraydblrulerow[#1]{\relax\@ifnextchar[{\@@IEEEeqnarraydblrulerow[#1]}% +{\@@IEEEeqnarraydblrulerow[#1][\doublerulesep]}} +\def\@@IEEEeqnarraydblrulerow[#1][#2]{\def\@IEEEeqnarraydblrulerowARG{#1}% +% we allow the user to say \IEEEeqnarraydblrulerow[][] +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\@IEEEeqnarrayrulerow[\arrayrulewidth]% +\else% +\@IEEEeqnarrayrulerow[#1]\relax% +\fi% +\def\@IEEEeqnarraydblrulerowARG{#2}% +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\\\IEEEeqnarrayseprow[\doublerulesep][\relax]% +\else% +\\\IEEEeqnarrayseprow[#2][\relax]% +\fi% +\\\multispan{\@IEEEeqnnumcols}% +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\def\@IEEEeqnarraydblrulerowARG{#1}% +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\@IEEEeqnarrayrulerow[\arrayrulewidth]% +\else% +\@IEEEeqnarrayrulerow[#1]% +\fi% +} + +% draws a double rule by using a single rule row, a separator (cutting) row, and then +% another single rule row +% first optional argument determines the rule thicknesses, \arrayrulewidth is the default +% second optional argument determines the rule spacing, \doublerulesep is the default +% usage: \IEEEeqnarraydblrulerow[rule line thickness][rule spacing] +\def\IEEEeqnarraydblrulerowcut{\multispan{\@IEEEeqnnumcols}\relax% span all the cols +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\@ifnextchar[{\@IEEEeqnarraydblrulerowcut}{\@IEEEeqnarraydblrulerowcut[\arrayrulewidth]}} +\def\@IEEEeqnarraydblrulerowcut[#1]{\relax\@ifnextchar[{\@@IEEEeqnarraydblrulerowcut[#1]}% +{\@@IEEEeqnarraydblrulerowcut[#1][\doublerulesep]}} +\def\@@IEEEeqnarraydblrulerowcut[#1][#2]{\def\@IEEEeqnarraydblrulerowARG{#1}% +% we allow the user to say \IEEEeqnarraydblrulerow[][] +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\@IEEEeqnarrayrulerow[\arrayrulewidth]% +\else% +\@IEEEeqnarrayrulerow[#1]% +\fi% +\def\@IEEEeqnarraydblrulerowARG{#2}% +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\\\IEEEeqnarrayseprowcut[\doublerulesep][\relax]% +\else% +\\\IEEEeqnarrayseprowcut[#2][\relax]% +\fi% +\\\multispan{\@IEEEeqnnumcols}% +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\def\@IEEEeqnarraydblrulerowARG{#1}% +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\@IEEEeqnarrayrulerow[\arrayrulewidth]% +\else% +\@IEEEeqnarrayrulerow[#1]% +\fi% +} + + + +% inserts a full row's worth of &'s +% relies on \@IEEEeqnnumcols to provide the correct number of columns +% uses \@IEEEtrantmptoksA, \count0 as scratch registers +\def\@IEEEeqnarrayhoptolastcolumn{\@IEEEtrantmptoksA={}\count0=1\relax% +\loop% add cols if the user did not use them all +\ifnum\count0<\@IEEEeqnnumcols\relax% +\@IEEEappendtoksA{&}% +\advance\count0 by 1\relax% update the col count +\repeat% +\the\@IEEEtrantmptoksA%execute the &'s +} + + + +\newif\if@IEEEeqnarrayISinner % flag to indicate if we are within the lines +\@IEEEeqnarrayISinnerfalse % of an IEEEeqnarray - after the IEEEeqnarraydecl + +\edef\@IEEEeqnarrayTHEstrutheight{0pt} % height and depth of IEEEeqnarray struts +\edef\@IEEEeqnarrayTHEstrutdepth{0pt} + +\edef\@IEEEeqnarrayTHEmasterstrutheight{0pt} % default height and depth of +\edef\@IEEEeqnarrayTHEmasterstrutdepth{0pt} % struts within an IEEEeqnarray + +\edef\@IEEEeqnarrayTHEmasterstrutHSAVE{0pt} % saved master strut height +\edef\@IEEEeqnarrayTHEmasterstrutDSAVE{0pt} % and depth + +\newif\if@IEEEeqnarrayusemasterstrut % flag to indicate that the master strut value +\@IEEEeqnarrayusemasterstruttrue % is to be used + + + +% saves the strut height and depth of the master strut +\def\@IEEEeqnarraymasterstrutsave{\relax% +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax% +% remove stretchability +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% save values +\edef\@IEEEeqnarrayTHEmasterstrutHSAVE{\the\dimen0}% +\edef\@IEEEeqnarrayTHEmasterstrutDSAVE{\the\dimen2}} + +% restores the strut height and depth of the master strut +\def\@IEEEeqnarraymasterstrutrestore{\relax% +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutHSAVE\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutDSAVE\relax% +% remove stretchability +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% restore values +\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}} + + +% globally restores the strut height and depth to the +% master values and sets the master strut flag to true +\def\@IEEEeqnarraystrutreset{\relax% +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax% +% remove stretchability +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% restore values +\xdef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\xdef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\global\@IEEEeqnarrayusemasterstruttrue} + + +% if the master strut is not to be used, make the current +% values of \@IEEEeqnarrayTHEstrutheight, \@IEEEeqnarrayTHEstrutdepth +% and the use master strut flag, global +% this allows user strut commands issued in the last column to be carried +% into the isolation/strut column +\def\@IEEEeqnarrayglobalizestrutstatus{\relax% +\if@IEEEeqnarrayusemasterstrut\else% +\xdef\@IEEEeqnarrayTHEstrutheight{\@IEEEeqnarrayTHEstrutheight}% +\xdef\@IEEEeqnarrayTHEstrutdepth{\@IEEEeqnarrayTHEstrutdepth}% +\global\@IEEEeqnarrayusemasterstrutfalse% +\fi} + + + +% usage: \IEEEeqnarraystrutsize{height}{depth}[font size commands] +% If called outside the lines of an IEEEeqnarray, sets the height +% and depth of both the master and local struts. If called inside +% an IEEEeqnarray line, sets the height and depth of the local strut +% only and sets the flag to indicate the use of the local strut +% values. If the height or depth is left blank, 0.7\normalbaselineskip +% and 0.3\normalbaselineskip will be used, respectively. +% The optional argument can be used to evaluate the lengths under +% a different font size and styles. If none is specified, the current +% font is used. +% uses scratch registers \skip0, \skip2, \skip3, \dimen0, \dimen2 +\def\IEEEeqnarraystrutsize#1#2{\relax\@ifnextchar[{\@IEEEeqnarraystrutsize{#1}{#2}}{\@IEEEeqnarraystrutsize{#1}{#2}[\relax]}} +\def\@IEEEeqnarraystrutsize#1#2[#3]{\def\@IEEEeqnarraystrutsizeARG{#1}% +\ifx\@IEEEeqnarraystrutsizeARG\@empty% +{\setbox0=\hbox{#3\relax\global\skip3=0.7\normalbaselineskip}}% +\skip0=\skip3\relax% +\else% arg one present +{\setbox0=\hbox{#3\relax\global\skip3=#1\relax}}% +\skip0=\skip3\relax% +\fi% if null arg +\def\@IEEEeqnarraystrutsizeARG{#2}% +\ifx\@IEEEeqnarraystrutsizeARG\@empty% +{\setbox0=\hbox{#3\relax\global\skip3=0.3\normalbaselineskip}}% +\skip2=\skip3\relax% +\else% arg two present +{\setbox0=\hbox{#3\relax\global\skip3=#2\relax}}% +\skip2=\skip3\relax% +\fi% if null arg +% remove stretchability, just to be safe +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% dimen0 = height, dimen2 = depth +\if@IEEEeqnarrayISinner% inner does not touch master strut size +\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\@IEEEeqnarrayusemasterstrutfalse% do not use master +\else% outer, have to set master strut too +\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}% +\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\@IEEEeqnarrayusemasterstruttrue% use master strut +\fi} + + +% usage: \IEEEeqnarraystrutsizeadd{added height}{added depth}[font size commands] +% If called outside the lines of an IEEEeqnarray, adds the given height +% and depth to both the master and local struts. +% If called inside an IEEEeqnarray line, adds the given height and depth +% to the local strut only and sets the flag to indicate the use +% of the local strut values. +% In both cases, if a height or depth is left blank, 0pt is used instead. +% The optional argument can be used to evaluate the lengths under +% a different font size and styles. If none is specified, the current +% font is used. +% uses scratch registers \skip0, \skip2, \skip3, \dimen0, \dimen2 +\def\IEEEeqnarraystrutsizeadd#1#2{\relax\@ifnextchar[{\@IEEEeqnarraystrutsizeadd{#1}{#2}}{\@IEEEeqnarraystrutsizeadd{#1}{#2}[\relax]}} +\def\@IEEEeqnarraystrutsizeadd#1#2[#3]{\def\@IEEEeqnarraystrutsizearg{#1}% +\ifx\@IEEEeqnarraystrutsizearg\@empty% +\skip0=0pt\relax% +\else% arg one present +{\setbox0=\hbox{#3\relax\global\skip3=#1}}% +\skip0=\skip3\relax% +\fi% if null arg +\def\@IEEEeqnarraystrutsizearg{#2}% +\ifx\@IEEEeqnarraystrutsizearg\@empty% +\skip2=0pt\relax% +\else% arg two present +{\setbox0=\hbox{#3\relax\global\skip3=#2}}% +\skip2=\skip3\relax% +\fi% if null arg +% remove stretchability, just to be safe +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% dimen0 = height, dimen2 = depth +\if@IEEEeqnarrayISinner% inner does not touch master strut size +% get local strut size +\expandafter\skip0=\@IEEEeqnarrayTHEstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEstrutdepth\relax% +% add it to the user supplied values +\advance\dimen0 by \skip0\relax% +\advance\dimen2 by \skip2\relax% +% update the local strut size +\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\@IEEEeqnarrayusemasterstrutfalse% do not use master +\else% outer, have to set master strut too +% get master strut size +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax% +% add it to the user supplied values +\advance\dimen0 by \skip0\relax% +\advance\dimen2 by \skip2\relax% +% update the local and master strut sizes +\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}% +\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\@IEEEeqnarrayusemasterstruttrue% use master strut +\fi} + + +% allow user a way to see the struts +\newif\ifIEEEvisiblestruts +\IEEEvisiblestrutsfalse + +% inserts an invisible strut using the master or local strut values +% uses scratch registers \skip0, \skip2, \dimen0, \dimen2 +\def\@IEEEeqnarrayinsertstrut{\relax% +\if@IEEEeqnarrayusemasterstrut +% get master strut size +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax% +\else% +% get local strut size +\expandafter\skip0=\@IEEEeqnarrayTHEstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEstrutdepth\relax% +\fi% +% remove stretchability, probably not needed +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% dimen0 = height, dimen2 = depth +% allow user to see struts if desired +\ifIEEEvisiblestruts% +\vrule width0.2pt height\dimen0 depth\dimen2\relax% +\else% +\vrule width0pt height\dimen0 depth\dimen2\relax\fi} + + +% creates an invisible strut, useable even outside \IEEEeqnarray +% if \IEEEvisiblestrutstrue, the strut will be visible and 0.2pt wide. +% usage: \IEEEstrut[height][depth][font size commands] +% default is \IEEEstrut[0.7\normalbaselineskip][0.3\normalbaselineskip][\relax] +% blank arguments inherit the default values +% uses \dimen0, \dimen2, \skip0, \skip2 +\def\IEEEstrut{\relax\@ifnextchar[{\@IEEEstrut}{\@IEEEstrut[0.7\normalbaselineskip]}} +\def\@IEEEstrut[#1]{\relax\@ifnextchar[{\@@IEEEstrut[#1]}{\@@IEEEstrut[#1][0.3\normalbaselineskip]}} +\def\@@IEEEstrut[#1][#2]{\relax\@ifnextchar[{\@@@IEEEstrut[#1][#2]}{\@@@IEEEstrut[#1][#2][\relax]}} +\def\@@@IEEEstrut[#1][#2][#3]{\mbox{#3\relax% +\def\@IEEEstrutARG{#1}% +\ifx\@IEEEstrutARG\@empty% +\skip0=0.7\normalbaselineskip\relax% +\else% +\skip0=#1\relax% +\fi% +\def\@IEEEstrutARG{#2}% +\ifx\@IEEEstrutARG\@empty% +\skip2=0.3\normalbaselineskip\relax% +\else% +\skip2=#2\relax% +\fi% +% remove stretchability, probably not needed +\dimen0\skip0\relax% +\dimen2\skip2\relax% +\ifIEEEvisiblestruts% +\vrule width0.2pt height\dimen0 depth\dimen2\relax% +\else% +\vrule width0.0pt height\dimen0 depth\dimen2\relax\fi}} + + +% enables strut mode by setting a default strut size and then zeroing the +% \baselineskip, \lineskip, \lineskiplimit and \jot +\def\IEEEeqnarraystrutmode{\IEEEeqnarraystrutsize{0.7\normalbaselineskip}{0.3\normalbaselineskip}[\relax]% +\baselineskip=0pt\lineskip=0pt\lineskiplimit=0pt\jot=0pt} + + +% equation and subequation forms to use to setup hyperref's \@currentHref +\def\@IEEEtheHrefequation{equation.\theHequation} +\def\@IEEEtheHrefsubequation{equation.\theHequation\alph{IEEEsubequation}} + + +\def\IEEEeqnarray{\@IEEEeqnumpersisttrue\@IEEEsubeqnumpersistfalse\@IEEEeqnarray} +\def\endIEEEeqnarray{\end@IEEEeqnarray} + +\@namedef{IEEEeqnarray*}{\@IEEEeqnumpersistfalse\@IEEEsubeqnumpersistfalse\@IEEEeqnarray} +\@namedef{endIEEEeqnarray*}{\end@IEEEeqnarray} + + +% \IEEEeqnarray is an enhanced \eqnarray. +% The star form defaults to not putting equation numbers at the end of each row. +% usage: \IEEEeqnarray[decl]{cols} +\def\@IEEEeqnarray{\relax\@ifnextchar[{\@@IEEEeqnarray}{\@@IEEEeqnarray[\relax]}} +% We have to be careful here to normalize catcodes just before acquiring the +% cols as that specification may contain punctuation which could be subject +% to document catcode changes. +\def\@@IEEEeqnarray[#1]{\begingroup\IEEEnormalcatcodes\@@@IEEEeqnarray[#1]} +\def\@@@IEEEeqnarray[#1]#2{\endgroup + % default to showing the equation number or not based on whether or not + % the star form was involked + \if@IEEEeqnumpersist\global\@eqnswtrue + \else% not the star form + \global\@eqnswfalse + \fi% if star form + % provide a basic hyperref \theHequation if this has not already been setup (hyperref not loaded, or no section counter) + \@ifundefined{theHequation}{\def\theHequation{\arabic{equation}}}{}\relax + % provide dummy hyperref commands in case hyperref is not loaded + \providecommand{\Hy@raisedlink}[1]{}\relax + \providecommand{\hyper@anchorstart}[1]{}\relax + \providecommand{\hyper@anchorend}{}\relax + \providecommand{\@currentHref}{}\relax + \@IEEEeqnumpreadvfalse% reset eqnpreadv flag + \@IEEEsubeqnumpreadvfalse% reset subeqnpreadv flag + \@IEEEeqnarrayISinnerfalse% not yet within the lines of the halign + \@IEEEeqnarraystrutsize{0pt}{0pt}[\relax]% turn off struts by default + \@IEEEeqnarrayusemasterstruttrue% use master strut till user asks otherwise + \IEEEvisiblestrutsfalse% diagnostic mode defaults to off + % no extra space unless the user specifically requests it + \lineskip=0pt\relax + \lineskiplimit=0pt\relax + \baselineskip=\normalbaselineskip\relax% + \jot=\IEEEnormaljot\relax% + \mathsurround\z@\relax% no extra spacing around math + \@advanceIEEEeqncolcnttrue% advance the col counter for each col the user uses, + % used in \IEEEeqnarraymulticol and in the preamble build + %V1.8 Here we preadvance to the next equation number. + % If the user later wants a continued subequation, we can roll back. + \global\@IEEEsubeqnnumrollback=\c@IEEEsubequation% + \stepcounter{equation}\@IEEEeqnumpreadvtrue% advance equation counter before first line + \setcounter{IEEEsubequation}{0}% no subequation yet + \let\@IEEEcurrentlabelsave\@currentlabel% save current label as we later change it globally + \let\@IEEEcurrentHrefsave\@currentHref% save current href label as we later change it globally + \def\@currentlabel{\p@equation\theequation}% redefine the ref label + \def\@currentHref{\@IEEEtheHrefequation}% setup hyperref label + \IEEEeqnarraydecl\relax% allow a way for the user to make global overrides + #1\relax% allow user to override defaults + \let\\\@IEEEeqnarraycr% replace newline with one that can put in eqn. numbers + \global\@IEEEeqncolcnt\z@% col. count = 0 for first line + \@IEEEbuildpreamble{#2}\relax% build the preamble and put it into \@IEEEtrantmptoksA + % put in the column for the equation number + \ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi% col separator for those after the first + \toks0={##}% + % advance the \@IEEEeqncolcnt for the isolation col, this helps with error checking + \@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}% + % add the isolation column + \@IEEEappendtoksA{\tabskip\z@skip\bgroup\the\toks0\egroup}% + % advance the \@IEEEeqncolcnt for the equation number col, this helps with error checking + \@IEEEappendtoksA{&\global\advance\@IEEEeqncolcnt by 1\relax}% + % add the equation number col to the preamble + \@IEEEappendtoksA{\tabskip\z@skip\hb@xt@\z@\bgroup\hss\the\toks0\egroup}% + % note \@IEEEeqnnumcols does not count the equation col or isolation col + % set the starting tabskip glue as determined by the preamble build + \tabskip=\@IEEEBPstartglue\relax + % begin the display alignment + \@IEEEeqnarrayISinnertrue% commands are now within the lines + $$\everycr{}\halign to\displaywidth\bgroup + % "exspand" the preamble + \span\the\@IEEEtrantmptoksA\cr} + +% enter isolation/strut column (or the next column if the user did not use +% every column), record the strut status, complete the columns, do the strut if needed, +% restore counters (to backout any equation setup for a next line that was never used) +% to their correct values and exit +\def\end@IEEEeqnarray{\@IEEEeqnarrayglobalizestrutstatus&\@@IEEEeqnarraycr\egroup +\if@IEEEsubeqnumpreadv\global\advance\c@IEEEsubequation\m@ne\fi +\if@IEEEeqnumpreadv\global\advance\c@equation\m@ne\global\c@IEEEsubequation=\@IEEEsubeqnnumrollback\fi +\global\let\@currentlabel\@IEEEcurrentlabelsave% restore current label +\global\let\@currentHref\@IEEEcurrentHrefsave% restore current href label +$$\@ignoretrue} + + +% IEEEeqnarray uses a modifed \\ instead of the plain \cr to +% end rows. This allows for things like \\*[vskip amount] +% These "cr" macros are modified versions of those for LaTeX2e's eqnarray +% the {\ifnum0=`} braces must be kept away from the last column to avoid +% altering spacing of its math, so we use & to advance to the next column +% as there is an isolation/strut column after the user's columns +\def\@IEEEeqnarraycr{\@IEEEeqnarrayglobalizestrutstatus&% save strut status and advance to next column + {\ifnum0=`}\fi + \@ifstar{% + \global\@eqpen\@M\@IEEEeqnarrayYCR + }{% + \global\@eqpen\interdisplaylinepenalty \@IEEEeqnarrayYCR + }% +} + +\def\@IEEEeqnarrayYCR{\@testopt\@IEEEeqnarrayXCR\z@skip} + +\def\@IEEEeqnarrayXCR[#1]{% + \ifnum0=`{\fi}% + \@@IEEEeqnarraycr + \noalign{\penalty\@eqpen\vskip\jot\vskip #1\relax}}% + +\def\@@IEEEeqnarraycr{\@IEEEtrantmptoksA={}% clear token register + \advance\@IEEEeqncolcnt by -1\relax% adjust col count because of the isolation column + \ifnum\@IEEEeqncolcnt>\@IEEEeqnnumcols\relax + \@IEEEclspkgerror{Too many columns within the IEEEeqnarray\MessageBreak + environment}% + {Use fewer \string &'s or put more columns in the IEEEeqnarray column\MessageBreak + specifications.}\relax% + \else + \loop% add cols if the user did not use them all + \ifnum\@IEEEeqncolcnt<\@IEEEeqnnumcols\relax + \@IEEEappendtoksA{&}% + \advance\@IEEEeqncolcnt by 1\relax% update the col count + \repeat + % this number of &'s will take us the the isolation column + \fi + % execute the &'s + \the\@IEEEtrantmptoksA% + % handle the strut/isolation column + \@IEEEeqnarrayinsertstrut% do the strut if needed + \@IEEEeqnarraystrutreset% reset the strut system for next line or IEEEeqnarray + &% and enter the equation number column + \if@eqnsw% only if we display something + \Hy@raisedlink{\hyper@anchorstart{\@currentHref}}% start a hyperref anchor + \global\@IEEEeqnumpreadvfalse\relax% displaying an equation number means + \global\@IEEEsubeqnumpreadvfalse\relax% the equation counters point to valid equations + % V1.8 Here we setup the counters, currentlabel and status for what would be the *next* + % equation line as would be the case under the current settings. However, there are two problems. + % One problem is that there might not ever be a next line. The second problem is that the user + % may later alter the meaning of a line with commands such as \IEEEyessubnumber. So, to handle + % these cases we have to record the current values of the (sub)equation counters and revert back + % to them if the next line is changed or never comes. The \if@IEEEeqnumpreadv, \if@IEEEsubeqnumpreadv + % and \@IEEEsubeqnnumrollback stuff tracks this. + % The logic to handle all this is surprisingly complex, but a nice feature of the approach here is + % that the equation counters and labels remain valid for what the line would be unless a + % \IEEEyessubnumber et al. later changes it. So, any hyperref links are always correct. + \ifnum\c@IEEEsubequation>0\relax% handle subequation + \theIEEEsubequationdis\relax + \if@IEEEsubeqnumpersist% setup for default type of next line + \stepcounter{IEEEsubequation}\global\@IEEEsubeqnumpreadvtrue\relax + \gdef\@currentlabel{\p@IEEEsubequation\theIEEEsubequation}\relax + \gdef\@currentHref{\@IEEEtheHrefsubequation}% setup hyperref label + \else + % if no subeqnum persist, go ahead and setup for a new equation number + \global\@IEEEsubeqnnumrollback=\c@IEEEsubequation + \stepcounter{equation}\global\@IEEEeqnumpreadvtrue\relax + \setcounter{IEEEsubequation}{0}\gdef\@currentlabel{\p@equation\theequation}\relax + \gdef\@currentHref{\@IEEEtheHrefequation}% setup hyperref label + \fi + \else% display a standard equation number + \theequationdis\relax + \setcounter{IEEEsubequation}{0}\relax% not really needed + \if@IEEEsubeqnumpersist% setup for default type of next line + % subequations that follow plain equations carry the same equation number e.g, 5, 5a rather than 5, 6a + \stepcounter{IEEEsubequation}\global\@IEEEsubeqnumpreadvtrue\relax + \gdef\@currentlabel{\p@IEEEsubequation\theIEEEsubequation}\relax + \gdef\@currentHref{\@IEEEtheHrefsubequation}% setup hyperref label + \else + % if no subeqnum persist, go ahead and setup for a new equation number + \global\@IEEEsubeqnnumrollback=\c@IEEEsubequation + \stepcounter{equation}\global\@IEEEeqnumpreadvtrue\relax + \setcounter{IEEEsubequation}{0}\gdef\@currentlabel{\p@equation\theequation}\relax + \gdef\@currentHref{\@IEEEtheHrefequation}% setup hyperref label + \fi + \fi% + \Hy@raisedlink{\hyper@anchorend}% end hyperref anchor + \fi% fi only if we display something + % reset the flags to indicate the default preferences of the display of equation numbers + \if@IEEEeqnumpersist\global\@eqnswtrue\else\global\@eqnswfalse\fi + \if@IEEEsubeqnumpersist\global\@eqnswtrue\fi% ditto for the subequation flag + % reset the number of columns the user actually used + \global\@IEEEeqncolcnt\z@\relax + % the real end of the line + \cr} + + + + + +% \IEEEeqnarraybox is like \IEEEeqnarray except the box form puts everything +% inside a vtop, vbox, or vcenter box depending on the letter in the second +% optional argument (t,b,c). Vbox is the default. Unlike \IEEEeqnarray, +% equation numbers are not displayed and \IEEEeqnarraybox can be nested. +% \IEEEeqnarrayboxm is for math mode (like \array) and does not put the vbox +% within an hbox. +% \IEEEeqnarrayboxt is for text mode (like \tabular) and puts the vbox within +% a \hbox{$ $} construct. +% \IEEEeqnarraybox will auto detect whether to use \IEEEeqnarrayboxm or +% \IEEEeqnarrayboxt depending on the math mode. +% The third optional argument specifies the width this box is to be set to - +% natural width is the default. +% The * forms do not add \jot line spacing +% usage: \IEEEeqnarraybox[decl][pos][width]{cols} +\def\IEEEeqnarrayboxm{\@IEEEeqnarrayboxnojotfalse\@IEEEeqnarrayboxHBOXSWfalse\@IEEEeqnarraybox} +\def\endIEEEeqnarrayboxm{\end@IEEEeqnarraybox} +\@namedef{IEEEeqnarrayboxm*}{\@IEEEeqnarrayboxnojottrue\@IEEEeqnarrayboxHBOXSWfalse\@IEEEeqnarraybox} +\@namedef{endIEEEeqnarrayboxm*}{\end@IEEEeqnarraybox} + +\def\IEEEeqnarrayboxt{\@IEEEeqnarrayboxnojotfalse\@IEEEeqnarrayboxHBOXSWtrue\@IEEEeqnarraybox} +\def\endIEEEeqnarrayboxt{\end@IEEEeqnarraybox} +\@namedef{IEEEeqnarrayboxt*}{\@IEEEeqnarrayboxnojottrue\@IEEEeqnarrayboxHBOXSWtrue\@IEEEeqnarraybox} +\@namedef{endIEEEeqnarrayboxt*}{\end@IEEEeqnarraybox} + +\def\IEEEeqnarraybox{\@IEEEeqnarrayboxnojotfalse\ifmmode\@IEEEeqnarrayboxHBOXSWfalse\else\@IEEEeqnarrayboxHBOXSWtrue\fi% +\@IEEEeqnarraybox} +\def\endIEEEeqnarraybox{\end@IEEEeqnarraybox} + +\@namedef{IEEEeqnarraybox*}{\@IEEEeqnarrayboxnojottrue\ifmmode\@IEEEeqnarrayboxHBOXSWfalse\else\@IEEEeqnarrayboxHBOXSWtrue\fi% +\@IEEEeqnarraybox} +\@namedef{endIEEEeqnarraybox*}{\end@IEEEeqnarraybox} + +% flag to indicate if the \IEEEeqnarraybox needs to put things into an hbox{$ $} +% for \vcenter in non-math mode +\newif\if@IEEEeqnarrayboxHBOXSW% +\@IEEEeqnarrayboxHBOXSWfalse + +\def\@IEEEeqnarraybox{\relax\@ifnextchar[{\@@IEEEeqnarraybox}{\@@IEEEeqnarraybox[\relax]}} +% We have to be careful here to normalize catcodes just before acquiring the +% cols as that specification may contain punctuation which could be subject +% to document catcode changes. +\def\@@IEEEeqnarraybox[#1]{\relax\begingroup\IEEEnormalcatcodes\@ifnextchar[{\@@@IEEEeqnarraybox[#1]}{\@@@IEEEeqnarraybox[#1][b]}} +\def\@@@IEEEeqnarraybox[#1][#2]{\relax\@ifnextchar[{\@@@@IEEEeqnarraybox[#1][#2]}{\@@@@IEEEeqnarraybox[#1][#2][\relax]}} + +% #1 = decl; #2 = t,b,c; #3 = width, #4 = col specs +\def\@@@@IEEEeqnarraybox[#1][#2][#3]#4{\endgroup\@IEEEeqnarrayISinnerfalse % not yet within the lines of the halign + \@IEEEeqnarraymasterstrutsave% save current master strut values + \@IEEEeqnarraystrutsize{0pt}{0pt}[\relax]% turn off struts by default + \@IEEEeqnarrayusemasterstruttrue% use master strut till user asks otherwise + \IEEEvisiblestrutsfalse% diagnostic mode defaults to off + % no extra space unless the user specifically requests it + \lineskip=0pt\relax% + \lineskiplimit=0pt\relax% + \baselineskip=\normalbaselineskip\relax% + \jot=\IEEEnormaljot\relax% + \mathsurround\z@\relax% no extra spacing around math + % the default end glues are zero for an \IEEEeqnarraybox + \edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPzero}% default start glue + \edef\@IEEEeqnarraycolSEPdefaultend{\@IEEEeqnarraycolSEPzero}% default end glue + \edef\@IEEEeqnarraycolSEPdefaultmid{\@IEEEeqnarraycolSEPzero}% default inter-column glue + \@advanceIEEEeqncolcntfalse% do not advance the col counter for each col the user uses, + % used in \IEEEeqnarraymulticol and in the preamble build + \IEEEeqnarrayboxdecl\relax% allow a way for the user to make global overrides + #1\relax% allow user to override defaults + \let\\\@IEEEeqnarrayboxcr% replace newline with one that allows optional spacing + \@IEEEbuildpreamble{#4}\relax% build the preamble and put it into \@IEEEtrantmptoksA + % add an isolation column to the preamble to stop \\'s {} from getting into the last col + \ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi% col separator for those after the first + \toks0={##}% + % add the isolation column to the preamble + \@IEEEappendtoksA{\tabskip\z@skip\bgroup\the\toks0\egroup}% + % set the starting tabskip glue as determined by the preamble build + \tabskip=\@IEEEBPstartglue\relax + % begin the alignment + \everycr{}% + % use only the very first token to determine the positioning + \@IEEEextracttoken{#2}\relax + \ifx\@IEEEextractedtokensdiscarded\@empty\else + \typeout{** WARNING: IEEEeqnarraybox position specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax + \fi + % \@IEEEextractedtoken has the first token, the rest are ignored + % if we need to put things into and hbox and go into math mode, do so now + \if@IEEEeqnarrayboxHBOXSW \leavevmode \hbox \bgroup $\fi% + % use the appropriate vbox type + \if\@IEEEextractedtoken t\relax\vtop\else\if\@IEEEextractedtoken c\relax% + \vcenter\else\vbox\fi\fi\bgroup% + \@IEEEeqnarrayISinnertrue% commands are now within the lines + \ifx#3\relax\halign\else\halign to #3\relax\fi% + \bgroup + % "exspand" the preamble + \span\the\@IEEEtrantmptoksA\cr} + +% carry strut status and enter the isolation/strut column, +% exit from math mode if needed, and exit +\def\end@IEEEeqnarraybox{\@IEEEeqnarrayglobalizestrutstatus% carry strut status +&% enter isolation/strut column +\@IEEEeqnarrayinsertstrut% do strut if needed +\@IEEEeqnarraymasterstrutrestore% restore the previous master strut values +% reset the strut system for next IEEEeqnarray +% (sets local strut values back to previous master strut values) +\@IEEEeqnarraystrutreset% +% ensure last line, exit from halign, close vbox +\crcr\egroup\egroup% +% exit from math mode and close hbox if needed +\if@IEEEeqnarrayboxHBOXSW $\egroup\fi} + + + +% IEEEeqnarraybox uses a modifed \\ instead of the plain \cr to +% end rows. This allows for things like \\[vskip amount] +% This "cr" macros are modified versions those for LaTeX2e's eqnarray +% For IEEEeqnarraybox, \\* is the same as \\ +% the {\ifnum0=`} braces must be kept away from the last column to avoid +% altering spacing of its math, so we use & to advance to the isolation/strut column +% carry strut status into isolation/strut column +\def\@IEEEeqnarrayboxcr{\@IEEEeqnarrayglobalizestrutstatus% carry strut status +&% enter isolation/strut column +\@IEEEeqnarrayinsertstrut% do strut if needed +% reset the strut system for next line or IEEEeqnarray +\@IEEEeqnarraystrutreset% +{\ifnum0=`}\fi% +\@ifstar{\@IEEEeqnarrayboxYCR}{\@IEEEeqnarrayboxYCR}} + +% test and setup the optional argument to \\[] +\def\@IEEEeqnarrayboxYCR{\@testopt\@IEEEeqnarrayboxXCR\z@skip} + +% IEEEeqnarraybox does not automatically increase line spacing by \jot +\def\@IEEEeqnarrayboxXCR[#1]{\ifnum0=`{\fi}% +\cr\noalign{\if@IEEEeqnarrayboxnojot\else\vskip\jot\fi\vskip#1\relax}} + + + +% usage: \@IEEEbuildpreamble{column specifiers} +% starts the halign preamble build +% the assembled preamble is put in \@IEEEtrantmptoksA +\def\@IEEEbuildpreamble#1{\@IEEEtrantmptoksA={}% clear token register +\let\@IEEEBPcurtype=u%current column type is not yet known +\let\@IEEEBPprevtype=s%the previous column type was the start +\let\@IEEEBPnexttype=u%next column type is not yet known +% ensure these are valid +\def\@IEEEBPcurglue={0pt plus 0pt minus 0pt}% +\def\@IEEEBPcurcolname{@IEEEdefault}% name of current column definition +% currently acquired numerically referenced glue +% use a name that is easier to remember +\let\@IEEEBPcurnum=\@IEEEtrantmpcountA% +\@IEEEBPcurnum=0% +% tracks number of columns in the preamble +\@IEEEeqnnumcols=0% +% record the default end glues +\edef\@IEEEBPstartglue{\@IEEEeqnarraycolSEPdefaultstart}% +\edef\@IEEEBPendglue{\@IEEEeqnarraycolSEPdefaultend}% +\edef\@IEEEedefMACRO{#1}\relax% fully expand the preamble to support macro containers +% now parse the user's column specifications +% \ignorespaces is used as a delimiter, need at least one trailing \relax because +% \@@IEEEbuildpreamble looks into the future +\expandafter\@@IEEEbuildpreamble\@IEEEedefMACRO\ignorespaces\relax\relax} + + +% usage: \@@IEEEbuildpreamble{current column}{next column} +% parses and builds the halign preamble +\def\@@IEEEbuildpreamble#1#2{\let\@@nextIEEEbuildpreamble=\@@IEEEbuildpreamble% +% use only the very first token to check the end +\@IEEEextracttokengroups{#1}\relax +\ifx\@IEEEextractedfirsttoken\ignorespaces\let\@@nextIEEEbuildpreamble=\@@IEEEfinishpreamble\else% +% identify current and next token type +\@IEEEgetcoltype{#1}{\@IEEEBPcurtype}{1}% current, error on invalid +\@IEEEgetcoltype{#2}{\@IEEEBPnexttype}{0}% next, no error on invalid next +% if curtype is a glue, get the glue def +\if\@IEEEBPcurtype g\@IEEEgetcurglue{#1}{\@IEEEBPcurglue}\fi% +% if curtype is a column, get the column def and set the current column name +\if\@IEEEBPcurtype c\@IEEEgetcurcol{#1}\fi% +% if curtype is a numeral, acquire the user defined glue +\if\@IEEEBPcurtype n\@IEEEprocessNcol{#1}\fi% +% process the acquired glue +\if\@IEEEBPcurtype g\@IEEEprocessGcol\fi% +% process the acquired col +\if\@IEEEBPcurtype c\@IEEEprocessCcol\fi% +% ready prevtype for next col spec. +\let\@IEEEBPprevtype=\@IEEEBPcurtype% +% be sure and put back the future token(s) as a group +\fi\@@nextIEEEbuildpreamble{#2}} + + +% usage: \@@IEEEfinishpreamble{discarded} +% executed just after preamble build is completed +% warn about zero cols, and if prevtype type = u, put in end tabskip glue +% argument is not used +\def\@@IEEEfinishpreamble#1{\ifnum\@IEEEeqnnumcols<1\relax +\@IEEEclspkgerror{No column specifiers declared for IEEEeqnarray}% +{At least one column type must be declared for each IEEEeqnarray.}% +\fi%num cols less than 1 +%if last type undefined, set default end tabskip glue +\if\@IEEEBPprevtype u\@IEEEappendtoksA{\tabskip=\@IEEEBPendglue}\fi} + + +% usage: \@IEEEgetcoltype{col specifier}{\output}{error more} +% Identify and return the column specifier's type code in the given +% \output macro: +% n = number +% g = glue (any other char in catagory 12) +% c = letter +% e = \ignorespaces (end of sequence) +% u = undefined +% error mode: 0 = no error message, 1 = error on invalid char +\def\@IEEEgetcoltype#1#2#3{% +% use only the very first token to determine the type +\@IEEEextracttoken{#1}\relax +% \@IEEEextractedtoken has the first token, the rest are discarded +\let#2=u\relax% assume invalid until know otherwise +\ifx\@IEEEextractedtoken\ignorespaces\let#2=e\else +\ifcat\@IEEEextractedtoken\relax\else% screen out control sequences +\if0\@IEEEextractedtoken\let#2=n\else +\if1\@IEEEextractedtoken\let#2=n\else +\if2\@IEEEextractedtoken\let#2=n\else +\if3\@IEEEextractedtoken\let#2=n\else +\if4\@IEEEextractedtoken\let#2=n\else +\if5\@IEEEextractedtoken\let#2=n\else +\if6\@IEEEextractedtoken\let#2=n\else +\if7\@IEEEextractedtoken\let#2=n\else +\if8\@IEEEextractedtoken\let#2=n\else +\if9\@IEEEextractedtoken\let#2=n\else +\ifcat,\@IEEEextractedtoken\let#2=g\relax +\else\ifcat a\@IEEEextractedtoken\let#2=c\relax\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +\if#2u\relax +\if0\noexpand#3\relax\else\@IEEEclspkgerror{Invalid character in column specifications}% +{Only letters, numerals and certain other symbols are allowed \MessageBreak +as IEEEeqnarray column specifiers.}\fi\fi} + + +% usage: \@IEEEgetcurcol{col specifier} +% verify the letter referenced column exists +% and return its name in \@IEEEBPcurcolname +% if column specifier is invalid, use the default column @IEEEdefault +\def\@IEEEgetcurcol#1{\expandafter\ifx\csname @IEEEeqnarraycolDEF#1\endcsname\@IEEEeqnarraycolisdefined% +\def\@IEEEBPcurcolname{#1}\else% invalid column name +\@IEEEclspkgerror{Invalid column type "#1" in column specifications.\MessageBreak +Using a default centering column instead}% +{You must define IEEEeqnarray column types before use.}% +\def\@IEEEBPcurcolname{@IEEEdefault}\fi} + + +% usage: \@IEEEgetcurglue{glue specifier}{\output} +% identify the predefined (punctuation) glue value +% and return it in the given output macro +\def\@IEEEgetcurglue#1#2{% +% ! = \! (neg small) -0.16667em (-3/18 em) +% , = \, (small) 0.16667em ( 3/18 em) +% : = \: (med) 0.22222em ( 4/18 em) +% ; = \; (large) 0.27778em ( 5/18 em) +% ' = \quad 1em +% " = \qquad 2em +% . = 0.5\arraycolsep +% / = \arraycolsep +% ? = 2\arraycolsep +% * = 1fil +% + = \@IEEEeqnarraycolSEPcenter +% - = \@IEEEeqnarraycolSEPzero +% Note that all em values are referenced to the math font (textfont2) fontdimen6 +% value for 1em. +% +% use only the very first token to determine the type +\@IEEEextracttoken{#1}\relax +\ifx\@IEEEextractedtokensdiscarded\@empty\else + \typeout{** WARNING: IEEEeqnarray predefined inter-column glue type specifiers after the first in `\@IEEEextracttokenarg' ignored (line \the\inputlineno).}\relax +\fi +% get the math font 1em value +% LaTeX2e's NFSS2 does not preload the fonts, but \IEEEeqnarray needs +% to gain access to the math (\textfont2) font's spacing parameters. +% So we create a bogus box here that uses the math font to ensure +% that \textfont2 is loaded and ready. If this is not done, +% the \textfont2 stuff here may not work. +% Thanks to Bernd Raichle for his 1997 post on this topic. +{\setbox0=\hbox{$\displaystyle\relax$}}% +% fontdimen6 has the width of 1em (a quad). +\@IEEEtrantmpdimenA=\fontdimen6\textfont2\relax% +% identify the glue value based on the first token +% we discard anything after the first +\if!\@IEEEextractedtoken\@IEEEtrantmpdimenA=-0.16667\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if,\@IEEEextractedtoken\@IEEEtrantmpdimenA=0.16667\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if:\@IEEEextractedtoken\@IEEEtrantmpdimenA=0.22222\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if;\@IEEEextractedtoken\@IEEEtrantmpdimenA=0.27778\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if'\@IEEEextractedtoken\@IEEEtrantmpdimenA=1\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if"\@IEEEextractedtoken\@IEEEtrantmpdimenA=2\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if.\@IEEEextractedtoken\@IEEEtrantmpdimenA=0.5\arraycolsep\edef#2{\the\@IEEEtrantmpdimenA}\else +\if/\@IEEEextractedtoken\edef#2{\the\arraycolsep}\else +\if?\@IEEEextractedtoken\@IEEEtrantmpdimenA=2\arraycolsep\edef#2{\the\@IEEEtrantmpdimenA}\else +\if *\@IEEEextractedtoken\edef#2{0pt plus 1fil minus 0pt}\else +\if+\@IEEEextractedtoken\edef#2{\@IEEEeqnarraycolSEPcenter}\else +\if-\@IEEEextractedtoken\edef#2{\@IEEEeqnarraycolSEPzero}\else +\edef#2{\@IEEEeqnarraycolSEPzero}% +\@IEEEclspkgerror{Invalid predefined inter-column glue type "#1" in\MessageBreak +column specifications. Using a default value of\MessageBreak +0pt instead}% +{Only !,:;'"./?*+ and - are valid predefined glue types in the\MessageBreak +IEEEeqnarray column specifications.}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + + +% usage: \@IEEEprocessNcol{digit} +% process a numerical digit from the column specification +% and look up the corresponding user defined glue value +% can transform current type from n to g or a as the user defined glue is acquired +\def\@IEEEprocessNcol#1{\if\@IEEEBPprevtype g% +\@IEEEclspkgerror{Back-to-back inter-column glue specifiers in column\MessageBreak +specifications. Ignoring consecutive glue specifiers\MessageBreak +after the first}% +{You cannot have two or more glue types next to each other\MessageBreak +in the IEEEeqnarray column specifications.}% +\let\@IEEEBPcurtype=a% abort this glue, future digits will be discarded +\@IEEEBPcurnum=0\relax% +\else% if we previously aborted a glue +\if\@IEEEBPprevtype a\@IEEEBPcurnum=0\let\@IEEEBPcurtype=a%maintain digit abortion +\else%acquire this number +% save the previous type before the numerical digits started +\if\@IEEEBPprevtype n\else\let\@IEEEBPprevsavedtype=\@IEEEBPprevtype\fi% +\multiply\@IEEEBPcurnum by 10\relax% +\advance\@IEEEBPcurnum by #1\relax% add in number, \relax is needed to stop TeX's number scan +\if\@IEEEBPnexttype n\else%close acquisition +\expandafter\ifx\csname @IEEEeqnarraycolSEPDEF\expandafter\romannumeral\number\@IEEEBPcurnum\endcsname\@IEEEeqnarraycolisdefined% +\edef\@IEEEBPcurglue{\csname @IEEEeqnarraycolSEP\expandafter\romannumeral\number\@IEEEBPcurnum\endcsname}% +\else%user glue not defined +\@IEEEclspkgerror{Invalid user defined inter-column glue type "\number\@IEEEBPcurnum" in\MessageBreak +column specifications. Using a default value of\MessageBreak +0pt instead}% +{You must define all IEEEeqnarray numerical inter-column glue types via\MessageBreak +\string\IEEEeqnarraydefcolsep \space before they are used in column specifications.}% +\edef\@IEEEBPcurglue{\@IEEEeqnarraycolSEPzero}% +\fi% glue defined or not +\let\@IEEEBPcurtype=g% change the type to reflect the acquired glue +\let\@IEEEBPprevtype=\@IEEEBPprevsavedtype% restore the prev type before this number glue +\@IEEEBPcurnum=0\relax%ready for next acquisition +\fi%close acquisition, get glue +\fi%discard or acquire number +\fi%prevtype glue or not +} + + +% process an acquired glue +% add any acquired column/glue pair to the preamble +\def\@IEEEprocessGcol{\if\@IEEEBPprevtype a\let\@IEEEBPcurtype=a%maintain previous glue abortions +\else +% if this is the start glue, save it, but do nothing else +% as this is not used in the preamble, but before +\if\@IEEEBPprevtype s\edef\@IEEEBPstartglue{\@IEEEBPcurglue}% +\else%not the start glue +\if\@IEEEBPprevtype g%ignore if back to back glues +\@IEEEclspkgerror{Back-to-back inter-column glue specifiers in column\MessageBreak +specifications. Ignoring consecutive glue specifiers\MessageBreak +after the first}% +{You cannot have two or more glue types next to each other\MessageBreak +in the IEEEeqnarray column specifications.}% +\let\@IEEEBPcurtype=a% abort this glue +\else% not a back to back glue +\if\@IEEEBPprevtype c\relax% if the previoustype was a col, add column/glue pair to preamble +\ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi +\toks0={##}% +% make preamble advance col counter if this environment needs this +\if@advanceIEEEeqncolcnt\@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}\fi +% insert the column defintion into the preamble, being careful not to expand +% the column definition +\@IEEEappendtoksA{\tabskip=\@IEEEBPcurglue}% +\@IEEEappendNOEXPANDtoksA{\begingroup\csname @IEEEeqnarraycolPRE}% +\@IEEEappendtoksA{\@IEEEBPcurcolname}% +\@IEEEappendNOEXPANDtoksA{\endcsname}% +\@IEEEappendtoksA{\the\toks0}% +\@IEEEappendNOEXPANDtoksA{\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST}% +\@IEEEappendtoksA{\@IEEEBPcurcolname}% +\@IEEEappendNOEXPANDtoksA{\endcsname\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\endgroup}% +\advance\@IEEEeqnnumcols by 1\relax%one more column in the preamble +\else% error: non-start glue with no pending column +\@IEEEclspkgerror{Inter-column glue specifier without a prior column\MessageBreak +type in the column specifications. Ignoring this glue\MessageBreak +specifier}% +{Except for the first and last positions, glue can be placed only\MessageBreak +between column types.}% +\let\@IEEEBPcurtype=a% abort this glue +\fi% previous was a column +\fi% back-to-back glues +\fi% is start column glue +\fi% prev type not a +} + + +% process an acquired letter referenced column and, if necessary, add it to the preamble +\def\@IEEEprocessCcol{\if\@IEEEBPnexttype g\else +\if\@IEEEBPnexttype n\else +% we have a column followed by something other than a glue (or numeral glue) +% so we must add this column to the preamble now +\ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi%col separator for those after the first +\if\@IEEEBPnexttype e\@IEEEappendtoksA{\tabskip=\@IEEEBPendglue\relax}\else%put in end glue +\@IEEEappendtoksA{\tabskip=\@IEEEeqnarraycolSEPdefaultmid\relax}\fi% or default mid glue +\toks0={##}% +% make preamble advance col counter if this environment needs this +\if@advanceIEEEeqncolcnt\@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}\fi +% insert the column definition into the preamble, being careful not to expand +% the column definition +\@IEEEappendNOEXPANDtoksA{\begingroup\csname @IEEEeqnarraycolPRE}% +\@IEEEappendtoksA{\@IEEEBPcurcolname}% +\@IEEEappendNOEXPANDtoksA{\endcsname}% +\@IEEEappendtoksA{\the\toks0}% +\@IEEEappendNOEXPANDtoksA{\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST}% +\@IEEEappendtoksA{\@IEEEBPcurcolname}% +\@IEEEappendNOEXPANDtoksA{\endcsname\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\endgroup}% +\advance\@IEEEeqnnumcols by 1\relax%one more column in the preamble +\fi%next type not numeral +\fi%next type not glue +} + + +%% +%% END OF IEEEeqnarray DEFINITIONS +%% + + + + + +% set up the running headers and footers +% +% header and footer font and size specifications +\def\@IEEEheaderstyle{\normalfont\scriptsize} +\def\@IEEEfooterstyle{\normalfont\scriptsize} +% +% compsoc uses sans-serif headers and footers +\ifCLASSOPTIONcompsoc + \def\@IEEEheaderstyle{\normalfont\sffamily\scriptsize} + \def\@IEEEfooterstyle{\normalfont\sffamily\scriptsize} +\fi + + +% standard page style, ps@headings +\def\ps@headings{% default to standard twoside headers, no footers +% will change later if the mode requires otherwise +\def\@oddhead{\hbox{}\@IEEEheaderstyle\rightmark\hfil\thepage}\relax +\def\@evenhead{\@IEEEheaderstyle\thepage\hfil\leftmark\hbox{}}\relax +\let\@oddfoot\@empty +\let\@evenfoot\@empty +\ifCLASSOPTIONtechnote + % technote twoside + \def\@oddhead{\hbox{}\@IEEEheaderstyle\leftmark\hfil\thepage}\relax + \def\@evenhead{\@IEEEheaderstyle\thepage\hfil\leftmark\hbox{}}\relax +\fi +\ifCLASSOPTIONdraftcls + % draft footers + \def\@oddfoot{\@IEEEfooterstyle\@date\hfil DRAFT}\relax + \def\@evenfoot{\@IEEEfooterstyle DRAFT\hfil\@date}\relax +\fi +% oneside +\if@twoside\else + % standard one side headers + \def\@oddhead{\hbox{}\@IEEEheaderstyle\leftmark\hfil\thepage}\relax + \let\@evenhead\@empty + \ifCLASSOPTIONdraftcls + % oneside draft footers + \def\@oddfoot{\@IEEEfooterstyle\@date\hfil DRAFT}\relax + \let\@evenfoot\@empty + \fi +\fi +% turn off headers for conferences +\ifCLASSOPTIONconference + \let\@oddhead\@empty + \let\@evenhead\@empty +\fi +% turn off footers for draftclsnofoot +\ifCLASSOPTIONdraftclsnofoot + \let\@oddfoot\@empty + \let\@evenfoot\@empty +\fi} + + +% title page style, ps@IEEEtitlepagestyle +\def\ps@IEEEtitlepagestyle{% default title page headers, no footers +\def\@oddhead{\hbox{}\@IEEEheaderstyle\leftmark\hfil\thepage}\relax +\def\@evenhead{\@IEEEheaderstyle\thepage\hfil\leftmark\hbox{}}\relax +\let\@oddfoot\@empty +\let\@evenfoot\@empty +% will change later if the mode requires otherwise +\ifCLASSOPTIONdraftcls + % draft footers + \ifCLASSOPTIONdraftclsnofoot\else + % but only if not draftclsnofoot + \def\@oddfoot{\@IEEEfooterstyle\@date\hfil DRAFT}\relax + \def\@evenfoot{\@IEEEfooterstyle DRAFT\hfil\@date}\relax + \fi +\else + % all nondraft mode footers + \if@IEEEusingpubid + % for title pages that are using a pubid + % do not repeat pubid on the title page if using a peer review cover page + \ifCLASSOPTIONpeerreview\else + % for noncompsoc papers, the pubid uses footnotesize and + % is at the same vertical position as where the last baseline would normally be + \def\@oddfoot{\hbox{}\hss\@IEEEfooterstyle\footnotesize\raisebox{\footskip}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax + \def\@evenfoot{\hbox{}\hss\@IEEEfooterstyle\footnotesize\raisebox{\footskip}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax + \ifCLASSOPTIONcompsoc + % for compsoc papers, the pubid is at the same vertical position as the normal footer + \def\@oddfoot{\hbox{}\hss\@IEEEfooterstyle\raisebox{0pt}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax + \def\@evenfoot{\hbox{}\hss\@IEEEfooterstyle\raisebox{0pt}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax + \fi + \fi + \fi +\fi +% turn off headers for conferences +\ifCLASSOPTIONconference + \let\@oddhead\@empty + \let\@evenhead\@empty +\fi} + + +% peer review cover page style, ps@IEEEpeerreviewcoverpagestyle +\def\ps@IEEEpeerreviewcoverpagestyle{% default peer review cover no headers, no footers +\let\@oddhead\@empty +\let\@evenhead\@empty +\let\@oddfoot\@empty +\let\@evenfoot\@empty +% will change later if the mode requires otherwise +\ifCLASSOPTIONdraftcls + % draft footers + \ifCLASSOPTIONdraftclsnofoot\else + % but only if not draftclsnofoot + \def\@oddfoot{\@IEEEfooterstyle\@date\hfil DRAFT}\relax + \def\@evenfoot{\@IEEEfooterstyle DRAFT\hfil\@date}\relax + \fi +\else + % all nondraft mode footers + \if@IEEEusingpubid + % for peer review cover pages that are using a pubid + % for noncompsoc papers, the pubid uses footnotesize and + % is at the same vertical position as where the last baseline would normally be + \def\@oddfoot{\hbox{}\hss\@IEEEfooterstyle\footnotesize\raisebox{\footskip}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax + \def\@evenfoot{\hbox{}\hss\@IEEEfooterstyle\footnotesize\raisebox{\footskip}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax + \ifCLASSOPTIONcompsoc + % for compsoc papers, the pubid is at the same vertical position as the normal footer + \def\@oddfoot{\hbox{}\hss\@IEEEfooterstyle\raisebox{0pt}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax + \def\@evenfoot{\hbox{}\hss\@IEEEfooterstyle\raisebox{0pt}[0pt][0pt]{\@IEEEpubid}\hss\hbox{}}\relax + \fi + \fi +\fi} + + + +%% Defines the command for putting the header. +%% Note that all the text is forced into uppercase, if you have some text +%% that needs to be in lower case, for instance et. al., then either manually +%% set \leftmark and \rightmark or use \MakeLowercase{et. al.} within the +%% arguments to \markboth. +%% V1.7b add \protect to work with Babel +\def\markboth#1#2{\def\leftmark{\MakeUppercase{\protect#1}}% +\def\rightmark{\MakeUppercase{\protect#2}}} + +\def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} + + + + +%% CITATION AND BIBLIOGRAPHY COMMANDS +%% +%% V1.6 no longer supports the older, nonstandard \shortcite and \citename setup stuff +% +% +% Modify Latex2e \@citex to separate citations with "], [" +\def\@citex[#1]#2{% + \let\@citea\@empty + \@cite{\@for\@citeb:=#2\do + {\@citea\def\@citea{], [}% + \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% + \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi + \@ifundefined{b@\@citeb}{\mbox{\reset@font\bfseries ?}% + \G@refundefinedtrue + \@latex@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + {\hbox{\csname b@\@citeb\endcsname}}}}{#1}} + +% V1.6 we create hooks for the optional use of Donald Arseneau's +% cite.sty package. cite.sty is "smart" and will notice that the +% following format controls are already defined and will not +% redefine them. The result will be the proper sorting of the +% citation numbers and auto detection of 3 or more entry "ranges" - +% all in IEEE style: [1], [2], [5]--[7], [12] +% This also allows for an optional note, i.e., \cite[mynote]{..}. +% If the \cite with note has more than one reference, the note will +% be applied to the last of the listed references. It is generally +% desired that if a note is given, only one reference is listed in +% that \cite. +% Thanks to Mr. Arseneau for providing the required format arguments +% to produce the IEEE style. +\def\citepunct{], [} +\def\citedash{]--[} + +% V1.7 default to using same font for urls made by url.sty +\AtBeginDocument{\csname url@samestyle\endcsname} + +% V1.6 class files should always provide these +\def\newblock{\hskip .11em\@plus.33em\@minus.07em} +\let\@openbib@code\@empty +% V1.8b article.cls is now providing these too +% we do not use \@mkboth, nor alter the page style +\newenvironment{theindex} + {\if@twocolumn + \@restonecolfalse + \else + \@restonecoltrue + \fi + \twocolumn[\section*{\indexname}]% + \parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \columnseprule \z@ + \columnsep 35\p@ + \let\item\@idxitem} + {\if@restonecol\onecolumn\else\clearpage\fi} +\newcommand\@idxitem{\par\hangindent 40\p@} +\newcommand\subitem{\@idxitem \hspace*{20\p@}} +\newcommand\subsubitem{\@idxitem \hspace*{30\p@}} +\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax} + + + +% Provide support for the control entries of IEEEtran.bst V1.00 and later. +% V1.7 optional argument allows for a different aux file to be specified in +% order to handle multiple bibliographies. For example, with multibib.sty: +% \newcites{sec}{Secondary Literature} +% \bstctlcite[@auxoutsec]{BSTcontrolhak} +\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}} +\def\@bstctlcite[#1]#2{\@bsphack + \@for\@citeb:=#2\do{% + \edef\@citeb{\expandafter\@firstofone\@citeb}% + \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}% + \@esphack} + +% \IEEEnoauxwrite{} allows for citations that do not add to or affect +% the order of the existing citation list. Can be useful for \cite +% within \thanks{}. +\DeclareRobustCommand{\IEEEnoauxwrite}[1]{\relax +\if@filesw +\@fileswfalse +#1\relax\relax\relax\relax\relax +\@fileswtrue +\else +#1\relax\relax\relax\relax\relax +\fi} + +% V1.6 provide a way for a user to execute a command just before +% a given reference number - used to insert a \newpage to balance +% the columns on the last page +\edef\@IEEEtriggerrefnum{0} % the default of zero means that + % the command is not executed +\def\@IEEEtriggercmd{\newpage} + +% allow the user to alter the triggered command +\long\def\IEEEtriggercmd#1{\long\def\@IEEEtriggercmd{#1}} + +% allow user a way to specify the reference number just before the +% command is executed +\def\IEEEtriggeratref#1{\@IEEEtrantmpcountA=#1% +\edef\@IEEEtriggerrefnum{\the\@IEEEtrantmpcountA}}% + +% trigger command at the given reference +\def\@IEEEbibitemprefix{\@IEEEtrantmpcountA=\@IEEEtriggerrefnum\relax% +\advance\@IEEEtrantmpcountA by -1\relax% +\ifnum\c@enumiv=\@IEEEtrantmpcountA\relax\@IEEEtriggercmd\relax\fi} + + +\def\@biblabel#1{[#1]} + +% compsoc journals and conferences left align the reference numbers +\@IEEEcompsoconly{\def\@biblabel#1{[#1]\hfill}} + +% controls bib item spacing +\def\IEEEbibitemsep{0pt plus .5pt} + +\@IEEEcompsocconfonly{\def\IEEEbibitemsep{0.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}} + + +\def\thebibliography#1{\section*{\refname}% + \addcontentsline{toc}{section}{\refname}% + % V1.6 add some rubber space here and provide a command trigger + \footnotesize\vskip 0.3\baselineskip plus 0.1\baselineskip minus 0.1\baselineskip% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep\relax + \itemsep \IEEEbibitemsep\relax + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \let\@IEEElatexbibitem\bibitem% + \def\bibitem{\@IEEEbibitemprefix\@IEEElatexbibitem}% +\def\newblock{\hskip .11em plus .33em minus .07em}% +% originally: +% \sloppy\clubpenalty4000\widowpenalty4000% +% by adding the \interlinepenalty here, we make it more +% difficult, but not impossible, for LaTeX to break within a reference. +% The IEEE almost never breaks a reference (but they do it more often with +% technotes). You may get an underfull vbox warning around the bibliography, +% but the final result will be much more like what the IEEE will publish. +% MDS 11/2000 +\ifCLASSOPTIONtechnote\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty100% +\else\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty500\fi% + \sfcode`\.=1000\relax} +\let\endthebibliography=\endlist + + + + +% TITLE PAGE COMMANDS +% +% +% \IEEEmembership is used to produce the sublargesize italic font used to indicate author +% IEEE membership. compsoc uses a large size sans slant font +\def\IEEEmembership#1{{\@IEEEnotcompsoconly{\sublargesize}\normalfont\@IEEEcompsoconly{\sffamily}\textit{#1}}} + + +% \IEEEauthorrefmark{} produces a footnote type symbol to indicate author affiliation. +% When given an argument of 1 to 9, \IEEEauthorrefmark{} follows the standard LaTeX footnote +% symbol sequence convention. However, for arguments 10 and above, \IEEEauthorrefmark{} +% reverts to using lower case roman numerals, so it cannot overflow. Do note that you +% cannot use \footnotemark[] in place of \IEEEauthorrefmark{} within \author as the footnote +% symbols will have been turned off to prevent \thanks from creating footnote marks. +% \IEEEauthorrefmark{} produces a symbol that appears to LaTeX as having zero vertical +% height - this allows for a more compact line packing, but the user must ensure that +% the interline spacing is large enough to prevent \IEEEauthorrefmark{} from colliding +% with the text above. +% V1.7 make this a robust command +% V1.8 transmag uses an arabic author affiliation symbol +\ifCLASSOPTIONtransmag +\DeclareRobustCommand*{\IEEEauthorrefmark}[1]{\raisebox{0pt}[0pt][0pt]{\textsuperscript{\footnotesize #1}}} +\else +\DeclareRobustCommand*{\IEEEauthorrefmark}[1]{\raisebox{0pt}[0pt][0pt]{\textsuperscript{\footnotesize\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or% + \mathsection\or \mathparagraph\or \|\or **\or \dagger\dagger% + \or \ddagger\ddagger \else\textsuperscript{\expandafter\romannumeral#1}\fi}}}} +\fi + + +% FONT CONTROLS AND SPACINGS FOR CONFERENCE MODE AUTHOR NAME AND AFFILIATION BLOCKS +% +% The default font styles for the author name and affiliation blocks (confmode) +\def\@IEEEauthorblockNstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\sublargesize} +\def\@IEEEauthorblockAstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\@IEEEcompsocconfonly{\itshape}\normalsize} +% The default if the user does not use an author block +\def\@IEEEauthordefaulttextstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\sublargesize} + +% adjustment spacing from title (or special paper notice) to author name blocks (confmode) +% can be negative +\def\@IEEEauthorblockconfadjspace{-0.25em} +% compsoc conferences need more space here +\@IEEEcompsocconfonly{\def\@IEEEauthorblockconfadjspace{0.75\@IEEEnormalsizeunitybaselineskip}} + +% spacing between name and affiliation blocks (confmode) +% This can be negative. +% The IEEE doesn't want any added spacing here, but I will leave these +% controls in place in case they ever change their mind. +% Personally, I like 0.75ex. +%\def\@IEEEauthorblockNtopspace{0.75ex} +%\def\@IEEEauthorblockAtopspace{0.75ex} +\def\@IEEEauthorblockNtopspace{0.0ex} +\def\@IEEEauthorblockAtopspace{0.0ex} +\ifCLASSOPTIONtransmag +% transmag uses one line of space above first affiliation block +\def\@IEEEauthorblockAtopspace{1\@IEEEnormalsizeunitybaselineskip} +\fi + +% baseline spacing within name and affiliation blocks (confmode) +% must be positive, spacings below certain values will make +% the position of line of text sensitive to the contents of the +% line above it i.e., whether or not the prior line has descenders, +% subscripts, etc. For this reason it is a good idea to keep +% these above 2.6ex +\def\@IEEEauthorblockNinterlinespace{2.6ex} +\def\@IEEEauthorblockAinterlinespace{2.75ex} + +% This tracks the required strut size. +% See the \@IEEEauthorhalign command for the actual default value used. +\def\@IEEEauthorblockXinterlinespace{2.7ex} + +% variables to retain font size and style across groups +% values given here have no effect as they will be overwritten later +\gdef\@IEEESAVESTATEfontsize{10} +\gdef\@IEEESAVESTATEfontbaselineskip{12} +\gdef\@IEEESAVESTATEfontencoding{OT1} +\gdef\@IEEESAVESTATEfontfamily{ptm} +\gdef\@IEEESAVESTATEfontseries{m} +\gdef\@IEEESAVESTATEfontshape{n} + +% saves the current font attributes +\def\@IEEEcurfontSAVE{\global\let\@IEEESAVESTATEfontsize\f@size% +\global\let\@IEEESAVESTATEfontbaselineskip\f@baselineskip% +\global\let\@IEEESAVESTATEfontencoding\f@encoding% +\global\let\@IEEESAVESTATEfontfamily\f@family% +\global\let\@IEEESAVESTATEfontseries\f@series% +\global\let\@IEEESAVESTATEfontshape\f@shape} + +% restores the saved font attributes +\def\@IEEEcurfontRESTORE{\fontsize{\@IEEESAVESTATEfontsize}{\@IEEESAVESTATEfontbaselineskip}% +\fontencoding{\@IEEESAVESTATEfontencoding}% +\fontfamily{\@IEEESAVESTATEfontfamily}% +\fontseries{\@IEEESAVESTATEfontseries}% +\fontshape{\@IEEESAVESTATEfontshape}% +\selectfont} + + +% variable to indicate if the current block is the first block in the column +\newif\if@IEEEprevauthorblockincol \@IEEEprevauthorblockincolfalse + + +% the command places a strut with height and depth = \@IEEEauthorblockXinterlinespace +% we use this technique to have complete manual control over the spacing of the lines +% within the halign environment. +% We set the below baseline portion at 30%, the above +% baseline portion at 70% of the total length. +% Responds to changes in the document's \baselinestretch +\def\@IEEEauthorstrutrule{\@IEEEtrantmpdimenA\@IEEEauthorblockXinterlinespace% +\@IEEEtrantmpdimenA=\baselinestretch\@IEEEtrantmpdimenA% +\rule[-0.3\@IEEEtrantmpdimenA]{0pt}{\@IEEEtrantmpdimenA}} + + +% blocks to hold the authors' names and affilations. +% Makes formatting easy for conferences +% +% use real definitions in conference mode +% name block +\def\IEEEauthorblockN#1{\relax\@IEEEauthorblockNstyle% set the default text style +\gdef\@IEEEauthorblockXinterlinespace{0pt}% disable strut for spacer row +% the \expandafter hides the \cr in conditional tex, see the array.sty docs +% for details, probably not needed here as the \cr is in a macro +% do a spacer row if needed +\if@IEEEprevauthorblockincol\expandafter\@IEEEauthorblockNtopspaceline\fi +\global\@IEEEprevauthorblockincoltrue% we now have a block in this column +%restore the correct strut value +\gdef\@IEEEauthorblockXinterlinespace{\@IEEEauthorblockNinterlinespace}% +% input the author names +#1% +% end the row if the user did not already +\crcr} +% spacer row for names +\def\@IEEEauthorblockNtopspaceline{\cr\noalign{\vskip\@IEEEauthorblockNtopspace}} +% +% affiliation block +\def\IEEEauthorblockA#1{\relax\@IEEEauthorblockAstyle% set the default text style +\gdef\@IEEEauthorblockXinterlinespace{0pt}%disable strut for spacer row +% the \expandafter hides the \cr in conditional tex, see the array.sty docs +% for details, probably not needed here as the \cr is in a macro +% do a spacer row if needed +\if@IEEEprevauthorblockincol\expandafter\@IEEEauthorblockAtopspaceline\fi +\global\@IEEEprevauthorblockincoltrue% we now have a block in this column +%restore the correct strut value +\gdef\@IEEEauthorblockXinterlinespace{\@IEEEauthorblockAinterlinespace}% +% input the author affiliations +#1% +% end the row if the user did not already +\crcr +% V1.8 transmag does not use any additional affiliation spacing after the first author +\ifCLASSOPTIONtransmag\gdef\@IEEEauthorblockAtopspace{0pt}\fi} + +% spacer row for affiliations +\def\@IEEEauthorblockAtopspaceline{\cr\noalign{\vskip\@IEEEauthorblockAtopspace}} + + +% allow papers to compile even if author blocks are used in modes other +% than conference or peerreviewca. For such cases, we provide dummy blocks. +\ifCLASSOPTIONconference +\else + \ifCLASSOPTIONpeerreviewca\else + % not conference, peerreviewca or transmag mode + \ifCLASSOPTIONtransmag\else + \def\IEEEauthorblockN#1{#1}% + \def\IEEEauthorblockA#1{#1}% + \fi + \fi +\fi + + + +% we provide our own halign so as not to have to depend on tabular +\def\@IEEEauthorhalign{\@IEEEauthordefaulttextstyle% default text style + \lineskip=0pt\relax% disable line spacing + \lineskiplimit=0pt\relax% + \baselineskip=0pt\relax% + \@IEEEcurfontSAVE% save the current font + \mathsurround\z@\relax% no extra spacing around math + \let\\\@IEEEauthorhaligncr% replace newline with halign friendly one + \tabskip=0pt\relax% no column spacing + \everycr{}% ensure no problems here + \@IEEEprevauthorblockincolfalse% no author blocks yet + \def\@IEEEauthorblockXinterlinespace{2.7ex}% default interline space + \vtop\bgroup%vtop box + \halign\bgroup&\relax\hfil\@IEEEcurfontRESTORE\relax ##\relax + \hfil\@IEEEcurfontSAVE\@IEEEauthorstrutrule\cr} + +% ensure last line, exit from halign, close vbox +\def\end@IEEEauthorhalign{\crcr\egroup\egroup} + +% handle bogus star form +\def\@IEEEauthorhaligncr{{\ifnum0=`}\fi\@ifstar{\@@IEEEauthorhaligncr}{\@@IEEEauthorhaligncr}} + +% test and setup the optional argument to \\[] +\def\@@IEEEauthorhaligncr{\@testopt\@@@IEEEauthorhaligncr\z@skip} + +% end the line and do the optional spacer +\def\@@@IEEEauthorhaligncr[#1]{\ifnum0=`{\fi}\cr\noalign{\vskip#1\relax}} + + + +% flag to prevent multiple \and warning messages +\newif\if@IEEEWARNand +\@IEEEWARNandtrue + +% if in conference or peerreviewca modes, we support the use of \and as \author is a +% tabular environment, otherwise we warn the user that \and is invalid +% outside of conference or peerreviewca modes. +\def\and{\relax} % provide a bogus \and that we will then override + +\renewcommand{\and}[1][\relax]{\if@IEEEWARNand\typeout{** WARNING: \noexpand\and is valid only + when in conference or peerreviewca}\typeout{modes (line \the\inputlineno).}\fi\global\@IEEEWARNandfalse} + +\ifCLASSOPTIONconference% +\renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}% +\fi +\ifCLASSOPTIONpeerreviewca +\renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}% +\fi +% V1.8 transmag uses conference author format +\ifCLASSOPTIONtransmag +\renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}% +\fi + +% page clearing command +% based on LaTeX2e's \cleardoublepage, but allows different page styles +% for the inserted blank pages +\def\@IEEEcleardoublepage#1{\clearpage\if@twoside\ifodd\c@page\else +\hbox{}\thispagestyle{#1}\newpage\if@twocolumn\hbox{}\thispagestyle{#1}\newpage\fi\fi\fi} + +% V1.8b hooks to allow adjustment of space above title +\def\IEEEtitletopspace{0.5\baselineskip} +% an added extra amount to allow for adjustment/offset +\def\IEEEtitletopspaceextra{0pt} + +% user command to invoke the title page +\def\maketitle{\par% + \begingroup% + \normalfont% + \def\thefootnote{}% the \thanks{} mark type is empty + \def\footnotemark{}% and kill space from \thanks within author + \let\@makefnmark\relax% V1.7, must *really* kill footnotemark to remove all \textsuperscript spacing as well. + \footnotesize% equal spacing between thanks lines + \footnotesep 0.7\baselineskip%see global setting of \footnotesep for more info + % V1.7 disable \thanks note indention for compsoc + \@IEEEcompsoconly{\long\def\@makefntext##1{\parindent 1em\noindent\hbox{\@makefnmark}##1}}% + \normalsize% + \ifCLASSOPTIONpeerreview + \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext% + \thispagestyle{IEEEpeerreviewcoverpagestyle}\@thanks% + \else + \if@twocolumn% + \ifCLASSOPTIONtechnote% + \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext% + \else + \twocolumn[{\IEEEquantizevspace{\@maketitle}[\IEEEquantizedisabletitlecmds]{0pt}[-\topskip]{\baselineskip}{\@IEEENORMtitlevspace}{\@IEEEMINtitlevspace}\@IEEEaftertitletext}]% + \fi + \else + \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext% + \fi + \thispagestyle{IEEEtitlepagestyle}\@thanks% + \fi + % pullup page for pubid if used. + \if@IEEEusingpubid + \enlargethispage{-\@IEEEpubidpullup}% + \fi + \endgroup + \setcounter{footnote}{0}\let\maketitle\relax\let\@maketitle\relax + \gdef\@thanks{}% + % v1.6b do not clear these as we will need the title again for peer review papers + % \gdef\@author{}\gdef\@title{}% + \let\thanks\relax} + + +% V1.8 parbox to format \@IEEEtitleabstractindextext +\long\def\@IEEEtitleabstractindextextbox#1{\parbox{1\textwidth}{#1}} +% V1.8 compsoc is partial width +\ifCLASSOPTIONcompsoc +% comparison with proofs suggests it's in the range of 92.1-92.3% +\long\def\@IEEEtitleabstractindextextbox#1{\parbox{0.922\textwidth}{\@IEEEcompsocnotconfonly{\rightskip\@flushglue\leftskip\z@skip}#1}} +\fi + +% formats the Title, authors names, affiliations and special paper notice +% THIS IS A CONTROLLED SPACING COMMAND! Do not allow blank lines or unintentional +% spaces to enter the definition - use % at the end of each line +\def\@maketitle{\newpage +\bgroup\par\vskip\IEEEtitletopspace\vskip\IEEEtitletopspaceextra\centering% +\ifCLASSOPTIONtechnote% technotes, V1.8a abstract and index terms are not treated differently for compsoc technotes + {\bfseries\large\@IEEEcompsoconly{\Large\sffamily}\@title\par}\vskip 1.3em{\lineskip .5em\@IEEEcompsoconly{\large\sffamily}\@author + \@IEEEspecialpapernotice\par}\relax +\else% not a technote + \vskip0.2em{\Huge\ifCLASSOPTIONtransmag\bfseries\LARGE\fi\@IEEEcompsoconly{\sffamily}\@IEEEcompsocconfonly{\normalfont\normalsize\vskip 2\@IEEEnormalsizeunitybaselineskip + \bfseries\Large}\@IEEEcompsocnotconfonly{\vskip 0.75\@IEEEnormalsizeunitybaselineskip}\@title\par}\relax + \@IEEEcompsocnotconfonly{\vskip 0.5\@IEEEnormalsizeunitybaselineskip}\vskip1.0em\par% + % V1.6 handle \author differently if in conference mode + \ifCLASSOPTIONconference% + {\@IEEEspecialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace% + \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par}\relax + \else% peerreviewca, peerreview or journal + \ifCLASSOPTIONpeerreviewca + % peerreviewca handles author names just like conference mode + {\@IEEEcompsoconly{\sffamily}\@IEEEspecialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace% + \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par + {\@IEEEcompsoconly{\vskip 1.5em\relax + \@IEEEtitleabstractindextextbox{\@IEEEtitleabstractindextext}\par\noindent\hfill + \IEEEcompsocdiamondline\hfill\hbox{}\par}}}\relax + \else% journal, peerreview or transmag + \ifCLASSOPTIONtransmag + % transmag also handles author names just like conference mode + % it also uses \@IEEEtitleabstractindextex, but with one line less + % space above, and one more below + {\@IEEEspecialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace% + \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par + {\vspace{0.5\baselineskip}\relax\@IEEEtitleabstractindextextbox{\@IEEEtitleabstractindextext}\vspace{-1\baselineskip}\par}}\relax + \else% journal or peerreview + {\lineskip.5em\@IEEEcompsoconly{\sffamily}\sublargesize\@author\@IEEEspecialpapernotice\par + {\@IEEEcompsoconly{\vskip 1.5em\relax + \@IEEEtitleabstractindextextbox{\@IEEEtitleabstractindextext}\par\noindent\hfill + \IEEEcompsocdiamondline\hfill\hbox{}\par}}}\relax + \fi + \fi + \fi +\fi\par\addvspace{0.5\baselineskip}\egroup} + + +% V1.7 Computer Society "diamond line" which follows index terms for nonconference papers +% V1.8a full width diamond line for single column use +\def\@IEEEcompsocdiamondlinei{\vrule depth 0pt height 0.5pt width 4cm\nobreak\hspace{7.5pt}\nobreak +\raisebox{-3.5pt}{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\fontsize{11}{12}\selectfont\char70}\nobreak +\hspace{7.5pt}\nobreak\vrule depth 0pt height 0.5pt width 4cm\relax} +% V1.8a narrower width diamond line for double column use +\def\@IEEEcompsocdiamondlineii{\vrule depth 0pt height 0.5pt width 2.5cm\nobreak\hspace{7.5pt}\nobreak +\raisebox{-3.5pt}{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\fontsize{11}{12}\selectfont\char70}\nobreak +\hspace{7.5pt}\nobreak\vrule depth 0pt height 0.5pt width 2.5cm\relax} +% V1.8a bare core without rules to base a last resort on for very narrow linewidths +\def\@IEEEcompsocdiamondlineiii{\mbox{}\nobreak\hspace{7.5pt}\nobreak +\raisebox{-3.5pt}{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\fontsize{11}{12}\selectfont\char70}\nobreak +\hspace{7.5pt}\nobreak\mbox{}\relax} + +% V1.8a allow \IEEEcompsocdiamondline to adjust for different linewidths. +% Use \@IEEEcompsocdiamondlinei if its width is less than 0.66\linewidth (0.487 nominal for single column) +% if not, fall back to \@IEEEcompsocdiamondlineii if its width is less than 0.75\linewidth (0.659 nominal for double column) +% if all else fails, try to make a custom diamondline based on the abnormally narrow linewidth +\def\IEEEcompsocdiamondline{\settowidth{\@IEEEtrantmpdimenA}{\@IEEEcompsocdiamondlinei}\relax +\ifdim\@IEEEtrantmpdimenA<0.66\linewidth\relax\@IEEEcompsocdiamondlinei\relax +\else +\settowidth{\@IEEEtrantmpdimenA}{\@IEEEcompsocdiamondlineii}\relax +\ifdim\@IEEEtrantmpdimenA<0.75\linewidth\relax\@IEEEcompsocdiamondlineii\relax +\else +\settowidth{\@IEEEtrantmpdimenA}{\@IEEEcompsocdiamondlineiii}\relax +\@IEEEtrantmpdimenB=\linewidth\relax +\addtolength{\@IEEEtrantmpdimenB}{-1\@IEEEtrantmpdimenA}\relax +\vrule depth 0pt height 0.5pt width 0.33\@IEEEtrantmpdimenB\@IEEEcompsocdiamondlineiii\vrule depth 0pt height 0.5pt width 0.33\@IEEEtrantmpdimenB\relax +\fi\fi} + + +% V1.7 standard LateX2e \thanks, but with \itshape under compsoc. Also make it a \long\def +% We also need to trigger the one-shot footnote rule +\def\@IEEEtriggeroneshotfootnoterule{\global\@IEEEenableoneshotfootnoteruletrue} + + +\long\def\thanks#1{\footnotemark + \protected@xdef\@thanks{\@thanks + \protect\footnotetext[\the\c@footnote]{\@IEEEcompsoconly{\itshape + \protect\@IEEEtriggeroneshotfootnoterule\relax}\ignorespaces#1}}} +\let\@thanks\@empty + + +% V1.7 allow \author to contain \par's. This is needed to allow \thanks to contain \par. +\long\def\author#1{\gdef\@author{#1}} + + +% in addition to setting up IEEEitemize, we need to remove a baselineskip space above and +% below it because \list's \pars introduce blank lines because of the footnote struts. +\def\@IEEEsetupcompsocitemizelist{\def\labelitemi{$\bullet$}% +\setlength{\IEEElabelindent}{0pt}\setlength{\labelsep}{1.2em}\setlength{\parskip}{0pt}% +\setlength{\partopsep}{0pt}\setlength{\topsep}{0.5\baselineskip}\vspace{-1\baselineskip}\relax} + + +% flag for fake non-compsoc \IEEEcompsocthanksitem - prevents line break on very first item +\newif\if@IEEEbreakcompsocthanksitem \@IEEEbreakcompsocthanksitemfalse + +\ifCLASSOPTIONcompsoc +% V1.7 compsoc bullet item \thanks +% also, we need to redefine this to destroy the argument in \IEEEquantizevspace +\long\def\IEEEcompsocitemizethanks#1{\relax\@IEEEbreakcompsocthanksitemfalse\footnotemark + \protected@xdef\@thanks{\@thanks + \protect\footnotetext[\the\c@footnote]{\itshape\protect\@IEEEtriggeroneshotfootnoterule + {\let\IEEEiedlistdecl\relax\protect\begin{IEEEitemize}[\protect\@IEEEsetupcompsocitemizelist]\ignorespaces#1\relax + \protect\end{IEEEitemize}}\protect\vspace{-1\baselineskip}}}} +\DeclareRobustCommand*{\IEEEcompsocthanksitem}{\item} +\else +% non-compsoc, allow for dual compilation via rerouting to normal \thanks +\long\def\IEEEcompsocitemizethanks#1{\thanks{#1}} +% redirect to "pseudo-par" \hfil\break\indent after swallowing [] from \IEEEcompsocthanksitem[] +\DeclareRobustCommand{\IEEEcompsocthanksitem}{\@ifnextchar [{\@IEEEthanksswallowoptionalarg}% +{\@IEEEthanksswallowoptionalarg[\relax]}} +% be sure and break only after first item, be sure and ignore spaces after optional argument +\def\@IEEEthanksswallowoptionalarg[#1]{\relax\if@IEEEbreakcompsocthanksitem\hfil\break +\indent\fi\@IEEEbreakcompsocthanksitemtrue\ignorespaces} +\fi + + +% V1.6b define the \IEEEpeerreviewmaketitle as needed +\ifCLASSOPTIONpeerreview +\def\IEEEpeerreviewmaketitle{\@IEEEcleardoublepage{empty}% +\ifCLASSOPTIONtwocolumn +\twocolumn[{\IEEEquantizevspace{\@IEEEpeerreviewmaketitle}[\IEEEquantizedisabletitlecmds]{0pt}[-\topskip]{\baselineskip}{\@IEEENORMtitlevspace}{\@IEEEMINtitlevspace}}] +\else +\newpage\@IEEEpeerreviewmaketitle\@IEEEstatictitlevskip +\fi +\thispagestyle{IEEEtitlepagestyle}} +\else +% \IEEEpeerreviewmaketitle does nothing if peer review option has not been selected +\def\IEEEpeerreviewmaketitle{\relax} +\fi + +% peerreview formats the repeated title like the title in journal papers. +\def\@IEEEpeerreviewmaketitle{\bgroup\par\addvspace{0.5\baselineskip}\centering\@IEEEcompsoconly{\sffamily}% +\normalfont\normalsize\vskip0.2em{\Huge\@title\par}\vskip1.0em\par +\par\addvspace{0.5\baselineskip}\egroup} + + + +% V1.6 +% this is a static rubber spacer between the title/authors and the main text +% used for single column text, or when the title appears in the first column +% of two column text (technotes). +\def\@IEEEstatictitlevskip{{\normalfont\normalsize +% adjust spacing to next text +% v1.6b handle peer review papers +\ifCLASSOPTIONpeerreview +% for peer review papers, the same value is used for both title pages +% regardless of the other paper modes + \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip +\else + \ifCLASSOPTIONconference% conference + \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip% + \else% + \ifCLASSOPTIONtechnote% technote + \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip% + \else% journal uses more space + \vskip 2.5\baselineskip plus 0.75\baselineskip minus 0.375\baselineskip% + \fi + \fi +\fi}} + + +% set the nominal and minimum values for the quantized title spacer +% the quantization algorithm will not allow the spacer size to +% become less than \@IEEEMINtitlevspace - instead it will be lengthened +% default to journal values +\def\@IEEENORMtitlevspace{2.5\baselineskip} +\def\@IEEEMINtitlevspace{2\baselineskip} +% conferences and technotes need tighter spacing +\ifCLASSOPTIONconference% conference + \def\@IEEENORMtitlevspace{1\baselineskip} + \def\@IEEEMINtitlevspace{0.75\baselineskip} +\fi +\ifCLASSOPTIONtechnote% technote + \def\@IEEENORMtitlevspace{1\baselineskip} + \def\@IEEEMINtitlevspace{0.75\baselineskip} +\fi + + +% V1.8a +\def\IEEEquantizevspace{\begingroup\@ifstar{\@IEEEquantizevspacestarformtrue\@IEEEquantizevspace}{\@IEEEquantizevspacestarformfalse\@IEEEquantizevspace}} +% \IEEEquantizevspace[output dimen register]{object}[object decl] +% {top baselineskip} +% [offset][prevdepth][lineskip limit][lineskip] +% {unit height}{nominal vspace}{minimum vspace} +% +% Calculates and creates the vspace needed to make the combined height with +% the given object an integer multiple of the given unit height. This command +% is more general than the older \@IEEEdynamictitlevspace it replaces. +% +% The star form has no effect at present, but is reserved for future use. +% +% If the optional argument [output dimen register] is given, the calculated +% vspace height is stored in the given output dimen (or skip) register +% and no other action is taken, otherwise the object followed by a vspace* +% of the appropriate height is evaluated/output. +% +% The optional object decl (declarations) is code that is evaluated just +% before the object's height is evaluated. Its intented purpose is to allow +% for the alteration or disabling of code within the object during internal +% height evaluation (e.g., \long\def\thanks#1{\relax} ). +% This special code is not invoked if/when the object is rendered at the end. +% +% The nominal vspace is the target value of the added vspace and the minimum +% vspace is the lower allowed limit. The vspacer will be the value that achieves +% integral overall height, in terms of the given unit height, that is closest +% to the nominal vspace and that is not less than the specified minimum vspace. +% +% The line spacing algorithm of TeX is somewhat involved and requires special +% care with regard to the first line of a vertical list (which is indicated +% when \prevdepth is -1000pt or less). top baselineskip specifies the +% baselineskip or topskip used prior to the object. If the height of the +% first line of the object is greater than the given top baselineskip, then +% the top baselineskip is subtracted from the height of the first line and +% that difference is considered along with the rest of the object height +% (because the object will be shifted down by an amount = +% top line height - top baselineskip). Otherwise, the height of the first line +% of the object is ignored as far as the calculations are concerned. +% This algorithm is adequate for objects that appear at the top of a page +% (e.g., titles) where \topskip spacing is used. +% +% However, as explained on page 78 of the TeXbook, interline spacing is more +% complex when \baselineskip is being used (indicated by \prevdepth > +% -1000pt). The four optional parameters offset, prevdepth, lineskip limit and +% lineskip are assumed to be equal to be 0pt, \prevdepth, \lineskiplimit and +% \lineskip, respectively, if they are omitted. +% +% The prevdepth is the depth of the line before the object, the lineskip limit +% specifies how close the top of the object can come to the bottom of the +% previous line before \baselineskip is ignored and \lineskip is inserted +% between the object and the line above it. Lineskip does not come into +% play unless the first line of the object is high enough to "get too close" +% (as specified by lineskiplimit) to the line before it. The the prevdepth, +% lineskip limit, and lineskip optional parameters are not needed for the +% first object/line on a page (i.e., prevdepth <= -1000pt) where the simplier +% \topskip spacing rules are in effect. +% +% Offset is a manual adjustment that is added to the height calculations of +% object irrespective of the value of \prevdepth. It is useful when the top +% baselineskip will result in a noninteger unit height object placement even +% if the object itself has integral height. e.g., a footnotesize baselineskip +% is used before the object, thus an offset of, say -3pt, can be given as a +% correction. + +% Common combinations of these parameters include: +% +% top baselineskip: (and default values for offset, prevdepth, etc.) +% \topskip % for objects that appear at the top of a page +% \maxdimen % always ignore the height of the top line +% 0pt % always consider any positive height of the top line +% +% for objects to appear inline in normal text: +% top baselineskip = \baselineskip +% +% set prevdepth = -1000pt and top baselineskip = 0pt to consider the +% overall height of the object without any other external skip +% consideration + +\newif\if@IEEEquantizevspacestarform % flag to indicate star form +\newif\if@IEEEquantizevspaceuseoutdimenreg % flag to indicate output dimen register is to be used +% Use our own private registers because the object could contain a +% structure that uses the existing tmp scratch pad registers +\newdimen\@IEEEquantizeheightA +\newdimen\@IEEEquantizeheightB +\newdimen\@IEEEquantizeheightC +\newdimen\@IEEEquantizeprevdepth % need to save this early as can change +\newcount\@IEEEquantizemultiple +\newbox\@IEEEquantizeboxA + + +\def\@IEEEquantizevspace{\@ifnextchar [{\@IEEEquantizevspaceuseoutdimenregtrue\@@IEEEquantizevspace}{\@IEEEquantizevspaceuseoutdimenregfalse\@@IEEEquantizevspace[]}} + + +\long\def\@@IEEEquantizevspace[#1]#2{\relax +% acquire and store +% #1 optional output dimen register +% #2 object +\edef\@IEEEquantizeoutdimenreg{#1}\relax +% allow for object specifications that contain parameters +\@IEEEtrantmptoksA={#2}\relax +\long\edef\@IEEEquantizeobject{\the\@IEEEtrantmptoksA}\relax +\@ifnextchar [{\@@@IEEEquantizevspace}{\@@@IEEEquantizevspace[\relax]}} + +\long\def\@@@IEEEquantizevspace[#1]#2{\relax +% acquire and store +% [#1] optional object decl, is \relax if not given by user +% #2 top baselineskip +% allow for object decl specifications that have parameters +\@IEEEtrantmptoksA={#1}\relax +\long\edef\@IEEEquantizeobjectdecl{\the\@IEEEtrantmptoksA}\relax +\edef\@IEEEquantizetopbaselineskip{#2}\ivIEEEquantizevspace} + +% acquire optional argument set and store +% [offset][prevdepth][lineskip limit][lineskip] +\def\ivIEEEquantizevspace{\@ifnextchar [{\@vIEEEquantizevspace}{\@vIEEEquantizevspace[0pt]}} +\def\@vIEEEquantizevspace[#1]{\edef\@IEEEquantizeoffset{#1}\@ifnextchar [{\@viIEEEquantizevspace}{\@viIEEEquantizevspace[\prevdepth]}} +\def\@viIEEEquantizevspace[#1]{\@IEEEquantizeprevdepth=#1\relax\@ifnextchar [{\@viiIEEEquantizevspace}{\@viiIEEEquantizevspace[\lineskiplimit]}} +\def\@viiIEEEquantizevspace[#1]{\edef\@IEEEquantizelineskiplimit{#1}\@ifnextchar [{\@viiiIEEEquantizevspace}{\@viiiIEEEquantizevspace[\lineskip]}} +\def\@viiiIEEEquantizevspace[#1]{\edef\@IEEEquantizelineskip{#1}\@ixIEEEquantizevspace} + +% main routine +\def\@ixIEEEquantizevspace#1#2#3{\relax +\edef\@IEEEquantizeunitheight{#1}\relax +\edef\@IEEEquantizenomvspace{#2}\relax +\edef\@IEEEquantizeminvspace{#3}\relax +% \@IEEEquantizeoutdimenreg +% \@IEEEquantizeobject +% \@IEEEquantizeobjectdecl +% \@IEEEquantizetopbaselineskip +% \@IEEEquantizeoffset +% \@IEEEquantizeprevdepth +% \@IEEEquantizelineskiplimit +% \@IEEEquantizelineskip +% \@IEEEquantizeunitheight +% \@IEEEquantizenomvspace +% \@IEEEquantizeminvspace +% get overall height of object +\setbox\@IEEEquantizeboxA\vbox{\begingroup\@IEEEquantizeobjectdecl\@IEEEquantizeobject\relax\endgroup}\relax +\@IEEEquantizeheightA\ht\@IEEEquantizeboxA\relax +% get height of first line of object +\setbox\@IEEEquantizeboxA\vtop{\begingroup\@IEEEquantizeobjectdecl\@IEEEquantizeobject\relax\endgroup}\relax +\@IEEEquantizeheightB\ht\@IEEEquantizeboxA\relax +\ifdim\@IEEEquantizeprevdepth>-1000pt\relax % prevdepth > -1000pf means full baselineskip\lineskip rules in effect +% lineskip spacing rule takes effect if height of top line > baselineskip - prevdepth - lineskiplimit, +% otherwise the baselineskip rule is in effect and the height of the first line does not matter at all. +\@IEEEquantizeheightC=\@IEEEquantizetopbaselineskip\relax +\advance\@IEEEquantizeheightC-\@IEEEquantizeprevdepth\relax +\advance\@IEEEquantizeheightC-\@IEEEquantizelineskiplimit\relax % this works even though \@IEEEquantizelineskiplimit is a macro because TeX allows --10pt notation +\ifdim\@IEEEquantizeheightB>\@IEEEquantizeheightC\relax +% lineskip spacing rule is in effect i.e., the object is going to be shifted down relative to the +% baselineskip set position by its top line height (already a part of the total height) + prevdepth + lineskip - baselineskip +\advance\@IEEEquantizeheightA\@IEEEquantizeprevdepth\relax +\advance\@IEEEquantizeheightA\@IEEEquantizelineskip\relax +\advance\@IEEEquantizeheightA-\@IEEEquantizetopbaselineskip\relax +\else +% height of first line <= \@IEEEquantizetopbaselineskip - \@IEEEquantizeprevdepth - \@IEEEquantizelineskiplimit +% standard baselineskip rules are in effect, so don't consider height of first line +\advance\@IEEEquantizeheightA-\@IEEEquantizeheightB\relax +\fi +% +\else % prevdepth <= -1000pt, simplier \topskip type rules in effect +\ifdim\@IEEEquantizeheightB>\@IEEEquantizetopbaselineskip +% height of top line (already included in the total height) in excess of +% baselineskip is the amount it will be downshifted +\advance\@IEEEquantizeheightA-\@IEEEquantizetopbaselineskip\relax +\else +% height of first line is irrelevant, remove it +\advance\@IEEEquantizeheightA-\@IEEEquantizeheightB\relax +\fi +\fi % prevdepth <= -1000pt +% +% adjust height for any manual offset +\advance\@IEEEquantizeheightA\@IEEEquantizeoffset\relax +% add in nominal spacer +\advance\@IEEEquantizeheightA\@IEEEquantizenomvspace\relax +% check for nonzero unitheight +\@IEEEquantizeheightB=\@IEEEquantizeunitheight\relax +\ifnum\@IEEEquantizeheightB=0\relax +\@IEEEclspkgerror{IEEEquantizevspace unit height cannot be zero. Assuming 10pt.}% +{Division by zero is not allowed.} +\@IEEEquantizeheightB=10pt\relax +\fi +% get integer number of lines +\@IEEEquantizemultiple=\@IEEEquantizeheightA\relax +\divide\@IEEEquantizemultiple\@IEEEquantizeheightB\relax +% set A to contain the excess height over the \@IEEEquantizemultiple of lines +% A = height - multiple*unitheight +\@IEEEquantizeheightC\@IEEEquantizeheightB\relax +\multiply\@IEEEquantizeheightC\@IEEEquantizemultiple\relax +\advance\@IEEEquantizeheightA-\@IEEEquantizeheightC\relax +% set B to contain the height short of \@IEEEquantizemultiple+1 of lines +% B = unitheight - A +\advance\@IEEEquantizeheightB-\@IEEEquantizeheightA\relax +% choose A or B based on which is closer +\@IEEEquantizeheightC\@IEEEquantizenomvspace\relax +\ifdim\@IEEEquantizeheightA<\@IEEEquantizeheightB\relax +% C = nomvspace - A, go with lower +\advance\@IEEEquantizeheightC-\@IEEEquantizeheightA\relax +\else +% C = nomvspace + B, go with upper +\advance\@IEEEquantizeheightC\@IEEEquantizeheightB\relax +\fi +% if violate lower bound, use next integer bound +\ifdim\@IEEEquantizeheightC<\@IEEEquantizeminvspace\relax +% A + B = unitheight +\advance\@IEEEquantizeheightC\@IEEEquantizeheightA\relax +\advance\@IEEEquantizeheightC\@IEEEquantizeheightB\relax +\fi +% export object and spacer outside of group +\global\let\@IEEEquantizeobjectout\@IEEEquantizeobject\relax +\global\@IEEEquantizeheightC\@IEEEquantizeheightC\relax +\endgroup +\if@IEEEquantizevspaceuseoutdimenreg +\@IEEEquantizeoutdimenreg=\@IEEEquantizeheightC\relax +\else +\@IEEEquantizeobjectout\relax +\vskip\@IEEEquantizeheightC\relax +\fi} + + +% user command to disable all global assignments, possible use within object decl +\def\IEEEquantizedisableglobal{\let\global\relax +\let\gdef\def +\let\xdef\edef} +% user command to allow for the disabling of \thanks and other commands, possible use within object decl +\def\IEEEquantizedisabletitlecmds{\long\def\thanks##1{\relax}\relax +\long\def\IEEEcompsocitemizethanks##1{\relax}\def\newpage{\relax}} + + + + + +% V1.6 +% we allow the user access to the last part of the title area +% useful in emergencies such as when a different spacing is needed +% This text is NOT compensated for in the dynamic sizer. +\let\@IEEEaftertitletext=\relax +\long\def\IEEEaftertitletext#1{\def\@IEEEaftertitletext{#1}} + + +% V1.7 provide a way for users to enter abstract and keywords +% into the onecolumn title are. This text is compensated for +% in the dynamic sizer. +\let\@IEEEtitleabstractindextext=\relax +\long\def\IEEEtitleabstractindextext#1{\def\@IEEEtitleabstractindextext{#1}} + +% V1.7 provide a way for users to get the \@IEEEtitleabstractindextext if +% not in compsoc or transmag journal mode - this way abstract and keywords +% can still be placed in their conventional position if not in those modes. +\def\IEEEdisplaynontitleabstractindextext{% +% display for all conference formats +\ifCLASSOPTIONconference\@IEEEtitleabstractindextext\relax +\else% non-conferences + % V1.8a display for all technotes + \ifCLASSOPTIONtechnote\@IEEEtitleabstractindextext\relax + % V1.8a add diamond line after abstract and index terms for compsoc technotes + \@IEEEcompsoconly{\noindent\hfill\IEEEcompsocdiamondline\hfill\hbox{}\par}\relax + \else % non-conferences and non-technotes + \ifCLASSOPTIONcompsoc% display if not compsoc and not transmag + \else + \ifCLASSOPTIONtransmag + \else% not compsoc journal nor transmag journal + \@IEEEtitleabstractindextext\relax + \fi + \fi + \fi +\fi} + + +% command to allow alteration of baselinestretch, but only if the current +% baselineskip is unity. Used to tweak the compsoc abstract and keywords line spacing. +\def\@IEEEtweakunitybaselinestretch#1{{\def\baselinestretch{1}\selectfont +\global\@tempskipa\baselineskip}\ifnum\@tempskipa=\baselineskip% +\def\baselinestretch{#1}\selectfont\fi\relax} + + +% abstract and keywords are in \small, except +% for 9pt docs in which they are in \footnotesize +% Because 9pt docs use an 8pt footnotesize, \small +% becomes a rather awkward 8.5pt +\def\@IEEEabskeysecsize{\small} +\ifx\CLASSOPTIONpt\@IEEEptsizenine + \def\@IEEEabskeysecsize{\footnotesize} +\fi + +% compsoc journals use \footnotesize, compsoc conferences use normalsize +\@IEEEcompsoconly{\def\@IEEEabskeysecsize{\footnotesize}} +\@IEEEcompsocconfonly{\def\@IEEEabskeysecsize{\small}} + + +% V1.6 have abstract and keywords strip leading spaces, pars and newlines +% so that spacing is more tightly controlled. +\def\abstract{\normalfont + \if@twocolumn + \@IEEEabskeysecsize\bfseries\textit{\abstractname}---\relax + \else + \bgroup\par\addvspace{0.5\baselineskip}\centering\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{\abstractname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize + \fi\@IEEEgobbleleadPARNLSP} +% V1.6 The IEEE wants only 1 pica from end of abstract to introduction heading when in +% conference mode (the heading already has this much above it) +\def\endabstract{\relax\ifCLASSOPTIONconference\vspace{0ex}\else\vspace{1.34ex}\fi\par\if@twocolumn\else\endquotation\fi + \normalfont\normalsize} + +\def\IEEEkeywords{\normalfont + \if@twocolumn + \@IEEEabskeysecsize\bfseries\textit{\IEEEkeywordsname}---\relax + \else + \bgroup\par\addvspace{0.5\baselineskip}\centering\@IEEEabskeysecsize\textbf{\IEEEkeywordsname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize + \fi\@IEEEgobbleleadPARNLSP} +\def\endIEEEkeywords{\relax\ifCLASSOPTIONtechnote\vspace{1.34ex}\else\vspace{0.67ex}\fi + \par\if@twocolumn\else\endquotation\fi% + \normalfont\normalsize} + +% V1.7 compsoc keywords index terms +\ifCLASSOPTIONcompsoc + \ifCLASSOPTIONconference% compsoc conference +\def\abstract{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\bfseries + \if@twocolumn + \@IEEEabskeysecsize\noindent\textit{\abstractname}---\relax + \else + \bgroup\par\addvspace{0.5\baselineskip}\centering\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{\abstractname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize% + \fi\@IEEEgobbleleadPARNLSP} +\def\IEEEkeywords{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\bfseries + \if@twocolumn + \@IEEEabskeysecsize\vskip 0.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip\noindent + \textit{\IEEEkeywordsname}---\relax + \else + \bgroup\par\addvspace{0.5\baselineskip}\centering\@IEEEabskeysecsize\textbf{\IEEEkeywordsname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize% + \fi\@IEEEgobbleleadPARNLSP} + \else% compsoc not conference +\def\abstract{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\sffamily + \if@twocolumn + \@IEEEabskeysecsize\noindent\textbf{\abstractname}---\relax + \else + \bgroup\par\addvspace{0.5\baselineskip}\centering\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{\abstractname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize% + \fi\@IEEEgobbleleadPARNLSP} +\def\IEEEkeywords{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\sffamily + \if@twocolumn + \@IEEEabskeysecsize\vskip 0.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip\noindent + \textbf{\IEEEkeywordsname}---\relax + \else + \bgroup\par\addvspace{0.5\baselineskip}\centering\@IEEEabskeysecsize\textbf{\IEEEkeywordsname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize% + \fi\@IEEEgobbleleadPARNLSP} + \fi +\fi + +% V1.8 transmag keywords index terms +% no abstract name, use indentation +\ifCLASSOPTIONtransmag +\def\abstract{\normalfont\parindent 1em\relax + \if@twocolumn + \@IEEEabskeysecsize\bfseries\indent + \else + \bgroup\par\addvspace{0.5\baselineskip}\centering\vspace{-1.78ex}\@IEEEabskeysecsize + \textbf{\abstractname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize + \fi\@IEEEgobbleleadPARNLSP} + +\def\IEEEkeywords{\normalfont\parindent 1em\relax + \if@twocolumn + \@IEEEabskeysecsize\vspace{1\baselineskip}\bfseries\indent\textit{\IEEEkeywordsname}---\relax + \else + \bgroup\par\vspace{1\baselineskip}\centering\@IEEEabskeysecsize + \textbf{\IEEEkeywordsname}\par\addvspace{0.5\baselineskip}\egroup\quotation\@IEEEabskeysecsize + \fi\@IEEEgobbleleadPARNLSP} +\fi + + + +% gobbles all leading \, \\ and \par, upon finding first token that +% is not a \ , \\ or a \par, it ceases and returns that token +% +% used to strip leading \, \\ and \par from the input +% so that such things in the beginning of an environment will not +% affect the formatting of the text +\long\def\@IEEEgobbleleadPARNLSP#1{\let\@IEEEswallowthistoken=0% +\let\@IEEEgobbleleadPARNLSPtoken#1% +\let\@IEEEgobbleleadPARtoken=\par% +\let\@IEEEgobbleleadNLtoken=\\% +\let\@IEEEgobbleleadSPtoken=\ % +\def\@IEEEgobbleleadSPMACRO{\ }% +\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadPARtoken% +\let\@IEEEswallowthistoken=1% +\fi% +\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadNLtoken% +\let\@IEEEswallowthistoken=1% +\fi% +\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadSPtoken% +\let\@IEEEswallowthistoken=1% +\fi% +% a control space will come in as a macro +% when it is the last one on a line +\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadSPMACRO% +\let\@IEEEswallowthistoken=1% +\fi% +% if we have to swallow this token, do so and taste the next one +% else spit it out and stop gobbling +\ifx\@IEEEswallowthistoken 1\let\@IEEEnextgobbleleadPARNLSP=\@IEEEgobbleleadPARNLSP\else% +\let\@IEEEnextgobbleleadPARNLSP=#1\fi% +\@IEEEnextgobbleleadPARNLSP}% + + + + +% TITLING OF SECTIONS +\def\@IEEEsectpunct{:\ \,} % Punctuation after run-in section heading (headings which are + % part of the paragraphs), need little bit more than a single space + % spacing from section number to title +% compsoc conferences use regular period/space punctuation +\ifCLASSOPTIONcompsoc +\ifCLASSOPTIONconference +\def\@IEEEsectpunct{.\ } +\fi\fi + + +\def\@seccntformat#1{\csname the#1dis\endcsname\hskip 0.5em\relax} + +\ifCLASSOPTIONcompsoc +% compsoc journals need extra spacing +\ifCLASSOPTIONconference\else +\def\@seccntformat#1{\csname the#1dis\endcsname\hskip 1em\relax} +\fi\fi + +%v1.7 put {} after #6 to allow for some types of user font control +%and use \@@par rather than \par +\def\@sect#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + % load section label and spacer into \@svsec + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi% + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@% tempskipa determines whether is treated as a high + \begingroup #6{\relax% or low level heading + \noindent % subsections are NOT indented + % print top level headings. \@svsec is label, #8 is heading title + % The IEEE does not block indent the section title text, it flows like normal + {\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\@@par}}% + \endgroup + \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\relax\else + \protect\numberline{\csname the#1\endcsname}\fi#7}% + \else % printout low level headings + % svsechd seems to swallow the trailing space, protect it with \mbox{} + % got rid of sectionmark stuff + \def\@svsechd{#6{\hskip #3\relax\@svsec #8\@IEEEsectpunct\mbox{}}% + \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\relax\else + \protect\numberline{\csname the#1\endcsname}\fi#7}}% + \fi%skip down + \@xsect{#5}} + + +% section* handler +%v1.7 put {} after #4 to allow for some types of user font control +%and use \@@par rather than \par +\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + %\begingroup #4\@hangfrom{\hskip #1}{\interlinepenalty \@M #5\par}\endgroup + % The IEEE does not block indent the section title text, it flows like normal + \begingroup \noindent #4{\relax{\hskip #1}{\interlinepenalty \@M #5\@@par}}\endgroup + % svsechd swallows the trailing space, protect it with \mbox{} + \else \def\@svsechd{#4{\hskip #1\relax #5\@IEEEsectpunct\mbox{}}}\fi + \@xsect{#3}} + + +%% SECTION heading spacing and font +%% +% arguments are: #1 - sectiontype name +% (for \@sect) #2 - section level +% #3 - section heading indent +% #4 - top separation (absolute value used, neg indicates not to indent main text) +% If negative, make stretch parts negative too! +% #5 - (absolute value used) positive: bottom separation after heading, +% negative: amount to indent main text after heading +% Both #4 and #5 negative means to indent main text and use negative top separation +% #6 - font control +% You've got to have \normalfont\normalsize in the font specs below to prevent +% trouble when you do something like: +% \section{Note}{\ttfamily TT-TEXT} is known to ... +% The IEEE sometimes REALLY stretches the area before a section +% heading by up to about 0.5in. However, it may not be a good +% idea to let LaTeX have quite this much rubber. +\ifCLASSOPTIONconference% +% The IEEE wants section heading spacing to decrease for conference mode +\def\section{\@startsection{section}{1}{\z@}{1.5ex plus 1.5ex minus 0.5ex}% +{0.7ex plus 1ex minus 0ex}{\normalfont\normalsize\centering\scshape}}% +\def\subsection{\@startsection{subsection}{2}{\z@}{1.5ex plus 1.5ex minus 0.5ex}% +{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}% +\else % for journals +\def\section{\@startsection{section}{1}{\z@}{3.0ex plus 1.5ex minus 1.5ex}% V1.6 3.0ex from 3.5ex +{0.7ex plus 1ex minus 0ex}{\normalfont\normalsize\centering\scshape}}% +\def\subsection{\@startsection{subsection}{2}{\z@}{3.5ex plus 1.5ex minus 1.5ex}% +{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}% +\fi + +% for both journals and conferences +% decided to put in a little rubber above the section, might help somebody +\def\subsubsection{\@startsection{subsubsection}{3}{\parindent}{0ex plus 0.1ex minus 0.1ex}% +{0ex}{\normalfont\normalsize\itshape}}% +\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{0ex plus 0.1ex minus 0.1ex}% +{0ex}{\normalfont\normalsize\itshape}}% + + +% compsoc +\ifCLASSOPTIONcompsoc +\ifCLASSOPTIONconference +% compsoc conference +\def\section{\@startsection{section}{1}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}% +{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}{\normalfont\large\bfseries}}% +\def\subsection{\@startsection{subsection}{2}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}% +{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}{\normalfont\sublargesize\bfseries}}% +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}% +{0ex}{\normalfont\normalsize\bfseries}}% +\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{0ex plus 0.1ex minus 0.1ex}% +{0ex}{\normalfont\normalsize}}% +\else% compsoc journals +% use negative top separation as compsoc journals do not indent paragraphs after section titles +\def\section{\@startsection{section}{1}{\z@}{-3.5ex plus -2ex minus -1.5ex}% +{0.7ex plus 1ex minus 0ex}{\normalfont\sublargesize\sffamily\bfseries\scshape}}% +% Note that subsection and smaller may not be correct for the Computer Society, +% I have to look up an example. +\def\subsection{\@startsection{subsection}{2}{\z@}{-3.5ex plus -1.5ex minus -1.5ex}% +{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\sffamily\bfseries}}% +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-2.5ex plus -1ex minus -1ex}% +{0.5ex plus 0.5ex minus 0ex}{\normalfont\normalsize\sffamily\itshape}}% +\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{-0ex plus -0.1ex minus -0.1ex}% +{0ex}{\normalfont\normalsize}}% +\fi\fi + +% transmag +\ifCLASSOPTIONtransmag +\def\subsection{\@startsection{subsection}{2}{0.75\parindent}{3.5ex plus 1.5ex minus 1.5ex}% +{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}% +\def\subsubsection{\@startsection{subsubsection}{3}{1.25\parindent}{0.1ex plus 0.1ex minus 0.1ex}% +{0.1ex}{\normalfont\normalsize\itshape}}% +\fi + + +% V1.8a provide for a raised line Introduction section for use with Computer +% Society papers. We have to remove any spacing glue after the section +% heading and then remove the blank line for the new paragraph after it. +% LaTeX's section handler alters \everypar and we need to propogate those +% changes outside of the \parbox lest there be spacing problems at the top +% of the next section. +\def\IEEEraisesectionheading#1{\noindent\raisebox{1.5\baselineskip}[0pt][0pt]{\parbox[b]{\columnwidth}{#1\unskip\global\everypar=\everypar}}\vspace{-1\baselineskip}\vspace{-\parskip}\par} + + + +%% ENVIRONMENTS +% "box" symbols at end of proofs +\def\IEEEQEDclosed{\mbox{\rule[0pt]{1.3ex}{1.3ex}}} % for a filled box +% V1.6 some journals use an open box instead that will just fit around a closed one +\def\IEEEQEDopen{{\setlength{\fboxsep}{0pt}\setlength{\fboxrule}{0.2pt}\fbox{\rule[0pt]{0pt}{1.3ex}\rule[0pt]{1.3ex}{0pt}}}} +\ifCLASSOPTIONcompsoc +\def\IEEEQED{\IEEEQEDopen} % default to open for compsoc +\else +\def\IEEEQED{\IEEEQEDclosed} % otherwise default to closed +\fi + +%V1.8 flag to indicate if QED symbol is to be shown +\newif\if@IEEEQEDshow \@IEEEQEDshowtrue +\def\IEEEproofindentspace{2\parindent}% V1.8 allow user to change indentation amount if desired +% v1.7 name change to avoid namespace collision with amsthm. Also add support +% for an optional argument. +\def\IEEEproof{\@ifnextchar[{\@IEEEproof}{\@IEEEproof[\IEEEproofname]}} +\def\@IEEEproof[#1]{\@IEEEQEDshowtrue\par\noindent\hspace{\IEEEproofindentspace}{\itshape #1: }} +\def\endIEEEproof{\if@IEEEQEDshow\hspace*{\fill}\nobreakspace\IEEEQED\fi\par} +% qedhere for equation environments, similar to AMS \qedhere +\def\IEEEQEDhereeqn{\global\@IEEEQEDshowfalse\eqno\let\eqno\relax\let\leqno\relax + \let\veqno\relax\hbox{\IEEEQED}} +% IEEE style qedhere for IEEEeqnarray and other environments +\def\IEEEQEDhere{\global\@IEEEQEDshowfalse\IEEEQED} +% command to disable QED at end of IEEEproof +\def\IEEEQEDoff{\global\@IEEEQEDshowfalse} + + +%\itemindent is set to \z@ by list, so define new temporary variable +\newdimen\@IEEEtmpitemindent + +\ifCLASSOPTIONcompsoc +% V1.8a compsoc uses bold theorem titles, a period instead of a colon, vertical spacing, and hanging indentation +% V1.8 allow long theorem names to break across lines. +% Thanks to Miquel Payaro for reporting this. +\def\@begintheorem#1#2{\@IEEEtmpitemindent\itemindent\relax + \topsep 0.2\@IEEEnormalsizeunitybaselineskip plus 0.26\@IEEEnormalsizeunitybaselineskip minus 0.05\@IEEEnormalsizeunitybaselineskip + \rmfamily\trivlist\hangindent\parindent% + \item[]\textit{\bfseries\noindent #1\ #2.} \itemindent\@IEEEtmpitemindent\relax} +\def\@opargbegintheorem#1#2#3{\@IEEEtmpitemindent\itemindent\relax +\topsep 0.2\@IEEEnormalsizeunitybaselineskip plus 0.26\@IEEEnormalsizeunitybaselineskip minus 0.05\@IEEEnormalsizeunitybaselineskip +\rmfamily\trivlist\hangindent\parindent% +% V1.6 The IEEE is back to using () around theorem names which are also in italics +% Thanks to Christian Peel for reporting this. + \item[]\textit{\bfseries\noindent #1\ #2\ (#3).} \itemindent\@IEEEtmpitemindent\relax} +% V1.7 remove bogus \unskip that caused equations in theorems to collide with +% lines below. +\def\@endtheorem{\endtrivlist\vskip 0.25\@IEEEnormalsizeunitybaselineskip plus 0.26\@IEEEnormalsizeunitybaselineskip minus 0.05\@IEEEnormalsizeunitybaselineskip} +\else +% +% noncompsoc +% +% V1.8 allow long theorem names to break across lines. +% Thanks to Miquel Payaro for reporting this. +\def\@begintheorem#1#2{\@IEEEtmpitemindent\itemindent\relax\topsep 0pt\rmfamily\trivlist% + \item[]\textit{\indent #1\ #2:} \itemindent\@IEEEtmpitemindent\relax} +\def\@opargbegintheorem#1#2#3{\@IEEEtmpitemindent\itemindent\relax\topsep 0pt\rmfamily \trivlist% +% V1.6 The IEEE is back to using () around theorem names which are also in italics +% Thanks to Christian Peel for reporting this. + \item[]\textit{\indent #1\ #2\ (#3):} \itemindent\@IEEEtmpitemindent\relax} +% V1.7 remove bogus \unskip that caused equations in theorems to collide with +% lines below. +\def\@endtheorem{\endtrivlist} +\fi + + + +% V1.6 +% display command for the section the theorem is in - so that \thesection +% is not used as this will be in Roman numerals when we want arabic. +% LaTeX2e uses \def\@thmcounter#1{\noexpand\arabic{#1}} for the theorem number +% (second part) display and \def\@thmcountersep{.} as a separator. +% V1.7 intercept calls to the section counter and reroute to \@IEEEthmcounterinsection +% to allow \appendix(ices} to override as needed. +% +% special handler for sections, allows appendix(ices) to override +\gdef\@IEEEthmcounterinsection#1{\arabic{#1}} +% string macro +\edef\@IEEEstringsection{section} + +% redefine the #1#2[#3] form of newtheorem to use a hook to \@IEEEthmcounterinsection +% if section in_counter is used +\def\@xnthm#1#2[#3]{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}\@newctr{#1}[#3]% + \edef\@IEEEstringtmp{#3} + \ifx\@IEEEstringtmp\@IEEEstringsection + \expandafter\xdef\csname the#1\endcsname{% + \noexpand\@IEEEthmcounterinsection{#3}\@thmcountersep + \@thmcounter{#1}}% + \else + \expandafter\xdef\csname the#1\endcsname{% + \expandafter\noexpand\csname the#3\endcsname \@thmcountersep + \@thmcounter{#1}}% + \fi + \global\@namedef{#1}{\@thm{#1}{#2}}% + \global\@namedef{end#1}{\@endtheorem}}} + + + +%% SET UP THE DEFAULT PAGESTYLE +\pagestyle{headings} +\pagenumbering{arabic} + +% normally the page counter starts at 1 +\setcounter{page}{1} +% however, for peerreview the cover sheet is page 0 or page -1 +% (for duplex printing) +\ifCLASSOPTIONpeerreview + \if@twoside + \setcounter{page}{-1} + \else + \setcounter{page}{0} + \fi +\fi + +% standard book class behavior - let bottom line float up and down as +% needed when single sided +\ifCLASSOPTIONtwoside\else\raggedbottom\fi +% if two column - turn on twocolumn, allow word spacings to stretch more and +% enforce a rigid position for the last lines +\ifCLASSOPTIONtwocolumn +% the peer review option delays invoking twocolumn + \ifCLASSOPTIONpeerreview\else + \twocolumn + \fi +\sloppy +\flushbottom +\fi + + + + +% \APPENDIX and \APPENDICES definitions + +% This is the \@ifmtarg command from the LaTeX ifmtarg package +% by Peter Wilson (CUA) and Donald Arseneau +% \@ifmtarg is used to determine if an argument to a command +% is present or not. +% For instance: +% \@ifmtarg{#1}{\typeout{empty}}{\typeout{has something}} +% \@ifmtarg is used with our redefined \section command if +% \appendices is invoked. +% The command \section will behave slightly differently depending +% on whether the user specifies a title: +% \section{My appendix title} +% or not: +% \section{} +% This way, we can eliminate the blank lines where the title +% would be, and the unneeded : after Appendix in the table of +% contents +\begingroup +\catcode`\Q=3 +\long\gdef\@ifmtarg#1{\@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil} +\long\gdef\@xifmtarg#1#2Q#3#4#5\@nil{#4} +\endgroup +% end of \@ifmtarg defs + + +% V1.7 +% command that allows the one time saving of the original definition +% of section to \@IEEEappendixsavesection for \appendix or \appendices +% we don't save \section here as it may be redefined later by other +% packages (hyperref.sty, etc.) +\def\@IEEEsaveoriginalsectiononce{\let\@IEEEappendixsavesection\section +\let\@IEEEsaveoriginalsectiononce\relax} + +% neat trick to grab and process the argument from \section{argument} +% we process differently if the user invoked \section{} with no +% argument (title) +% note we reroute the call to the old \section* +\def\@IEEEprocessthesectionargument#1{% +\@ifmtarg{#1}{% +\@IEEEappendixsavesection*{\appendixname\nobreakspace\thesectiondis}% +\addcontentsline{toc}{section}{\appendixname\nobreakspace\thesection}}{% +\@IEEEappendixsavesection*{\appendixname\nobreakspace\thesectiondis\\* #1}% +\addcontentsline{toc}{section}{\appendixname\nobreakspace\thesection: #1}}} + +% we use this if the user calls \section{} after +% \appendix-- which has no meaning. So, we ignore the +% command and its argument. Then, warn the user. +\def\@IEEEdestroythesectionargument#1{\typeout{** WARNING: Ignoring useless +\protect\section\space in Appendix (line \the\inputlineno).}} + + +% remember \thesection forms will be displayed in \ref calls +% and in the Table of Contents. +% The \sectiondis form is used in the actual heading itself + +% appendix command for one single appendix +% normally has no heading. However, if you want a +% heading, you can do so via the optional argument: +% \appendix[Optional Heading] +\def\appendix{\relax} +\renewcommand{\appendix}[1][]{\@IEEEsaveoriginalsectiononce\par + % v1.6 keep hyperref's identifiers unique + \gdef\theHsection{Appendix.A}% + % v1.6 adjust hyperref's string name for the section + \xdef\Hy@chapapp{appendix}% + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{subsubsection}{0}% + \setcounter{paragraph}{0}% + \gdef\thesection{A}% + \gdef\thesectiondis{}% + \gdef\thesubsection{\Alph{subsection}}% + \gdef\@IEEEthmcounterinsection##1{A} + \refstepcounter{section}% update the \ref counter + \@ifmtarg{#1}{\@IEEEappendixsavesection*{\appendixname}% + \addcontentsline{toc}{section}{\appendixname}}{% + \@IEEEappendixsavesection*{\appendixname\nobreakspace\\* #1}% + \addcontentsline{toc}{section}{\appendixname: #1}}% + % redefine \section command for appendix + % leave \section* as is + \def\section{\@ifstar{\@IEEEappendixsavesection*}{% + \@IEEEdestroythesectionargument}}% throw out the argument + % of the normal form +} + + + +% appendices command for multiple appendices +% user then calls \section with an argument (possibly empty) to +% declare the individual appendices +\def\appendices{\@IEEEsaveoriginalsectiononce\par + % v1.6 keep hyperref's identifiers unique + \gdef\theHsection{Appendix.\Alph{section}}% + % v1.6 adjust hyperref's string name for the section + \xdef\Hy@chapapp{appendix}% + \setcounter{section}{-1}% we want \refstepcounter to use section 0 + \setcounter{subsection}{0}% + \setcounter{subsubsection}{0}% + \setcounter{paragraph}{0}% + \ifCLASSOPTIONromanappendices% + \gdef\thesection{\Roman{section}}% + \gdef\thesectiondis{\Roman{section}}% + \@IEEEcompsocconfonly{\gdef\thesectiondis{\Roman{section}.}}% + \gdef\@IEEEthmcounterinsection##1{A\arabic{##1}} + \else% + \gdef\thesection{\Alph{section}}% + \gdef\thesectiondis{\Alph{section}}% + \@IEEEcompsocconfonly{\gdef\thesectiondis{\Alph{section}.}}% + \gdef\@IEEEthmcounterinsection##1{\Alph{##1}} + \fi% + \refstepcounter{section}% update the \ref counter + \setcounter{section}{0}% NEXT \section will be the FIRST appendix + % redefine \section command for appendices + % leave \section* as is + \def\section{\@ifstar{\@IEEEappendixsavesection*}{% process the *-form + \refstepcounter{section}% or is a new section so, + \@IEEEprocessthesectionargument}}% process the argument + % of the normal form +} + + + +% V1.7 compoc uses nonbold drop cap and small caps word style +\ifCLASSOPTIONcompsoc + \def\IEEEPARstartFONTSTYLE{\mdseries} + \def\IEEEPARstartWORDFONTSTYLE{\scshape} + \def\IEEEPARstartWORDCAPSTYLE{\relax} +\fi +% +% +% \IEEEPARstart +% Definition for the big two line drop cap letter at the beginning of the +% first paragraph of journal papers. The first argument is the first letter +% of the first word, the second argument is the remaining letters of the +% first word which will be rendered in upper case. +% In V1.6 this has been completely rewritten to: +% +% 1. no longer have problems when the user begins an environment +% within the paragraph that uses \IEEEPARstart. +% 2. auto-detect and use the current font family +% 3. revise handling of the space at the end of the first word so that +% interword glue will now work as normal. +% 4. produce correctly aligned edges for the (two) indented lines. +% +% We generalize things via control macros - playing with these is fun too. +% +% V1.7 added more control macros to make it easy for IEEEtrantools.sty users +% to change the font style. +% +% the number of lines that are indented to clear it +% may need to increase if using decenders +\providecommand{\IEEEPARstartDROPLINES}{2} +% minimum number of lines left on a page to allow a \@IEEEPARstart +% Does not take into consideration rubber shrink, so it tends to +% be overly cautious +\providecommand{\IEEEPARstartMINPAGELINES}{2} +% V1.7 the height of the drop cap is adjusted to match the height of this text +% in the current font (when \IEEEPARstart is called). +\providecommand{\IEEEPARstartHEIGHTTEXT}{T} +% the depth the letter is lowered below the baseline +% the height (and size) of the letter is determined by the sum +% of this value and the height of the \IEEEPARstartHEIGHTTEXT in the current +% font. It is a good idea to set this value in terms of the baselineskip +% so that it can respond to changes therein. +\providecommand{\IEEEPARstartDROPDEPTH}{1.1\baselineskip} +% V1.7 the font the drop cap will be rendered in, +% can take zero or one argument. +\providecommand{\IEEEPARstartFONTSTYLE}{\bfseries} +% V1.7 any additional, non-font related commands needed to modify +% the drop cap letter, can take zero or one argument. +\providecommand{\IEEEPARstartCAPSTYLE}{\MakeUppercase} +% V1.7 the font that will be used to render the rest of the word, +% can take zero or one argument. +\providecommand{\IEEEPARstartWORDFONTSTYLE}{\relax} +% V1.7 any additional, non-font related commands needed to modify +% the rest of the word, can take zero or one argument. +\providecommand{\IEEEPARstartWORDCAPSTYLE}{\MakeUppercase} +% This is the horizontal separation distance from the drop letter to the main text. +% Lengths that depend on the font (e.g., ex, em, etc.) will be referenced +% to the font that is active when \IEEEPARstart is called. +\providecommand{\IEEEPARstartSEP}{0.15em} +% V1.7 horizontal offset applied to the left of the drop cap. +\providecommand{\IEEEPARstartHOFFSET}{0em} +% V1.7 Italic correction command applied at the end of the drop cap. +\providecommand{\IEEEPARstartITLCORRECT}{\/} + +% width of the letter output, set globally. Can be used in \IEEEPARstartSEP +% or \IEEEPARstartHOFFSET, but not the height lengths. +\newdimen\IEEEPARstartletwidth +\IEEEPARstartletwidth 0pt\relax + +% definition of \IEEEPARstart +% THIS IS A CONTROLLED SPACING AREA, DO NOT ALLOW SPACES WITHIN THESE LINES +% +% The token \@IEEEPARstartfont will be globally defined after the first use +% of \IEEEPARstart and will be a font command which creates the big letter +% The first argument is the first letter of the first word and the second +% argument is the rest of the first word(s). +\def\IEEEPARstart#1#2{\par{% +% if this page does not have enough space, break it and lets start +% on a new one +\@IEEEtranneedspace{\IEEEPARstartMINPAGELINES\baselineskip}{\relax}% +% V1.7 move this up here in case user uses \textbf for \IEEEPARstartFONTSTYLE +% which uses command \leavevmode which causes an unwanted \indent to be issued +\noindent +% calculate the desired height of the big letter +% it extends from the top of \IEEEPARstartHEIGHTTEXT in the current font +% down to \IEEEPARstartDROPDEPTH below the current baseline +\settoheight{\@IEEEtrantmpdimenA}{\IEEEPARstartHEIGHTTEXT}% +\addtolength{\@IEEEtrantmpdimenA}{\IEEEPARstartDROPDEPTH}% +% extract the name of the current font in bold +% and place it in \@IEEEPARstartFONTNAME +\def\@IEEEPARstartGETFIRSTWORD##1 ##2\relax{##1}% +{\IEEEPARstartFONTSTYLE{\selectfont\edef\@IEEEPARstartFONTNAMESPACE{\fontname\font\space}% +\xdef\@IEEEPARstartFONTNAME{\expandafter\@IEEEPARstartGETFIRSTWORD\@IEEEPARstartFONTNAMESPACE\relax}}}% +% define a font based on this name with a point size equal to the desired +% height of the drop letter +\font\@IEEEPARstartsubfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenA\relax% +% save this value as a counter (integer) value (sp points) +\@IEEEtrantmpcountA=\@IEEEtrantmpdimenA% +% now get the height of the actual letter produced by this font size +\settoheight{\@IEEEtrantmpdimenB}{\@IEEEPARstartsubfont\IEEEPARstartCAPSTYLE{#1}}% +% If something bogus happens like the first argument is empty or the +% current font is strange, do not allow a zero height. +\ifdim\@IEEEtrantmpdimenB=0pt\relax% +\typeout{** WARNING: IEEEPARstart drop letter has zero height! (line \the\inputlineno)}% +\typeout{ Forcing the drop letter font size to 10pt.}% +\@IEEEtrantmpdimenB=10pt% +\fi% +% and store it as a counter +\@IEEEtrantmpcountB=\@IEEEtrantmpdimenB% +% Since a font size doesn't exactly correspond to the height of the capital +% letters in that font, the actual height of the letter, \@IEEEtrantmpcountB, +% will be less than that desired, \@IEEEtrantmpcountA +% we need to raise the font size, \@IEEEtrantmpdimenA +% by \@IEEEtrantmpcountA / \@IEEEtrantmpcountB +% But, TeX doesn't have floating point division, so we have to use integer +% division. Hence the use of the counters. +% We need to reduce the denominator so that the loss of the remainder will +% have minimal affect on the accuracy of the result +\divide\@IEEEtrantmpcountB by 200% +\divide\@IEEEtrantmpcountA by \@IEEEtrantmpcountB% +% Then reequalize things when we use TeX's ability to multiply by +% floating point values +\@IEEEtrantmpdimenB=0.005\@IEEEtrantmpdimenA% +\multiply\@IEEEtrantmpdimenB by \@IEEEtrantmpcountA% +% \@IEEEPARstartfont is globaly set to the calculated font of the big letter +% We need to carry this out of the local calculation area to to create the +% big letter. +\global\font\@IEEEPARstartfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenB% +% Now set \@IEEEtrantmpdimenA to the width of the big letter +% We need to carry this out of the local calculation area to set the +% hanging indent +\settowidth{\global\@IEEEtrantmpdimenA}{\@IEEEPARstartfont +\IEEEPARstartCAPSTYLE{#1\IEEEPARstartITLCORRECT}}}% +% end of the isolated calculation environment +\global\IEEEPARstartletwidth\@IEEEtrantmpdimenA\relax% +% add in the extra clearance we want +\advance\@IEEEtrantmpdimenA by \IEEEPARstartSEP\relax% +% add in the optional offset +\advance\@IEEEtrantmpdimenA by \IEEEPARstartHOFFSET\relax% +% V1.7 don't allow negative offsets to produce negative hanging indents +\@IEEEtrantmpdimenB\@IEEEtrantmpdimenA +\ifnum\@IEEEtrantmpdimenB < 0 \@IEEEtrantmpdimenB 0pt\fi +% \@IEEEtrantmpdimenA has the width of the big letter plus the +% separation space and \@IEEEPARstartfont is the font we need to use +% Now, we make the letter and issue the hanging indent command +% The letter is placed in a box of zero width and height so that other +% text won't be displaced by it. +\hangindent\@IEEEtrantmpdimenB\hangafter=-\IEEEPARstartDROPLINES% +\makebox[0pt][l]{\hspace{-\@IEEEtrantmpdimenA}% +\raisebox{-\IEEEPARstartDROPDEPTH}[0pt][0pt]{\hspace{\IEEEPARstartHOFFSET}% +\@IEEEPARstartfont\IEEEPARstartCAPSTYLE{#1\IEEEPARstartITLCORRECT}% +\hspace{\IEEEPARstartSEP}}}% +{\IEEEPARstartWORDFONTSTYLE{\IEEEPARstartWORDCAPSTYLE{\selectfont#2}}}} + + + + +% determines if the space remaining on a given page is equal to or greater +% than the specified space of argument one +% if not, execute argument two (only if the remaining space is greater than zero) +% and issue a \newpage +% +% example: \@IEEEtranneedspace{2in}{\vfill} +% +% Does not take into consideration rubber shrinkage, so it tends to +% be overly cautious +% Based on an example posted by Donald Arseneau +% Note this macro uses \@IEEEtrantmpdimenB internally for calculations, +% so DO NOT PASS \@IEEEtrantmpdimenB to this routine +% if you need a dimen register, import with \@IEEEtrantmpdimenA instead +\def\@IEEEtranneedspace#1#2{\penalty-100\begingroup%shield temp variable +\@IEEEtrantmpdimenB\pagegoal\advance\@IEEEtrantmpdimenB-\pagetotal% space left +\ifdim #1>\@IEEEtrantmpdimenB\relax% not enough space left +\ifdim\@IEEEtrantmpdimenB>\z@\relax #2\fi% +\newpage% +\fi\endgroup} + + + +% IEEEbiography ENVIRONMENT +% Allows user to enter biography leaving place for picture (adapts to font size) +% As of V1.5, a new optional argument allows you to have a real graphic! +% V1.5 and later also fixes the "colliding biographies" which could happen when a +% biography's text was shorter than the space for the photo. +% MDS 7/2001 +% V1.6 prevent multiple biographies from making multiple TOC entries +\newif\if@IEEEbiographyTOCentrynotmade +\global\@IEEEbiographyTOCentrynotmadetrue + +% biography counter so hyperref can jump directly to the biographies +% and not just the previous section +\newcounter{IEEEbiography} +\setcounter{IEEEbiography}{0} + +% photo area size +\def\@IEEEBIOphotowidth{1.0in} % width of the biography photo area +\def\@IEEEBIOphotodepth{1.25in} % depth (height) of the biography photo area +% area cleared for photo +\def\@IEEEBIOhangwidth{1.14in} % width cleared for the biography photo area +\def\@IEEEBIOhangdepth{1.25in} % depth cleared for the biography photo area + % actual depth will be a multiple of + % \baselineskip, rounded up +\def\@IEEEBIOskipN{4\baselineskip}% nominal value of the vskip above the biography + +\newenvironment{IEEEbiography}[2][]{\normalfont\@IEEEcompsoconly{\sffamily}\footnotesize% +\unitlength 1in\parskip=0pt\par\parindent 1em\interlinepenalty500% +% we need enough space to support the hanging indent +% the nominal value of the spacer +% and one extra line for good measure +\@IEEEtrantmpdimenA=\@IEEEBIOhangdepth% +\advance\@IEEEtrantmpdimenA by \@IEEEBIOskipN% +\advance\@IEEEtrantmpdimenA by 1\baselineskip% +% if this page does not have enough space, break it and lets start +% with a new one +\@IEEEtranneedspace{\@IEEEtrantmpdimenA}{\relax}% +% nominal spacer can strech, not shrink use 1fil so user can out stretch with \vfill +\vskip \@IEEEBIOskipN plus 1fil minus 0\baselineskip% +% the default box for where the photo goes +\def\@IEEEtempbiographybox{{\setlength{\fboxsep}{0pt}\framebox{% +\begin{minipage}[b][\@IEEEBIOphotodepth][c]{\@IEEEBIOphotowidth}\centering PLACE\\ PHOTO\\ HERE \end{minipage}}}}% +% +% detect if the optional argument was supplied, this requires the +% \@ifmtarg command as defined in the appendix section above +% and if so, override the default box with what they want +\@ifmtarg{#1}{\relax}{\def\@IEEEtempbiographybox{\mbox{\begin{minipage}[b][\@IEEEBIOphotodepth][c]{\@IEEEBIOphotowidth}% +\centering% +#1% +\end{minipage}}}}% end if optional argument supplied +% Make an entry into the table of contents only if we have not done so before +\if@IEEEbiographyTOCentrynotmade% +% link labels to the biography counter so hyperref will jump +% to the biography, not the previous section +\setcounter{IEEEbiography}{-1}% +\refstepcounter{IEEEbiography}% +\addcontentsline{toc}{section}{Biographies}% +\global\@IEEEbiographyTOCentrynotmadefalse% +\fi% +% one more biography +\refstepcounter{IEEEbiography}% +% Make an entry for this name into the table of contents +\addcontentsline{toc}{subsection}{#2}% +% V1.6 properly handle if a new paragraph should occur while the +% hanging indent is still active. Do this by redefining \par so +% that it will not start a new paragraph. (But it will appear to the +% user as if it did.) Also, strip any leading pars, newlines, or spaces. +\let\@IEEEBIOORGparCMD=\par% save the original \par command +\edef\par{\hfil\break\indent}% the new \par will not be a "real" \par +\settoheight{\@IEEEtrantmpdimenA}{\@IEEEtempbiographybox}% get height of biography box +\@IEEEtrantmpdimenB=\@IEEEBIOhangdepth% +\@IEEEtrantmpcountA=\@IEEEtrantmpdimenB% countA has the hang depth +\divide\@IEEEtrantmpcountA by \baselineskip% calculates lines needed to produce the hang depth +\advance\@IEEEtrantmpcountA by 1% ensure we overestimate +% set the hanging indent +\hangindent\@IEEEBIOhangwidth% +\hangafter-\@IEEEtrantmpcountA% +% reference the top of the photo area to the top of a capital T +\settoheight{\@IEEEtrantmpdimenB}{\mbox{T}}% +% set the photo box, give it zero width and height so as not to disturb anything +\noindent\makebox[0pt][l]{\hspace{-\@IEEEBIOhangwidth}\raisebox{\@IEEEtrantmpdimenB}[0pt][0pt]{% +\raisebox{-\@IEEEBIOphotodepth}[0pt][0pt]{\@IEEEtempbiographybox}}}% +% now place the author name and begin the bio text +\noindent\textbf{#2\ }\@IEEEgobbleleadPARNLSP}{\relax\let\par=\@IEEEBIOORGparCMD\par% +% 7/2001 V1.5 detect when the biography text is shorter than the photo area +% and pad the unused area - preventing a collision from the next biography entry +% MDS +\ifnum \prevgraf <\@IEEEtrantmpcountA\relax% detect when the biography text is shorter than the photo + \advance\@IEEEtrantmpcountA by -\prevgraf% calculate how many lines we need to pad + \advance\@IEEEtrantmpcountA by -1\relax% we compensate for the fact that we indented an extra line + \@IEEEtrantmpdimenA=\baselineskip% calculate the length of the padding + \multiply\@IEEEtrantmpdimenA by \@IEEEtrantmpcountA% + \noindent\rule{0pt}{\@IEEEtrantmpdimenA}% insert an invisible support strut +\fi% +\par\normalfont} + + + +% V1.6 +% added biography without a photo environment +\newenvironment{IEEEbiographynophoto}[1]{% +% Make an entry into the table of contents only if we have not done so before +\if@IEEEbiographyTOCentrynotmade% +% link labels to the biography counter so hyperref will jump +% to the biography, not the previous section +\setcounter{IEEEbiography}{-1}% +\refstepcounter{IEEEbiography}% +\addcontentsline{toc}{section}{Biographies}% +\global\@IEEEbiographyTOCentrynotmadefalse% +\fi% +% one more biography +\refstepcounter{IEEEbiography}% +% Make an entry for this name into the table of contents +\addcontentsline{toc}{subsection}{#1}% +\normalfont\@IEEEcompsoconly{\sffamily}\footnotesize\interlinepenalty500% +\vskip 4\baselineskip plus 1fil minus 0\baselineskip% +\parskip=0pt\par% +\noindent\textbf{#1\ }\@IEEEgobbleleadPARNLSP}{\relax\par\normalfont} + + +% provide the user with some old font commands +% got this from article.cls +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} + + +% SPECIAL PAPER NOTICE COMMANDS +% +% holds the special notice text +\def\@IEEEspecialpapernotice{\relax} + +% for special papers, like invited papers, the user can do: +% \IEEEspecialpapernotice{(Invited Paper)} before \maketitle +\def\IEEEspecialpapernotice#1{\ifCLASSOPTIONconference% +\def\@IEEEspecialpapernotice{{\sublargesize\textit{#1}\vspace*{1em}}}% +\else% +\def\@IEEEspecialpapernotice{{\\*[1.5ex]\sublargesize\textit{#1}}\vspace*{-2ex}}% +\fi} + + + + +% PUBLISHER ID COMMANDS +% to insert a publisher's ID footer +% V1.6 \IEEEpubid has been changed so that the change in page size and style +% occurs in \maketitle. \IEEEpubid must now be issued prior to \maketitle +% use \IEEEpubidadjcol as before - in the second column of the title page +% These changes allow \maketitle to take the reduced page height into +% consideration when dynamically setting the space between the author +% names and the maintext. +% +% the amount the main text is pulled up to make room for the +% publisher's ID footer +% The IEEE uses about 1.3\baselineskip for journals, +% dynamic title spacing will clean up the fraction +\def\@IEEEpubidpullup{1.3\baselineskip} +\ifCLASSOPTIONtechnote +% for technotes it must be an integer of baselineskip as there can be no +% dynamic title spacing for two column mode technotes (the title is in the +% in first column) and we should maintain an integer number of lines in the +% second column +% There are some examples (such as older issues of "Transactions on +% Information Theory") in which the IEEE really pulls the text off the ID for +% technotes - about 0.55in (or 4\baselineskip). We'll use 2\baselineskip +% and call it even. +\def\@IEEEpubidpullup{2\baselineskip} +\fi + +% V1.7 compsoc does not use a pullup +\ifCLASSOPTIONcompsoc +\def\@IEEEpubidpullup{0pt} +\fi + +% holds the ID text +\def\@IEEEpubid{\relax} + +% flag so \maketitle can tell if \IEEEpubid was called +\newif\if@IEEEusingpubid +\global\@IEEEusingpubidfalse +% issue this command in the page to have the ID at the bottom +% V1.6 use before \maketitle +\def\IEEEpubid#1{\def\@IEEEpubid{#1}\global\@IEEEusingpubidtrue} + + +% command which will pull up (shorten) the column it is executed in +% to make room for the publisher ID. Place in the second column of +% the title page when using \IEEEpubid +% Is smart enough not to do anything when in single column text or +% if the user hasn't called \IEEEpubid +% currently needed in for the second column of a page with the +% publisher ID. If not needed in future releases, please provide this +% command and define it as \relax for backward compatibility +% v1.6b do not allow command to operate if the peer review option has been +% selected because \IEEEpubidadjcol will not be on the cover page. +% V1.7 do nothing if compsoc +\def\IEEEpubidadjcol{\ifCLASSOPTIONcompsoc\else\ifCLASSOPTIONpeerreview\else +\if@twocolumn\if@IEEEusingpubid\enlargethispage{-\@IEEEpubidpullup}\fi\fi\fi\fi} + +% Special thanks to Peter Wilson, Daniel Luecking, and the other +% gurus at comp.text.tex, for helping me to understand how best to +% implement the IEEEpubid command in LaTeX. + + + +%% Lockout some commands under various conditions + +% general purpose bit bucket +\newsavebox{\@IEEEtranrubishbin} + +% flags to prevent multiple warning messages +\newif\if@IEEEWARNthanks +\newif\if@IEEEWARNIEEEPARstart +\newif\if@IEEEWARNIEEEbiography +\newif\if@IEEEWARNIEEEbiographynophoto +\newif\if@IEEEWARNIEEEpubid +\newif\if@IEEEWARNIEEEpubidadjcol +\newif\if@IEEEWARNIEEEmembership +\newif\if@IEEEWARNIEEEaftertitletext +\@IEEEWARNthankstrue +\@IEEEWARNIEEEPARstarttrue +\@IEEEWARNIEEEbiographytrue +\@IEEEWARNIEEEbiographynophototrue +\@IEEEWARNIEEEpubidtrue +\@IEEEWARNIEEEpubidadjcoltrue +\@IEEEWARNIEEEmembershiptrue +\@IEEEWARNIEEEaftertitletexttrue + + +%% Lockout some commands when in various modes, but allow them to be restored if needed +%% +% save commands which might be locked out +% so that the user can later restore them if needed +\let\@IEEESAVECMDthanks\thanks +\let\@IEEESAVECMDIEEEPARstart\IEEEPARstart +\let\@IEEESAVECMDIEEEbiography\IEEEbiography +\let\@IEEESAVECMDendIEEEbiography\endIEEEbiography +\let\@IEEESAVECMDIEEEbiographynophoto\IEEEbiographynophoto +\let\@IEEESAVECMDendIEEEbiographynophoto\endIEEEbiographynophoto +\let\@IEEESAVECMDIEEEpubid\IEEEpubid +\let\@IEEESAVECMDIEEEpubidadjcol\IEEEpubidadjcol +\let\@IEEESAVECMDIEEEmembership\IEEEmembership +\let\@IEEESAVECMDIEEEaftertitletext\IEEEaftertitletext + + +% disable \IEEEPARstart when in draft mode +% This may have originally been done because the pre-V1.6 drop letter +% algorithm had problems with a non-unity baselinestretch +% At any rate, it seems too formal to have a drop letter in a draft +% paper. +\ifCLASSOPTIONdraftcls +\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** ATTENTION: \noexpand\IEEEPARstart + is disabled in draft mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse} +\fi +% and for technotes +\ifCLASSOPTIONtechnote +\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** WARNING: \noexpand\IEEEPARstart + is locked out for technotes (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse} +\fi + + +% lockout unneeded commands when in conference mode +\ifCLASSOPTIONconference +% when locked out, \thanks, \IEEEbiography, \IEEEbiographynophoto, \IEEEpubid, +% \IEEEmembership and \IEEEaftertitletext will all swallow their given text. +% \IEEEPARstart will output a normal character instead +% warn the user about these commands only once to prevent the console screen +% from filling up with redundant messages +\def\thanks#1{\if@IEEEWARNthanks\typeout{** WARNING: \noexpand\thanks + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNthanksfalse} +\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** WARNING: \noexpand\IEEEPARstart + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse} + + +% LaTeX treats environments and commands with optional arguments differently. +% the actual ("internal") command is stored as \\commandname +% (accessed via \csname\string\commandname\endcsname ) +% the "external" command \commandname is a macro with code to determine +% whether or not the optional argument is presented and to provide the +% default if it is absent. So, in order to save and restore such a command +% we would have to save and restore \\commandname as well. But, if LaTeX +% ever changes the way it names the internal names, the trick would break. +% Instead let us just define a new environment so that the internal +% name can be left undisturbed. +\newenvironment{@IEEEbogusbiography}[2][]{\if@IEEEWARNIEEEbiography\typeout{** WARNING: \noexpand\IEEEbiography + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEbiographyfalse% +\setbox\@IEEEtranrubishbin\vbox\bgroup}{\egroup\relax} +% and make biography point to our bogus biography +\let\IEEEbiography=\@IEEEbogusbiography +\let\endIEEEbiography=\end@IEEEbogusbiography + +\renewenvironment{IEEEbiographynophoto}[1]{\if@IEEEWARNIEEEbiographynophoto\typeout{** WARNING: \noexpand\IEEEbiographynophoto + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEbiographynophotofalse% +\setbox\@IEEEtranrubishbin\vbox\bgroup}{\egroup\relax} + +\def\IEEEpubid#1{\if@IEEEWARNIEEEpubid\typeout{** WARNING: \noexpand\IEEEpubid + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEpubidfalse} +\def\IEEEpubidadjcol{\if@IEEEWARNIEEEpubidadjcol\typeout{** WARNING: \noexpand\IEEEpubidadjcol + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEpubidadjcolfalse} +\def\IEEEmembership#1{\if@IEEEWARNIEEEmembership\typeout{** WARNING: \noexpand\IEEEmembership + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEmembershipfalse} +\def\IEEEaftertitletext#1{\if@IEEEWARNIEEEaftertitletext\typeout{** WARNING: \noexpand\IEEEaftertitletext + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEaftertitletextfalse} +\fi + + +% provide a way to restore the commands that are locked out +\def\IEEEoverridecommandlockouts{% +\typeout{** ATTENTION: Overriding command lockouts (line \the\inputlineno).}% +\let\thanks\@IEEESAVECMDthanks% +\let\IEEEPARstart\@IEEESAVECMDIEEEPARstart% +\let\IEEEbiography\@IEEESAVECMDIEEEbiography% +\let\endIEEEbiography\@IEEESAVECMDendIEEEbiography% +\let\IEEEbiographynophoto\@IEEESAVECMDIEEEbiographynophoto% +\let\endIEEEbiographynophoto\@IEEESAVECMDendIEEEbiographynophoto% +\let\IEEEpubid\@IEEESAVECMDIEEEpubid% +\let\IEEEpubidadjcol\@IEEESAVECMDIEEEpubidadjcol% +\let\IEEEmembership\@IEEESAVECMDIEEEmembership% +\let\IEEEaftertitletext\@IEEESAVECMDIEEEaftertitletext} + + + +% need a backslash character for typeout output +{\catcode`\|=0 \catcode`\\=12 +|xdef|@IEEEbackslash{\}} + + +% hook to allow easy disabling of all legacy warnings +\def\@IEEElegacywarn#1#2{\typeout{** ATTENTION: \@IEEEbackslash #1 is deprecated (line \the\inputlineno). +Use \@IEEEbackslash #2 instead.}} + + +% provide some legacy IEEEtran commands +\def\IEEEcompsoctitleabstractindextext{\@IEEElegacywarn{IEEEcompsoctitleabstractindextext}{IEEEtitleabstractindextext}\IEEEtitleabstractindextext} +\def\IEEEdisplaynotcompsoctitleabstractindextext{\@IEEElegacywarn{IEEEdisplaynotcompsoctitleabstractindextext}{IEEEdisplaynontitleabstractindextext}\IEEEdisplaynontitleabstractindextext} +% provide some legacy IEEEtran environments + + +% V1.8a no more support for these legacy commands +%\def\authorblockA{\@IEEElegacywarn{authorblockA}{IEEEauthorblockA}\IEEEauthorblockA} +%\def\authorblockN{\@IEEElegacywarn{authorblockN}{IEEEauthorblockN}\IEEEauthorblockN} +%\def\authorrefmark{\@IEEElegacywarn{authorrefmark}{IEEEauthorrefmark}\IEEEauthorrefmark} +%\def\PARstart{\@IEEElegacywarn{PARstart}{IEEEPARstart}\IEEEPARstart} +%\def\pubid{\@IEEElegacywarn{pubid}{IEEEpubid}\IEEEpubid} +%\def\pubidadjcol{\@IEEElegacywarn{pubidadjcol}{IEEEpubidadjcol}\IEEEpubidadjcol} +%\def\specialpapernotice{\@IEEElegacywarn{specialpapernotice}{IEEEspecialpapernotice}\IEEEspecialpapernotice} +% and environments +%\def\keywords{\@IEEElegacywarn{keywords}{IEEEkeywords}\IEEEkeywords} +%\def\endkeywords{\endIEEEkeywords} +% V1.8 no more support for legacy IED list commands +%\let\labelindent\IEEElabelindent +%\def\calcleftmargin{\@IEEElegacywarn{calcleftmargin}{IEEEcalcleftmargin}\IEEEcalcleftmargin} +%\def\setlabelwidth{\@IEEElegacywarn{setlabelwidth}{IEEEsetlabelwidth}\IEEEsetlabelwidth} +%\def\usemathlabelsep{\@IEEElegacywarn{usemathlabelsep}{IEEEusemathlabelsep}\IEEEusemathlabelsep} +%\def\iedlabeljustifyc{\@IEEElegacywarn{iedlabeljustifyc}{IEEEiedlabeljustifyc}\IEEEiedlabeljustifyc} +%\def\iedlabeljustifyl{\@IEEElegacywarn{iedlabeljustifyl}{IEEEiedlabeljustifyl}\IEEEiedlabeljustifyl} +%\def\iedlabeljustifyr{\@IEEElegacywarn{iedlabeljustifyr}{IEEEiedlabeljustifyr}\IEEEiedlabeljustifyr} +% V1.8 no more support for QED and proof stuff +%\def\QED{\@IEEElegacywarn{QED}{IEEEQED}\IEEEQED} +%\def\QEDclosed{\@IEEElegacywarn{QEDclosed}{IEEEQEDclosed}\IEEEQEDclosed} +%\def\QEDopen{\@IEEElegacywarn{QEDopen}{IEEEQEDopen}\IEEEQEDopen} +%\AtBeginDocument{\def\proof{\@IEEElegacywarn{proof}{IEEEproof}\IEEEproof}\def\endproof{\endIEEEproof}} +% V1.8 no longer support biography or biographynophoto +%\def\biography{\@IEEElegacywarn{biography}{IEEEbiography}\IEEEbiography} +%\def\biographynophoto{\@IEEElegacywarn{biographynophoto}{IEEEbiographynophoto}\IEEEbiographynophoto} +%\def\endbiography{\endIEEEbiography} +%\def\endbiographynophoto{\endIEEEbiographynophoto} +% V1.7 and later no longer supports \overrideIEEEmargins +%\def\overrideIEEEmargins{% +%\typeout{** WARNING: \string\overrideIEEEmargins \space no longer supported (line \the\inputlineno).}% +%\typeout{** Use the \string\CLASSINPUTinnersidemargin, \string\CLASSINPUToutersidemargin \space controls instead.}} + +\endinput + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% End of IEEEtran.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%% +% That's all folks! + diff --git a/cs_capstone_documents/spring_midterm_progress_report/figures/gantt_image.pdf b/cs_capstone_documents/spring_midterm_progress_report/figures/gantt_image.pdf new file mode 100644 index 0000000000000000000000000000000000000000..bd8d1aeb0ab8ade38e067d21c334e71f5c41dba8 GIT binary patch literal 781980 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 z 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

@##An!=#a0h^<;B`gCd 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%0A^|s?LW~14WmSM_yCmURc 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%0D%y?qbK!9zkVk3 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%0DnB+lm&2b0(k?Baq=8*5YC_SiT3z`QM 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

_SLMsV`0B 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 z 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 $3smln2G?o_%litS`Cwm7aNd@VlXPC8SO&a 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 SB>U$-{pWwK^!1 Using the shell for command lines is not safe, since special +# characters can cause lots of mayhem. +# It will therefore be a good idea to sanitize filenames. +# +# I've sanitized all calls out: +# a. system and exec use a single argument, which forces +# use of shell, under all circumstances +# Thus I can safely use quotes on filenames: They will be handled by +# the shell under UNIX, and simply passed on to the program under MSWin32. +# b. I reorganized Run, Run_Detached to use single command line +# c. All calls to Run and Run_Detached have quoted filenames. +# d. So if a space-free filename with wildcards is given on latexmk's +# command line, and it globs to space-containing filename(s), that +# works (fptex on home computer, native NT tex) +# e. ====> But globbing fails: the glob function takes space as filename +# separator. ==================== + +#================= TO DO ================ +# +# 1. See ?? ESPECIALLY $MSWin_fudge_break +# 2. Check fudged conditions in looping and make_files +# 3. Should not completely abort after a run that ends in failure from latex +# Missing input files (including via custom dependency) should be checked for +# a change in status +# If sources for missing files from custom dependency +# are available, then do a rerun +# If sources of any kind become available rerun (esp. for pvc) +# rerun +# Must parse log_file after unsuccessful run of latex: it may give +# information about missing files. +# 4. Check file of bug reports and requests +# 5. Rationalize bibtex warnings and errors. Two almost identical routines. +# Should 1. Use single routine +# 2. Convert errors to failure only in calling routine +# 3. Save first warning/error. + +# ?? Use of generated_exts arrays and hashes needs rationalization + +# To do: +# Rationalize again handling of include files. +# Now I use kpsewhich to do searches, if file not found +# (How do I avoid getting slowed down too much?) +# Document the assumptions at each stage of processing algorithm. +# Option to restart previewer automatically, if it dies under -pvc +# Test for already running previewer gets wrong answer if another +# process has the viewed file in its command line + +$my_name = 'latexmk'; +$My_name = 'Latexmk'; +$version_num = '4.52c'; +$version_details = "$My_name, John Collins, 19 Jan. 2017"; + +use Config; +use File::Basename; +use File::Copy; +use File::Glob ':glob'; # Better glob. Does not use space as item separator. +use File::Path 2.08 qw( make_path ); +use FileHandle; +use File::Find; +use List::Util qw( max ); +use Cwd; # To be able to change cwd +use Cwd "chdir"; # Ensure $ENV{PWD} tracks cwd +use Digest::MD5; + +#use strict; + +# The following variables are assigned once and then used in symbolic +# references, so we need to avoid warnings 'name used only once': +use vars qw( $dvi_update_command $ps_update_command $pdf_update_command ); + +# Translation of signal names to numbers and vv: +%signo = (); +@signame = (); +if ( defined $Config{sig_name} ) { + $i = 0; + foreach $name (split('\s+', $Config{sig_name})) { + $signo{$name} = $i; + $signame[$i] = $name; + $i++; + } +} +else { + warn "Something wrong with the perl configuration: No signals?\n"; +} + +## Copyright John Collins 1998-2017 +## (username jcc8 at node psu.edu) +## (and thanks to David Coppit (username david at node coppit.org) +## for suggestions) +## Copyright Evan McLean +## (modifications up to version 2) +## Copyright 1992 by David J. Musliner and The University of Michigan. +## (original version) +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +## +## +## +## NEW FEATURES, since v. 2.0: +## 1. Correct algorithm for deciding how many times to run latex: +## based on whether source file(s) change between runs +## 2. Continuous preview works, and can be of ps file or dvi file +## 3. pdf creation by pdflatex possible +## 4. Defaults for commands are OS dependent. +## 5. Parsing of log file instead of source file is used to +## obtain dependencies, by default. +## +## Modification log from 9 Dec 2011 onwards in detail +## +## 12 Jan 2012 STILL NEED TO DOCUMENT some items below +## +## 19 Jan 2017 John Collins Make -jobname work with -pdfxe and -pdflua +## (v. 4.53c) +## 17 Jan 2017 John Collins Fix bbl file detection bug. +## Bbl files were previously only identified +## from occurrence as input files in log +## file rather than from fls as well. +## 16 Jan 2017 John Collins Clean up +## Add extra item to @file_not_found for +## xelatex's characteristic message. +## 14 Jan 2017 John Collins Fix some diagnostics. +## Detect graphics candidates in log file from +## <...> constructs. +## Don't look in log file for input files in the +## (...) and <...> constructs unless forced to +## by lack of up-to-date fls file. +## 13 Jan 2017 John Collins Kpsewhich diagnostics: also if not +## silent, or when $kpsewhich_show set. +## Optimize calls to kpsewhich to find files +## given by lines put in log file by +## graphics package. +## Work around LuaTeX line-wrapping bug. (LuaTeX 0.95.0) +## 12 Jan 2017 John Collins Improve error reporting on failed run. +## 11 Jan 2017 John Collins With -diagnositcs, include invocation +## and results for kpsewhich. +## 4, 10 Jan 2017 John Collins Finish fix for read-after-write files +## 29-31 Dec 2016 John Collins V. 4.51 +## For biber and bibtex rules, included .blg +## file as extra generated file. +## Similarly for makeindex rule +## 3 Nov 2016 John Collins Start to fix problem reported by jfbu +## that with deleted aux file, latexmk +## does too few runs. +## Problems: +## 1. latexmk doesn't create initial +## dummy aux or fdb when only one +## fails to exist, but only when +## both fail to exist. +## 2. latexmk detects the aux file as +## only read after write, and +## hence not a true dependent. +## That is the initial attempt to +## read, giving a No file message, +## is not recorded in the fls +## file. +## First fix: missing aux file => make +## dummy. +## Need better: if source file in fdb +## doesn't exist initially, then it +## should be counted as initially +## read, so not read after write. +## 18 Oct 2016 John Collins xelatex support via xdv file for speed. +## lualatex +## 5 Sep 2016 John Collins Add routines: rdb_list_source, rdb_set_source +## 17 Aug 2016 John Collins Add XDG Base Directory compatibility +## for per-user rc file +## 1 May 2016 John Collins Correct creation of output and aux directories +## to correctly handle relative paths when -cd +## is used. +## 22 Apr 2016 John Collins Fix problem of -C not always working correctly +## when compilation was with -pdf and clear was default. +## (Correctly default set of rules in rdb_make_rule_list.) +## Ver. 4.45 +## +## 1998-2010, John Collins. Many improvements and fixes. +## See CHANGE-log.txt for full list, and CHANGES for summary +## +## Modified by Evan McLean (no longer available for support) +## Original script (RCS version 2.3) called "go" written by David J. Musliner +## +##----------------------------------------------------------------------- + + +## Explicit exit codes: +## 10 = bad command line arguments +## 11 = file specified on command line not found +## or other file not found +## 12 = failure in some part of making files +## 13 = error in initialization file +## 20 = probable bug +## or retcode from called program. + + +# Line length in log file that indicates wrapping. +# This number EXCLUDES line-end characters, and is one-based. +# It is the parameter max_print_line in the TeX program. (tex.web) +$log_wrap = 79; + +######################################################################### +## Default parsing and file-handling settings + +## Array of reg-exps for patterns in log-file for file-not-found +## Each item is the string in a regexp, without the enclosing slashes. +## First parenthesized part is the filename. +## Note the need to quote slashes and single right quotes to make them +## appear in the regexp. +## Add items by push, e.g., +## push @file_not_found, '^No data file found `([^\\\']*)\\\''; +## will give match to line starting "No data file found `filename'" +@file_not_found = ( + '^No file\\s*(.*)\\.$', + '^\\! LaTeX Error: File `([^\\\']*)\\\' not found\\.', + '.*?:\\d*: LaTeX Error: File `([^\\\']*)\\\' not found\\.', + '^LaTeX Warning: File `([^\\\']*)\\\' not found', + '^Package .* [fF]ile `([^\\\']*)\\\' not found', + 'Error: pdflatex \(file ([^\)]*)\): cannot find image file', + ': File (.*) not found:\s*$', + '! Unable to load picture or PDF file \\\'([^\\\']+)\\\'.', +); + +## Hash mapping file extension (w/o period, e.g., 'eps') to a single regexp, +# whose matching by a line in a file with that extension indicates that the +# line is to be ignored in the calculation of the hash number (md5 checksum) +# for the file. Typically used for ignoring datestamps in testing whether +# a file has changed. +# Add items e.g., by +# $hash_calc_ignore_pattern{'eps'} = '^%%CreationDate: '; +# This makes the hash calculation for an eps file ignore lines starting with +# '%%CreationDate: ' +# ?? Note that a file will be considered changed if +# (a) its size changes +# or (b) its hash changes +# So it is useful to ignore lines in the hash calculation only if they +# are of a fixed size (as with a date/time stamp). +%hash_calc_ignore_pattern =(); + + +# Specification of templates for extra rules. +# See subroutine rdb_make_rule_list for examples of rule templates. +# See subroutine rdb_set_rules for how they get used to construct rules. +# (Documentation obviously needs to be improved!) +%extra_rule_spec = (); + + +# Hooks for customized extra processing on aux files. The following +# variable is an array of references to function. Each function is +# invoked in turn when a line of an aux file is processed (if none +# of the built-in actions have been done). On entry to the function, +# the following variables are set: +# $_ = current line of aux file +# $rule = name of rule during the invocation of which, the aux file +# was supposed to have been generated. +@aux_hooks = (); + +######################################################################### +## Default document processing programs, and related settings, +## These are mostly the same on all systems. +## Most of these variables represents the external command needed to +## perform a certain action. Some represent switches. + +## Commands to invoke latex, pdflatex, etc +$latex = 'latex %O %S'; +$pdflatex = 'pdflatex %O %S'; +$lualatex = 'lualatex %O %S'; +# xelatex is used to give xdv file, not pdf file +$xelatex = 'xelatex -no-pdf %O %S'; + +## Default switches: +$latex_default_switches = ''; +$pdflatex_default_switches = ''; +$lualatex_default_switches = ''; +$xelatex_default_switches = ''; + +## Switch(es) to make them silent: +$latex_silent_switch = '-interaction=batchmode'; +$pdflatex_silent_switch = '-interaction=batchmode'; +$lualatex_silent_switch = '-interaction=batchmode'; +$xelatex_silent_switch = '-interaction=batchmode'; + +# %input_extensions maps primary_rule_name to pointer to hash of file extensions +# used for extensionless files specified in the source file by constructs +# like \input{file} \includegraphics{file} +# Could write +#%input_extensions = ( 'latex' => { 'tex' => 1, 'eps' => 1 };, +# 'pdflatex' => { 'tex' => 1, 'pdf' => 1, 'jpg' => 1, 'png' => 1 }; ); +# Instead we'll exercise the user-friendly access routines: +add_input_ext( 'latex', 'tex', 'eps' ); +add_input_ext( 'pdflatex', 'tex', 'jpg', 'pdf', 'png' ); +add_input_ext( 'lualatex', 'tex', 'jpg', 'pdf', 'png' ); +add_input_ext( 'xelatex', 'tex', 'jpg', 'pdf', 'png' ); +#show_input_ext( 'latex' ); show_input_ext( 'pdflatex' ); + +# Information about options to latex and pdflatex that latexmk will simply +# pass through to (pdf)latex +# Option without arg. maps to itself. +# Option with arg. maps the option part to the full specification +# e.g., -kpathsea-debug => -kpathsea-debug=NUMBER +%allowed_latex_options = (); +%allowed_latex_options_with_arg = (); +foreach ( + ##### + # TeXLive options + "-draftmode switch on draft mode (generates no output PDF)", + "-enc enable encTeX extensions such as \\mubyte", + "-etex enable e-TeX extensions", + "-file-line-error enable file:line:error style messages", + "-no-file-line-error disable file:line:error style messages", + "-fmt=FMTNAME use FMTNAME instead of program name or a %& line", + "-halt-on-error stop processing at the first error", + "-interaction=STRING set interaction mode (STRING=batchmode/nonstopmode/\n". + " scrollmode/errorstopmode)", + "-ipc send DVI output to a socket as well as the usual\n". + " output file", + "-ipc-start as -ipc, and also start the server at the other end", + "-kpathsea-debug=NUMBER set path searching debugging flags according to\n". + " the bits of NUMBER", + "-mktex=FMT enable mktexFMT generation (FMT=tex/tfm/pk)", + "-no-mktex=FMT disable mktexFMT generation (FMT=tex/tfm/pk)", + "-mltex enable MLTeX extensions such as \charsubdef", + "-output-comment=STRING use STRING for DVI file comment instead of date\n". + " (no effect for PDF)", + "-output-format=FORMAT use FORMAT for job output; FORMAT is `dvi\" or `pdf\"", + "-parse-first-line enable parsing of first line of input file", + "-no-parse-first-line disable parsing of first line of input file", + "-progname=STRING set program (and fmt) name to STRING", + "-shell-escape enable \\write18{SHELL COMMAND}", + "-no-shell-escape disable \\write18{SHELL COMMAND}", + "-shell-restricted enable restricted \\write18", + "-src-specials insert source specials into the DVI file", + "-src-specials=WHERE insert source specials in certain places of\n". + " the DVI file. WHERE is a comma-separated value\n". + " list: cr display hbox math par parend vbox", + "-synctex=NUMBER generate SyncTeX data for previewers if nonzero", + "-translate-file=TCXNAME use the TCX file TCXNAME", + "-8bit make all characters printable by default", + + ##### + # MikTeX options not in TeXLive + "-alias=app pretend to be app", + "-buf-size=n maximum number of characters simultaneously present\n". + " in current lines", + "-c-style-errors C-style error messages", + "-disable-installer disable automatic installation of missing packages", + "-disable-pipes disable input (output) from (to) child processes", + "-disable-write18 disable the \\write18{command} construct", + "-dont-parse-first-line disable checking whether the first line of the main\n". + " input file starts with %&", + "-enable-enctex enable encTeX extensions such as \\mubyte", + "-enable-installer enable automatic installation of missing packages", + "-enable-mltex enable MLTeX extensions such as \charsubdef", + "-enable-pipes enable input (output) from (to) child processes", + "-enable-write18 fully enable the \\write18{command} construct", + "-error-line=n set the width of context lines on terminal error\n". + " messages", + "-extra-mem-bot=n set the extra size (in memory words) for large data\n". + " structures", + "-extra-mem-top=n set the extra size (in memory words) for chars,\n". + " tokens, et al", + "-font-max=n set the maximum internal font number", + "-font-mem-size=n set the size, in TeX memory words, of the font memory", + "-half-error-line=n set the width of first lines of contexts in terminal\n". + " error messages", + "-hash-extra=n set the extra space for the hash table of control\n". + " sequences", + "-job-time=file set the time-stamp of all output files equal to\n". + " file's time-stamp", + "-main-memory=n change the total size (in memory words) of the main\n". + " memory array", + "-max-in-open=n set the maximum number of input files and error\n". + " insertions that can be going on simultaneously", + "-max-print-line=n set the width of longest text lines output", + "-max-strings=n set the maximum number of strings", + "-nest-size=n set the maximum number of semantic levels\n". + " simultaneously active", + "-no-c-style-errors standard error messages", + "-param-size=n set the the maximum number of simultaneous macro\n". + " parameters", + "-pool-size=n set the maximum number of characters in strings", + "-record-package-usages=file record all package usages and write them into\n". + " file", + "-restrict-write18 partially enable the \\write18{command} construct", + "-save-size=n set the the amount of space for saving values\n". + " outside of current group", + "-stack-size=n set the maximum number of simultaneous input sources", + "-string-vacancies=n set the minimum number of characters that should be\n". + " available for the user's control sequences and font\n". + " names", + "-tcx=name process the TCX table name", + "-time-statistics show processing time statistics", + "-trace enable trace messages", + "-trace=tracestreams enable trace messages. The tracestreams argument is\n". + " a comma-separated list of trace stream names", + "-trie-size=n set the amount of space for hyphenation patterns", + "-undump=name use name as the name of the format to be used,\n". + " instead of the name by which the program was\n". + " called or a %& line.", + + ##### + # Options passed to (pdf)latex that have special processing by latexmk, + # so they are commented out here. + #-jobname=STRING set the job name to STRING + #-aux-directory=dir Set the directory dir to which auxiliary files are written + #-output-directory=DIR use existing DIR as the directory to write files in + #-quiet + #-recorder enable filename recorder + # + # Options with different processing by latexmk than (pdf)latex + #-help + #-version + # + # Options NOT used by latexmk + #-includedirectory=dir prefix dir to the search path + #-initialize become the INI variant of the compiler + #-ini be pdfinitex, for dumping formats; this is implicitly + # true if the program name is `pdfinitex' +) { + if ( /^([^\s=]+)=/ ) { + $allowed_latex_options_with_arg{$1} = $_; + } + elsif ( /^([^\s=]+)\s/ ) { + $allowed_latex_options{$1} = $_; + } + else { + $allowed_latex_options{$_} = $_; + } +} + +# Arrays of options that will be added to latex and pdflatex. +# These need to be stored until after the command line parsing is finished, +# in case the values of $latex and/or $pdflatex change after an option +# is added. +@extra_latex_options = (); +@extra_pdflatex_options = (); +@extra_lualatex_options = (); +@extra_xelatex_options = (); + + +## Command to invoke biber & bibtex +$biber = 'biber %O %B'; +$bibtex = 'bibtex %O %B'; +# Switch(es) to make biber & bibtex silent: +$biber_silent_switch = '--onlylog'; +$bibtex_silent_switch = '-terse'; +$bibtex_use = 1; # Whether to actually run bibtex to update bbl files + # 0: Never run bibtex + # 1: Run bibtex only if the bibfiles exists + # according to kpsewhich, and the bbl files + # appear to be out-of-date + # 2: Run bibtex when the bbl files are out-of-date + # In any event bibtex is only run if the log file + # indicates that the document uses bbl files. + +## Command to invoke makeindex +$makeindex = 'makeindex %O -o %D %S'; +# Switch(es) to make makeinex silent: +$makeindex_silent_switch = '-q'; + +## Command to convert dvi file to pdf file directly: +$dvipdf = 'dvipdf %O %S %D'; +# N.B. Standard dvipdf runs dvips and gs with their silent switch, so for +# standard dvipdf $dvipdf_silent_switch is unneeded, but innocuous. +# But dvipdfmx can be used instead, and it has a silent switch (-q). +# So implementing $dvipdf_silent_switch is useful. + +$dvipdf_silent_switch = '-q'; + +## Command to convert dvi file to ps file: +$dvips = 'dvips %O -o %D %S'; +## Command to convert dvi file to ps file in landscape format: +$dvips_landscape = 'dvips -tlandscape %O -o %D %S'; +# Switch(es) to get dvips to make ps file suitable for conversion to good pdf: +# (If this is not used, ps file and hence pdf file contains bitmap fonts +# (type 3), which look horrible under acroread. An appropriate switch +# ensures type 1 fonts are generated. You can put this switch in the +# dvips command if you prefer.) +$dvips_pdf_switch = '-P pdf'; +# Switch(es) to make dvips silent: +$dvips_silent_switch = '-q'; + +## Command to convert ps file to pdf file: +$ps2pdf = 'ps2pdf %O %S %D'; + +## Command to convert xdv file to pdf file +$xdvipdfmx = 'xdvipdfmx -o %D %O %S'; +$xdvipdfmx_silent_switch = '-q'; + + +## Command to search for tex-related files +$kpsewhich = 'kpsewhich %S'; + +## Command to run make: +$make = 'make'; + +##Printing: +$print_type = 'auto'; # When printing, print the postscript file. + # Possible values: 'dvi', 'ps', 'pdf', 'auto', 'none' + # 'auto' ==> set print type according to the printable + # file(s) being made: priority 'ps', 'pdf', 'dvi' + +## Which treatment of default extensions and filenames with +## multiple extensions is used, for given filename on +## tex/latex's command line? See sub find_basename for the +## possibilities. +## Current tex's treat extensions like UNIX teTeX: +$extension_treatment = 'unix'; + +## Substitute backslashes in file and directory names for +## MSWin command line +$MSWin_back_slash = 1; + +$dvi_update_signal = undef; +$ps_update_signal = undef; +$pdf_update_signal = undef; + +$dvi_update_command = undef; +$ps_update_command = undef; +$pdf_update_command = undef; + +$allow_subdir_creation = 1; + +$new_viewer_always = 0; # If 1, always open a new viewer in pvc mode. + # If 0, only open a new viewer if no previous + # viewer for the same file is detected. + +$quote_filenames = 1; # Quote filenames in external commands + +$del_dir = ''; # Directory into which cleaned up files are to be put. + # If $del_dir is '', just delete the files + +@rc_system_files = (); + +######################################################################### + +################################################################ +## Special variables for system-dependent fudges, etc. +$log_file_binary = 0; # Whether to treat log file as binary + # Normally not, since the log file SHOULD be pure text. + # But Miktex 2.7 sometimes puts binary characters + # in it. (Typically in construct \OML ... after + # overfull box with mathmode.) + # Sometimes there is ctrl/Z, which is not only non-text, + # but is end-of-file marker for MS-Win in text mode. + +$MSWin_fudge_break = 1; # Give special treatment to ctrl/C and ctrl/break + # in -pvc mode under MSWin + # Under MSWin32 (at least with perl 5.8 and WinXP) + # when latexmk is running another program, and the + # user gives ctrl/C or ctrl/break, to stop the + # daughter program, not only does it reach + # the daughter, but also latexmk/perl, so + # latexmk is stopped also. In -pvc mode, + # this is not normally desired. So when the + # $MSWin_fudge_break variable is set, + # latexmk arranges to ignore ctrl/C and + # ctrl/break during processing of files; + # only the daughter programs receive them. + # This fudge is not applied in other + # situations, since then having latexmk also + # stopping because of the ctrl/C or + # ctrl/break signal is desirable. + # The fudge is not needed under UNIX (at least + # with Perl 5.005 on Solaris 8). Only the + # daughter programs receive the signal. In + # fact the inverse would be useful: In + # normal processing, as opposed to -pvc, if + # force mode (-f) is set, a ctrl/C is + # received by a daughter program does not + # also stop latexmk. Under tcsh, we get + # back to a command prompt, while latexmk + # keeps running in the background! + + +################################################################ + + +# System-dependent overrides: +# Currently, the cases I have tests for are: MSWin32, cygwin, linux and +# darwin, with the main complications being for MSWin32 and cygwin. +# Special treatment may also be useful for MSYS (for which $^O reports +# "msys"). This is another *nix-emulation/system for MSWindows. At +# present it is treated as unix-like, but the environment variables +# are those of Windows. (The test for USERNAME as well as USER was +# to make latexmk work under MSYS's perl.) +# +if ( $^O eq "MSWin32" ) { +# Pure MSWindows configuration + ## Configuration parameters: + + ## Use first existing case for $tmpdir: + $tmpdir = $ENV{TMPDIR} || $ENV{TEMP} || '.'; + $log_file_binary = 1; # Protect against ctrl/Z in log file from + # Miktex 2.7. + + ## List of possibilities for the system-wide initialization file. + ## The first one found (if any) is used. + @rc_system_files = ( "C:/latexmk/LatexMk", "C:/latexmk/latexmkrc" ); + + $search_path_separator = ';'; # Separator of elements in search_path + + # For a pdf-file, "start x.pdf" starts the pdf viewer associated with + # pdf files, so no program name is needed: + $pdf_previewer = 'start %O %S'; + $ps_previewer = 'start %O %S'; + $ps_previewer_landscape = $ps_previewer; + $dvi_previewer = 'start %O %S'; + $dvi_previewer_landscape = "$dvi_previewer"; + # Viewer update methods: + # 0 => auto update: viewer watches file (e.g., gv) + # 1 => manual update: user must do something: e.g., click on window. + # (e.g., ghostview, MSWIN previewers, acroread under UNIX) + # 2 => send signal. Number of signal in $dvi_update_signal, + # $ps_update_signal, $pdf_update_signal + # 3 => viewer can't update, because it locks the file and the file + # cannot be updated. (acroread under MSWIN) + # 4 => run a command to force the update. The commands are + # specified by the variables $dvi_update_command, + # $ps_update_command, $pdf_update_command + $dvi_update_method = 1; + $ps_update_method = 1; + $pdf_update_method = 3; # acroread locks the pdf file + # Use NONE as flag that I am not implementing some commands: + $lpr = + 'NONE $lpr variable is not configured to allow printing of ps files'; + $lpr_dvi = + 'NONE $lpr_dvi variable is not configured to allow printing of dvi files'; + $lpr_pdf = + 'NONE $lpr_pdf variable is not configured to allow printing of pdf files'; + # The $pscmd below holds a command to list running processes. It + # is used to find the process ID of the viewer looking at the + # current output file. The output of the command must include the + # process number and the command line of the processes, since the + # relevant process is identified by the name of file to be viewed. + # Its use is not essential. + $pscmd = + 'NONE $pscmd variable is not configured to detect running processes'; + $pid_position = -1; # offset of PID in output of pscmd. + # Negative means I cannot use ps +} +elsif ( $^O eq "cygwin" ) { + # The problem is a mixed MSWin32 and UNIX environment. + # Perl decides the OS is cygwin in two situations: + # 1. When latexmk is run from a cygwin shell under a cygwin + # environment. Perl behaves in a UNIX way. This is OK, since + # the user is presumably expecting UNIXy behavior. + # 2. When CYGWIN exectuables are in the path, but latexmk is run + # from a native NT shell. Presumably the user is expecting NT + # behavior. But perl behaves more UNIXy. This causes some + # clashes. + # The issues to handle are: + # 1. Perl sees both MSWin32 and cygwin filenames. This is + # normally only an advantage. + # 2. Perl uses a UNIX shell in the system command + # This is a nasty problem: under native NT, there is a + # start command that knows about NT file associations, so that + # we can do, e.g., (under native NT) system("start file.pdf"); + # But this won't work when perl has decided the OS is cygwin, + # even if it is invoked from a native NT command line. An + # NT command processor must be used to deal with this. + # 3. External executables can be native NT (which only know + # NT-style file names) or cygwin executables (which normally + # know both cygwin UNIX-style file names and NT file names, + # but not always; some do not know about drive names, for + # example). + # Cygwin executables for tex and latex may only know cygwin + # filenames. + # 4. The BIBINPUTS environment variables may be + # UNIX-style or MSWin-style depending on whether native NT or + # cygwin executables are used. They are therefore parsed + # differently. Here is the clash: + # a. If a user is running under an NT shell, is using a + # native NT installation of tex (e.g., fptex or miktex), + # but has the cygwin executables in the path, then perl + # detects the OS as cygwin, but the user needs NT + # behavior from latexmk. + # b. If a user is running under an UNIX shell in a cygwin + # environment, and is using the cygwin installation of + # tex, then perl detects the OS as cygwin, and the user + # needs UNIX behavior from latexmk. + # Latexmk has no way of detecting the difference. The two + # situations may even arise for the same user on the same + # computer simply by changing the order of directories in the + # path environment variable + + + ## Configuration parameters: We'll assume native NT executables. + ## The user should override if they are not. + + # This may fail: perl converts MSWin temp directory name to cygwin + # format. Names containing this string cannot be handled by native + # NT executables. + $tmpdir = $ENV{TMPDIR} || $ENV{TEMP} || '.'; + + ## List of possibilities for the system-wide initialization file. + ## The first one found (if any) is used. + ## We could stay with MSWin files here, since cygwin perl understands them + ## @rc_system_files = ( 'C:/latexmk/LatexMk', 'C:/latexmk/latexmkrc' ); + ## But they are deprecated in v. 1.7. So use the UNIX version, prefixed + ## with a cygwin equivalent of the MSWin location + ## In addition, we need to add the same set of possible locations as with + ## unix, so that the user use a unix-style setup. + @rc_system_files = (); + foreach ( 'LatexMk', 'latexmkrc' ) { + push @rc_system_files, + ( "/cygdrive/c/latexmk/$_", + "/opt/local/share/latexmk/$_", + "/usr/local/share/latexmk/$_", + "/usr/local/lib/latexmk/$_" ); + } + $search_path_separator = ';'; # Separator of elements in search_path + # This is tricky. The search_path_separator depends on the kind + # of executable: native NT v. cygwin. + # So the user will have to override this. + + # We will assume that files can be viewed by native NT programs. + # Then we must fix the start command/directive, so that the + # NT-native start command of a cmd.exe is used. + # For a pdf-file, "start x.pdf" starts the pdf viewer associated with + # pdf files, so no program name is needed: + $start_NT = "cmd /c start \"\""; + $pdf_previewer = "$start_NT %O %S"; + $ps_previewer = "$start_NT %O %S"; + $ps_previewer_landscape = $ps_previewer; + $dvi_previewer = "$start_NT %O %S"; + $dvi_previewer_landscape = $dvi_previewer; + # Viewer update methods: + # 0 => auto update: viewer watches file (e.g., gv) + # 1 => manual update: user must do something: e.g., click on window. + # (e.g., ghostview, MSWIN previewers, acroread under UNIX) + # 2 => send signal. Number of signal in $dvi_update_signal, + # $ps_update_signal, $pdf_update_signal + # 3 => viewer can't update, because it locks the file and the file + # cannot be updated. (acroread under MSWIN) + $dvi_update_method = 1; + $ps_update_method = 1; + $pdf_update_method = 3; # acroread locks the pdf file + # Use NONE as flag that I am not implementing some commands: + $lpr = + 'NONE $lpr variable is not configured to allow printing of ps files'; + $lpr_dvi = + 'NONE $lpr_dvi variable is not configured to allow printing of dvi files'; + $lpr_pdf = + 'NONE $lpr_pdf variable is not configured to allow printing of pdf files'; + # The $pscmd below holds a command to list running processes. It + # is used to find the process ID of the viewer looking at the + # current output file. The output of the command must include the + # process number and the command line of the processes, since the + # relevant process is identified by the name of file to be viewed. + # Its use is not essential. + # When the OS is detected as cygwin, there are two possibilities: + # a. Latexmk was run from an NT prompt, but cygwin is in the + # path. Then the cygwin ps command will not see commands + # started from latexmk. So we cannot use it. + # b. Latexmk was started within a cygwin environment. Then + # the ps command works as we need. + # Only the user, not latemk knows which, so we default to not + # using the ps command. The user can override this in a + # configuration file. + $pscmd = + 'NONE $pscmd variable is not configured to detect running processes'; + $pid_position = -1; # offset of PID in output of pscmd. + # Negative means I cannot use ps +} +else { + # Assume anything else is UNIX or clone + + ## Configuration parameters: + + + ## Use first existing case for $tmpdir: + $tmpdir = $ENV{TMPDIR} || '/tmp'; + + ## List of possibilities for the system-wide initialization file. + ## The first one found (if any) is used. + ## Normally on a UNIX it will be in a subdirectory of /opt/local/share or + ## /usr/local/share, depending on the local conventions. + ## But /usr/local/lib/latexmk is put in the list for + ## compatibility with older versions of latexmk. + @rc_system_files = (); + foreach ( 'LatexMk', 'latexmkrc' ) { + push @rc_system_files, + ( "/opt/local/share/latexmk/$_", + "/usr/local/share/latexmk/$_", + "/usr/local/lib/latexmk/$_" ); + } + $search_path_separator = ':'; # Separator of elements in search_path + + $dvi_update_signal = $signo{USR1} + if ( defined $signo{USR1} ); # Suitable for xdvi + $ps_update_signal = $signo{HUP} + if ( defined $signo{HUP} ); # Suitable for gv + $pdf_update_signal = $signo{HUP} + if ( defined $signo{HUP} ); # Suitable for gv + ## default document processing programs. + # Viewer update methods: + # 0 => auto update: viewer watches file (e.g., gv) + # 1 => manual update: user must do something: e.g., click on window. + # (e.g., ghostview, MSWIN previewers, acroread under UNIX) + # 2 => send signal. Number of signal in $dvi_update_signal, + # $ps_update_signal, $pdf_update_signal + # 3 => viewer can't update, because it locks the file and the file + # cannot be updated. (acroread under MSWIN) + # 4 => Run command to update. Command in $dvi_update_command, + # $ps_update_command, $pdf_update_command. + $dvi_previewer = 'start xdvi %O %S'; + $dvi_previewer_landscape = 'start xdvi -paper usr %O %S'; + if ( defined $dvi_update_signal ) { + $dvi_update_method = 2; # xdvi responds to signal to update + } else { + $dvi_update_method = 1; + } +# if ( defined $ps_update_signal ) { +# $ps_update_method = 2; # gv responds to signal to update +# $ps_previewer = 'start gv -nowatch'; +# $ps_previewer_landscape = 'start gv -swap -nowatch'; +# } else { +# $ps_update_method = 0; # gv -watch watches the ps file +# $ps_previewer = 'start gv -watch'; +# $ps_previewer_landscape = 'start gv -swap -watch'; +# } + # Turn off the fancy options for gv. Regular gv likes -watch etc + # GNU gv likes --watch etc. User must configure + $ps_update_method = 0; # gv -watch watches the ps file + $ps_previewer = 'start gv %O %S'; + $ps_previewer_landscape = 'start gv -swap %O %S'; + $pdf_previewer = 'start acroread %O %S'; + $pdf_update_method = 1; # acroread under unix needs manual update + $lpr = 'lpr %O %S'; # Assume lpr command prints postscript files correctly + $lpr_dvi = + 'NONE $lpr_dvi variable is not configured to allow printing of dvi files'; + $lpr_pdf = + 'NONE $lpr_pdf variable is not configured to allow printing of pdf files'; + # The $pscmd below holds a command to list running processes. It + # is used to find the process ID of the viewer looking at the + # current output file. The output of the command must include the + # process number and the command line of the processes, since the + # relevant process is identified by the name of file to be viewed. + # Uses: + # 1. In preview_continuous mode, to save running a previewer + # when one is already running on the relevant file. + # 2. With xdvi in preview_continuous mode, xdvi must be + # signalled to make it read a new dvi file. + # + # The following works on Solaris, LINUX, HP-UX, IRIX + # Use -f to get full listing, including command line arguments. + # Use -u $ENV{USER} to get all processes started by current user (not just + # those associated with current terminal), but none of other users' + # processes. + # However, the USER environment variable may not exist. Windows uses + # USERNAME instead. (And this propagates to a situation of + # unix-emulation software running under Windows.) + if ( exists $ENV{USER} ) { + $pscmd = "ps -f -u $ENV{USER}"; + } + elsif ( exists $ENV{USERNAME} ) { + $pscmd = "ps -f -u $ENV{USERNAME}"; + } + else { + $pscmd = "ps -f"; + } + $pid_position = 1; # offset of PID in output of pscmd; first item is 0. + if ( $^O eq "linux" ) { + # Ps on Redhat (at least v. 7.2) appears to truncate its output + # at 80 cols, so that a long command string is truncated. + # Fix this with the --width option. This option works under + # other versions of linux even if not necessary (at least + # for SUSE 7.2). + # However the option is not available under other UNIX-type + # systems, e.g., Solaris 8. + # But (19 Aug 2010), the truncation doesn't happen on RHEL4 and 5, + # unless the output is written to a terminal. So the --width + # option is now unnecessary + # $pscmd = "ps --width 200 -f -u $ENV{USER}"; + } + elsif ( $^O eq "darwin" ) { + # OS-X on Macintosh + # open starts command associated with a file. + # For pdf, this is set by default to OS-X's preview, which is suitable. + # Manual update is simply by clicking on window etc, which is OK. + # For ps, this is set also to preview. This works, but since it + # converts the file to pdf and views the pdf file, it doesn't + # see updates, and a refresh cannot be done. This is far from + # optimal. + # For a full installation of MacTeX, which is probably the most common + # on OS-X, an association is created between dvi files and TeXShop. + # This also converts the file to pdf, so again while it works, it + # does not deal with changed dvi files, as far as I can see. + $pdf_previewer = 'open %S'; + $pdf_update_method = 1; # manual + $dvi_previewer = $dvi_previewer_landscape = 'NONE'; + $ps_previewer = $ps_previewer_landscape = 'NONE'; + # Others + $lpr_pdf = 'lpr %O %S'; + $pscmd = "ps -ww -u $ENV{USER}"; + } +} + +## default parameters +$auto_rc_use = 1; # Whether to read rc files automatically +$max_repeat = 5; # Maximum times I repeat latex. Normally + # 3 would be sufficient: 1st run generates aux file, + # 2nd run picks up aux file, and maybe toc, lof which + # contain out-of-date information, e.g., wrong page + # references in toc, lof and index, and unresolved + # references in the middle of lines. But the + # formatting is more-or-less correct. On the 3rd + # run, the page refs etc in toc, lof, etc are about + # correct, but some slight formatting changes may + # occur, which mess up page numbers in the toc and lof, + # Hence a 4th run is conceivably necessary. + # At least one document class (JHEP.cls) works + # in such a way that a 4th run is needed. + # We allow an extra run for safety for a + # maximum of 5. Needing further runs is + # usually an indication of a problem; further + # runs may not resolve the problem, and + # instead could cause an infinite loop. +$clean_ext = ""; # space separated extensions of files that are + # to be deleted when doing cleanup, beyond + # standard set +$clean_full_ext = ""; # space separated extensions of files that are + # to be deleted when doing cleanup_full, beyond + # standard set and those in $clean_ext +@cus_dep_list = (); # Custom dependency list +@default_files = ( '*.tex' ); # Array of LaTeX files to process when + # no files are specified on the command line. + # Wildcards allowed + # Best used for project specific files. +@default_excluded_files = ( ); + # Array of LaTeX files to exclude when using + # @default_files, i.e., when no files are specified + # on the command line. + # Wildcards allowed + # Best used for project specific files. +$texfile_search = ""; # Specification for extra files to search for + # when no files are specified on the command line + # and the @default_files variable is empty. + # Space separated, and wildcards allowed. + # These files are IN ADDITION to *.tex in current + # directory. + # This variable is obsolete, and only in here for + # backward compatibility. + +$fdb_ext = 'fdb_latexmk'; # Extension for the file for latexmk's + # file-database + # Make it long to avoid possible collisions. +$fdb_ver = 3; # Version number for kind of fdb_file. + +$jobname = ''; # Jobname: as with current tex, etc indicates + # basename of generated files. + # Defined so that --jobname=STRING on latexmk's + # command line has same effect as with current + # tex, etc. (If $jobname is non-empty, then + # the --jobname=... option is used on tex.) +$out_dir = ''; # Directory for output files. + # Cf. --output-directory of current (pdf)latex +$aux_dir = ''; # Directory for aux files (log, aux, etc). + # Cf. --aux-directory of current (pdf)latex in MiKTeX. + + +## default flag settings. +$recorder = 1; # Whether to use recorder option on latex/pdflatex +$silent = 0; # Silence latex's messages? +$silence_logfile_warnings = 0; # Do list warnings in log file +$kpsewhich_show = 0; # Show calls to and results from kpsewhich +$landscape_mode = 0; # default to portrait mode +$analyze_input_log_always = 0; # Always analyze .log for input files in the + # <...> and (...) constructions. Otherwise, only + # do the analysis when fls file doesn't exist or is + # out of date. + +# The following two arrays contain lists of extensions (without +# period) for files that are read in during a (pdf)LaTeX run but that +# are generated automatically from the previous run, as opposed to +# being user generated files (directly or indirectly from a custom +# dependency). These files get two kinds of special treatment: +# 1. In clean up, where depending on the kind of clean up, some +# or all of these generated files are deleted. +# (Note that special treatment is given to aux files.) +# 2. In analyzing the results of a run of (pdf)LaTeX, to +# determine if another run is needed. With an error free run, +# a rerun should be provoked by a change in any source file, +# whether a user file or a generated file. But with a run +# that ends in an error, only a change in a user file during +# the run (which might correct the error) should provoke a +# rerun, but a change in a generated file should not. +# These arrays can be user-configured. + +@generated_exts = ( 'aux', 'bcf', 'fls', 'idx', 'ind', 'lof', 'lot', + 'out', 'toc' ); + # N.B. 'out' is generated by hyperref package + +# Which kinds of file do I have requests to make? +# If no requests at all are made, then I will make dvi file +# If particular requests are made then other files may also have to be +# made. E.g., ps file requires a dvi file +$dvi_mode = 0; # No dvi file requested +$postscript_mode = 0; # No postscript file requested +$pdf_mode = 0; # No pdf file requested to be made by pdflatex + # Possible values: + # 0 don't create pdf file + # 1 to create pdf file by pdflatex + # 2 to create pdf file by ps2pdf + # 3 to create pdf file by dvipdf + # 4 to create pdf file by lualatex + # 5 to create pdf file by xelatex + xdvipdfmx +$view = 'default'; # Default preview is of highest of dvi, ps, pdf +$sleep_time = 2; # time to sleep b/w checks for file changes in -pvc mode +$banner = 0; # Non-zero if we have a banner to insert +$banner_scale = 220; # Original default scale +$banner_intensity = 0.95; # Darkness of the banner message +$banner_message = 'DRAFT'; # Original default message +$do_cd = 0; # Do not do cd to directory of source file. + # Thus behave like latex. +$dependents_list = 0; # Whether to display list(s) of dependencies +$dependents_phony = 0; # Whether list(s) of dependencies includes phony targets + # (as with 'gcc -MP'). +$deps_file = '-'; # File for dependency list output. Default stdout. +$rules_list = 0; # Whether to display list(s) of dependencies +@dir_stack = (); # Stack of pushed directories, each of form of + # pointer to array [ cwd, good_cwd ], where + # good_cwd differs from cwd by being converted + # to native MSWin path when cygwin is used. +$cleanup_mode = 0; # No cleanup of nonessential LaTex-related files. + # $cleanup_mode = 0: no cleanup + # $cleanup_mode = 1: full cleanup + # $cleanup_mode = 2: cleanup except for dvi, + # dviF, pdf, ps, psF & xdv +$cleanup_fdb = 0; # No removal of file for latexmk's file-database +$cleanup_only = 0; # When doing cleanup, do not go on to making files +$cleanup_includes_generated = 0; + # Determines whether cleanup deletes files generated by + # custom dependencies +$cleanup_includes_cusdep_generated = 0; + # Determines whether cleanup deletes files generated by + # (pdf)latex (found from \openout lines in log file). +$diagnostics = 0; +$dvi_filter = ''; # DVI filter command +$ps_filter = ''; # Postscript filter command + +$force_mode = 0; # =1 to force processing past errors +$go_mode = 0; # =1 to force processing regardless of time-stamps + # =2 full clean-up first +$preview_mode = 0; +$preview_continuous_mode = 0; +$printout_mode = 0; # Don't print the file + +$show_time = 0; +@timings = (); +$processing_time1 = processing_time(); + +$use_make_for_missing_files = 0; # Whether to use make to try to make missing files. + +# Do we make view file in temporary then move to final destination? +# (To avoid premature updating by viewer). +$always_view_file_via_temporary = 0; # Set to 1 if viewed file is always + # made through a temporary. +$pvc_view_file_via_temporary = 1; # Set to 1 if only in -pvc mode is viewed + # file made through a temporary. + +# State variables initialized here: + +$updated = 0; # Flags when something has been remade + # Used to allow convenient user message in -pvc mode +$waiting = 0; # Flags whether we are in loop waiting for an event + # Used to avoid unnecessary repeated o/p in wait loop + +# Used for some results of parsing log file: +$reference_changed = 0; +$mult_defined = 0; +$bad_reference = 0; +$bad_citation = 0; + +# Cache of expensive-to-compute state variables, e.g., cwd in form +# fixed to deal with cygwin issues. +%cache = (); +&cache_good_cwd; + +# Set search paths for includes. +# Set them early so that they can be overridden +$BIBINPUTS = $ENV{'BIBINPUTS'}; +if (!$BIBINPUTS) { $BIBINPUTS = '.'; } + +# Convert search paths to arrays: +# If any of the paths end in '//' then recursively search the +# directory. After these operations, @BIBINPUTS should +# have all the directories that need to be searched + +@BIBINPUTS = find_dirs1( $BIBINPUTS ); + + +###################################################################### +###################################################################### +# +# ??? UPDATE THE FOLLOWING!! +# +# We will need to determine whether source files for runs of various +# programs are out of date. In a normal situation, this is done by +# asking whether the times of the source files are later than the +# destination files. But this won't work for us, since a common +# situation is that a file is written on one run of latex, for +# example, and read back in on the next run (e.g., an .aux file). +# Some situations of this kind are standard in latex generally; others +# occur with particular macro packages or with particular +# postprocessors. +# +# The correct criterion for whether a source is out-of-date is +# therefore NOT that its modification time is later than the +# destination file, but whether the contents of the source file have +# changed since the last successful run. This also handles the case +# that the user undoes some changes to a source file by replacing the +# source file by reverting to an earlier version, which may well have +# an older time stamp. Since a direct comparison of old and new files +# would involve storage and access of a large number of backup files, +# we instead use the md5 signature of the files. (Previous versions +# of latexmk used the backup file method, but restricted to the case +# of .aux and .idx files, sufficient for most, but not all, +# situations.) +# +# We will have a database of (time, size, md5) for the relevant +# files. If the time and size of a file haven't changed, then the file +# is assumed not to have changed; this saves us from having to +# determine its md5 signature, which would involve reading the whole +# file, which is naturally time-consuming, especially if network file +# access to a server is needed, and many files are involved, when most +# of them don't change. It is of course possible to change a file +# without changing its size, but then to adjust its timestamp +# to what it was previously; this requires a certain amount of +# perversity. We can safely assume that if the user edits a file or +# changes its contents, then the file's timestamp changes. The +# interesting case is that the timestamp does change, because the file +# has actually been written to, but that the contents do not change; +# it is for this that we use the md5 signature. However, since +# computing the md5 signature involves reading the whole file, which +# may be large, we should avoid computing it more than necessary. +# +# So we get the following structure: +# +# 1. For each relevant run (latex, pdflatex, each instance of a +# custom dependency) we have a database of the state of the +# source files that were last used by the run. +# 2. On an initial startup, the database for a primary tex file +# is read that was created by a previous run of latex or +# pdflatex, if this exists. +# 3. If the file doesn't exist, then the criterion for +# out-of-dateness for an initial run is that it goes by file +# timestamps, as in previous versions of latexmk, with due +# (dis)regard to those files that are known to be generated by +# latex and re-read on the next run. +# 4. Immediately before a run, the database is updated to +# represent the current conditions of the run's source files. +# 5. After the run, it is determined whether any of the source +# files have changed. This covers both files written by the +# run, which are therefore in a dependency loop, and files that +# the user may have updated during the run. (The last often +# happens when latex takes a long time, for a big document, +# and the user makes edits before latex has finished. This is +# particularly prevalent when latexmk is used with +# preview-continuous mode.) +# 6. In the case of latex or pdflatex, the custom dependencies +# must also be checked and redone if out-of-date. +# 7. If any source files have changed, the run is redone, +# starting at step 1. +# 8. There is naturally a limit on the number of reruns, to avoid +# infinite loops from bugs and from pathological or unforeseen +# conditions. +# 9. After the run is done, the run's file database is updated. +# (By hypothesis, the sizes and md5s are correct, if the run +# is successful.) +# 10. To allow reuse of data from previous runs, the file database +# is written to a file after every complete set of passes +# through latex or pdflatex. (Note that there is separate +# information for latex and pdflatex; the necessary +# information won't coincide: Out-of-dateness for the files +# for each program concerns the properties of the files when +# the other program was run, and the set of source files could +# be different, e.g., for graphics files.) +# +# We therefore maintain the following data structures.: +# +# a. For each run (latex, pdflatex, each custom dependency) a +# database is maintained. This is a hash from filenames to a +# reference to an array: [time, size, md5]. The semantics of +# the database is that it represents the state of the source +# files used in the run. During a run it represents the state +# immediately before the run; after a run, with all reruns, it +# represents the state of the files used, modified by having +# the latest timestamps for generated files. +# b. There is a global database for all files, which represents +# the current state. This saves having to recompute the md5 +# signatures of a changed file used in more than one run +# (e.g., latex and pdflatex). +# c. Each of latex and pdflatex has a list of the relevant custom +# dependencies. +# +# In all the following a fdb-hash is a hash of the form: +# filename -> [time, size, md5] +# If a file is found to disappear, its entry is removed from the hash. +# In returns from fdb access routines, a size entry of -1 indicates a +# non-existent file. + + +# List of known rules. Rule types: primary, +# external (calls program), internal (calls routine), cusdep. + +%possible_primaries = ( 'latex' => 'primary', 'pdflatex' => 'primary', + 'lualatex' => 'primary', 'xelatex' => 'primary' ); +%primaries = (); # Hash of rules for primary part of make. Keys are + # currently 'latex', 'pdflatex' or both; also 'lualatex' + # and 'xelatex'. Value is currently irrelevant. + # Use hash for ease of lookup + # Make remove this later, if use rdb_makeB + +# Hashes, whose keys give names of particular kinds of rule. We use +# hashes for ease of lookup. +%possible_one_time = ( 'view' => 1, 'print' => 1, 'update_view' => 1, ); +%requested_filerules = (); # Hash for rules corresponding to requested files. + # The keys are the rulenames and the value is + # currently irrelevant. +%one_time = (); # Hash for requested one-time-only rules, currently + # possible values 'print' and 'view'. + + +%rule_db = (); # Database of all rules: + # Hash: rulename -> [array of rule data] + # Rule data: + # 0: [ cmd_type, ext_cmd, int_cmd, test_kind, + # source, dest, base, + # out_of_date, out_of_date_user, + # time_of_last_run, time_of_last_file_check, + # changed + # last_result, last_message, + # default_extra_generated + # ] + # where + # cmd_type is 'primary', 'external', or 'cusdep' + # ext_cmd is string for associated external command + # with substitutions (%D for destination, %S + # for source, %B for base of current rule, + # %R for base of primary tex file, %T for + # texfile name, %O for options, + # %Y for $aux_dir1, and %Z for $out_dir1 + # int_cmd specifies any internal command to be + # used to implement the application of the + # rule. If this is present, it overrides + # the external command, and it is the + # responsibility of the perl subroutine + # specified in intcmd to execute the + # external command if this is appropriate. + # This variable intcmd is a reference to an array, + # $$intcmd[0] = internal routine + # $$intcmd[1...] = its arguments (if any) + # test_kind specifies method of determining + # whether a file is out-of-date: + # 0 for never + # 1 for usual: whether there is a source + # file change + # 2 for dest earlier than source + # 3 for method 2 at first run, 1 thereafter + # (used when don't have file data from + # previous run). + # source = name of primary source file, if any + # dest = name of primary destination file, + # if any + # base = base name, if any, of files for + # this rule + # out_of_date = 1 if it has been detected that + # this rule needs to be run + # (typically because a source + # file has changed). + # 0 otherwise + # out_of_date_user is like out_of_date, except + # that the detection of out-of-dateness + # has been made from a change of a + # putative user file, i.e., one that is + # not a generated file (e.g., aux). This + # kind of out-of-dateness should provoke a + # rerun whether or not there was an error + # during a run of (pdf)LaTeX. Normally, + # if there is an error, one should wait + # for the user to correct the error. But + # it is possible the error condition is + # already corrected during the run, e.g., + # by the user changing a source file in + # response to an error message. + # time_of_last_run = time that this rule was + # last applied. (In standard units + # from perl, to be directly compared + # with file modification times.) + # time_of_last_file_check = last time that a check + # was made for changes in source files. + # changed flags whether special changes have been made + # that require file-existence status to be ignored + # last_result is + # -1 if no run has been made, + # 0 if the last run was successful + # 1 if last run was successful, but + # failed to create an output file + # 2 if last run failed + # 200 if last run gave a warning that is + # important enough to be reported with + # the error summary. The warning + # message is stored in last_message. + # last_message is error message for last run + # default_extra_generated is a reference to an array + # of specifications of extra generated files (beyond + # the main dest file. Standard place holders are used. + # Example ['%Y%R.log'] for (pdf)latex, and ['%R.blg'] + # for bibtex. (There's no need for '%R.aux', here, + # since such generated files are detected dynamically.) + # 1: {Hash sourcefile -> [source-file data] } + # Source-file data array: + # 0: time + # 1: size + # 2: md5 + # 3: name of rule to make this file + # 4: whether the file is of the kind made by epstopdf.sty + # during a primary run. It will have been read during + # the run, so that even though the file changes during + # a primary run, there is no need to trigger another + # run because of this. + # Size and md5 correspond to the values at the last run. + # But time may be updated to correspond to the time + # for the file, if the file is otherwise unchanged. + # This saves excessive md5 calculations, which would + # otherwise be done everytime the file is checked, + # in the following situation: + # When the file has been rewritten after a run + # has started (commonly aux, bbl files etc), + # but the actual file contents haven't + # changed. Then because the filetime has + # changed, on every file-change check latexmk + # would normally redo the md5 calculation to + # test for actual changes. Once one such + # check is done, and the contents are + # unchanged, later checks are superfluous, and + # can be avoided by changing the file's time + # in the source-file list. + # 2: {Hash generated_file -> 1 } + # This lists all generated files; the values + # are currently unused, only the keys + +%fdb_current = (); # Fdb-hash for all files used. + + +# User's home directory +$HOME = ''; +if (exists $ENV{'HOME'} ) { + $HOME = $ENV{'HOME'}; +} +elsif (exists $ENV{'USERPROFILE'} ) { + $HOME = $ENV{'USERPROFILE'}; +} +# XDG configuration home +$XDG_CONFIG_HOME = ''; +if (exists $ENV{'XDG_CONFIG_HOME'} ) { + $XDG_CONFIG_HOME = $ENV{'XDG_CONFIG_HOME'}; +} +elsif ($HOME ne '') { + if ( -d "$HOME/.config") { + $XDG_CONFIG_HOME = "$HOME/.config"; + } +} + + +#================================================== + +# Options that are to be obeyed before rc files are read: + +foreach $_ ( @ARGV ) +{ + if (/^-{1,2}norc$/ ) { + $auto_rc_use = 0; + } +} + +#================================================== +## Read rc files with this subroutine + +sub read_first_rc_file_in_list { + foreach my $rc_file ( @_ ) { + #print "===Testing for rc file \"$rc_file\" ...\n"; + if ( -d $rc_file ) { + warn "$My_name: I have found a DIRECTORY named \"$rc_file\".\n", + " Have you perhaps misunderstood latexmk's documentation?\n", + " This name is normally used for a latexmk configuration (rc) file,\n", + " and in that case it should be a regular text file, not a directory.\n"; + } + elsif ( -e $rc_file ) { + #print "===Reading rc file \"$rc_file\" ...\n"; + process_rc_file( $rc_file ); + return; + } + } +} + +# Note that each rc file may unset $auto_rc_use to +# prevent lower-level rc files from being read. +# So test on $auto_rc_use in each case. +if ( $auto_rc_use ) { + # System rc file: + read_first_rc_file_in_list( @rc_system_files ); +} +if ( $auto_rc_use && ($HOME ne "" ) ) { + # User rc file: + @user_rc = (); + if ( $XDG_CONFIG_HOME ) { + push @user_rc, "$XDG_CONFIG_HOME/latexmk/latexmkrc"; + } + # N.B. $HOME equals "" if latexmk couldn't determine a home directory. + # In that case, we shouldn't look for an rc file there. + if ( $HOME ) { + push @user_rc, "$HOME/.latexmkrc"; + } + read_first_rc_file_in_list( @user_rc ); +} +if ( $auto_rc_use ) { + # Rc file in current directory: + read_first_rc_file_in_list( "latexmkrc", ".latexmkrc" ); +} + +## Process command line args. +@command_line_file_list = (); +$bad_options = 0; + +while ($_ = $ARGV[0]) +{ + # Make -- and - equivalent at beginning of option, + # but save original for possible use in (pdf)latex command line + $original = $_; + s/^--/-/; + shift; + if ( /^-aux-directory=(.*)$/ || /^-auxdir=(.*)$/ ) { + $aux_dir = $1; + } + elsif (/^-bibtex$/) { $bibtex_use = 2; } + elsif (/^-bibtex-$/) { $bibtex_use = 0; } + elsif (/^-nobibtex$/) { $bibtex_use = 0; } + elsif (/^-bibtex-cond$/) { $bibtex_use = 1; } + elsif (/^-c$/) { $cleanup_mode = 2; $cleanup_fdb = 1; $cleanup_only = 1; } + elsif (/^-C$/ || /^-CA$/ ) { $cleanup_mode = 1; $cleanup_fdb = 1; $cleanup_only = 1; } + elsif (/^-CF$/) { $cleanup_fdb = 1; } + elsif (/^-cd$/) { $do_cd = 1; } + elsif (/^-cd-$/) { $do_cd = 0; } + elsif (/^-commands$/) { &print_commands; exit; } + elsif (/^-d$/) { $banner = 1; } + elsif (/^-dependents$/ || /^-deps$/ || /^-M$/ ) { $dependents_list = 1; } + elsif (/^-nodependents$/ || /^-dependents-$/ || /^-deps-$/) { $dependents_list = 0; } + elsif (/^-deps-out=(.*)$/) { + $deps_file = $1; + $dependents_list = 1; + } + elsif (/^-diagnostics/) { $diagnostics = 1; } + elsif (/^-dvi$/) { $dvi_mode = 1; } + elsif (/^-dvi-$/) { $dvi_mode = 0; } + elsif (/^-f$/) { $force_mode = 1; } + elsif (/^-f-$/) { $force_mode = 0; } + elsif (/^-g$/) { $go_mode = 1; } + elsif (/^-g-$/) { $go_mode = 0; } + elsif (/^-gg$/) { + $go_mode = 2; $cleanup_mode = 1; $cleanup_fdb = 1; $cleanup_only = 0; + } + elsif ( /^-h$/ || /^-help$/ ) { &print_help; exit;} + elsif (/^-jobname=(.*)$/) { + $jobname = $1; + } + elsif (/^-l$/) { $landscape_mode = 1; } + elsif (/^-l-$/) { $landscape_mode = 0; } + elsif (/^-latex=(.*)$/) { + $latex = $1; + } + elsif (/^-latexoption=(.*)$/) { + push @extra_latex_options, $1; + push @extra_pdflatex_options, $1; + push @extra_lualatex_options, $1; + push @extra_xelatex_options, $1; + } + elsif ( /^-logfilewarninglist$/ || /^-logfilewarnings$/ ) + { $silence_logfile_warnings = 0; } + elsif ( /^-logfilewarninglist-$/ || /^-logfilewarnings-$/ ) + { $silence_logfile_warnings = 1; } +# See above for -M + elsif (/^-MF$/) { + if ( $ARGV[0] eq '' ) { + &exit_help( "No file name specified after -MF switch"); + } + $deps_file = $ARGV[0]; + shift; + } + elsif ( /^-MP$/ ) { $dependents_phony = 1; } + elsif (/^-new-viewer$/) { + $new_viewer_always = 1; + } + elsif (/^-new-viewer-$/) { + $new_viewer_always = 0; + } + elsif (/^-norc$/ ) { + $auto_rc_use = 0; + # N.B. This has already been obeyed. + } + elsif ( /^-output-directory=(.*)$/ ||/^-outdir=(.*)$/ ) { + $out_dir = $1; + } + elsif (/^-p$/) { $printout_mode = 1; + $preview_continuous_mode = 0; # to avoid conflicts + $preview_mode = 0; + } + elsif (/^-p-$/) { $printout_mode = 0; } + elsif (/^-pdf$/) { $pdf_mode = 1; } + elsif (/^-pdf-$/) { $pdf_mode = 0; } + elsif (/^-pdfdvi$/){ $pdf_mode = 3; } + elsif (/^-pdflua$/){ $pdf_mode = 4; } + elsif (/^-pdfxe$/) { $pdf_mode = 5; } +# elsif (/^-pdflatex$/) { +# $pdflatex = "pdflatex %O %S"; +# $pdf_mode = 1; +# $dvi_mode = $postscript_mode = 0; +# } + elsif (/^-pdflatex=(.*)$/) { + $pdflatex = $1; + } + elsif (/^-pdfps$/) { $pdf_mode = 2; } + elsif (/^-print=(.*)$/) { + $value = $1; + if ( $value =~ /^dvi$|^ps$|^pdf$|^auto$/ ) { + $print_type = $value; + $printout_mode = 1; + } + else { + &exit_help("$My_name: unknown print type '$value' in option '$_'"); + } + } + elsif (/^-ps$/) { $postscript_mode = 1; } + elsif (/^-ps-$/) { $postscript_mode = 0; } + elsif (/^-pv$/) { $preview_mode = 1; + $preview_continuous_mode = 0; # to avoid conflicts + $printout_mode = 0; + } + elsif (/^-pv-$/) { $preview_mode = 0; } + elsif (/^-pvc$/) { $preview_continuous_mode = 1; + $force_mode = 0; # So that errors do not cause loops + $preview_mode = 0; # to avoid conflicts + $printout_mode = 0; + } + elsif (/^-pvc-$/) { $preview_continuous_mode = 0; } + elsif (/^-recorder$/ ){ $recorder = 1; } + elsif (/^-recorder-$/ ){ $recorder = 0; } + elsif (/^-rules$/ ) { $rules_list = 1; } + elsif (/^-norules$/ || /^-rules-$/ ) { $rules_list = 0; } + elsif (/^-showextraoptions$/) { + print "List of extra latex and pdflatex options recognized by $my_name.\n", + "These are passed as is to (pdf)latex. They may not be recognized by\n", + "particular versions of (pdf)latex. This list is a combination of those\n", + "for TeXLive and MikTeX.\n", + "\n", + "Note that in addition to the options in this list, there are several\n", + "options known to the (pdf)latex programs that are also recognized by\n", + "latexmk and trigger special behavior by latexmk. Since these options\n", + "appear in the main list given by running 'latexmk --help', they do not\n", + "appear in the following list\n", + "NOTE ALSO: Not all of these options are supported by all versions of (pdf)latex.\n", + "\n"; + foreach $option ( sort( keys %allowed_latex_options, keys %allowed_latex_options_with_arg ) ) { + if (exists $allowed_latex_options{$option} ) { print " $allowed_latex_options{$option}\n"; } + if (exists $allowed_latex_options_with_arg{$option} ) { print " $allowed_latex_options_with_arg{$option}\n"; } + } + exit; + } + elsif (/^-silent$/ || /^-quiet$/ ){ $silent = 1; } + elsif (/^-time$/) { $show_time = 1;} + elsif (/^-time-$/) { $show_time = 0;} + elsif (/^-use-make$/) { $use_make_for_missing_files = 1; } + elsif (/^-use-make-$/) { $use_make_for_missing_files = 0; } + elsif (/^-v$/ || /^-version$/) { + print "\n$version_details. Version $version_num\n"; + exit; + } + elsif (/^-verbose$/) { $silent = 0; } + elsif (/^-view=default$/) { $view = "default";} + elsif (/^-view=dvi$/) { $view = "dvi";} + elsif (/^-view=none$/) { $view = "none";} + elsif (/^-view=ps$/) { $view = "ps";} + elsif (/^-view=pdf$/) { $view = "pdf"; } + elsif (/^-lualatex$/) { + $pdf_mode = 4; + $dvi_mode = $postscript_mode = 0; + } + elsif (/^-xelatex$/) { + $pdf_mode = 5; + $dvi_mode = $postscript_mode = 0; + } + elsif (/^-e$/) { + if ( $#ARGV < 0 ) { + &exit_help( "No code to execute specified after -e switch"); + } + execute_code_string( $ARGV[0] ); + shift; + } + elsif (/^-r$/) { + if ( $ARGV[0] eq '' ) { + &exit_help( "No RC file specified after -r switch"); + } + if ( -e $ARGV[0] ) { + process_rc_file( $ARGV[0] ); + } + else { + die "$My_name: RC file [$ARGV[0]] does not exist\n"; + } + shift; + } + elsif (/^-bm$/) { + if ( $ARGV[0] eq '' ) { + &exit_help( "No message specified after -bm switch"); + } + $banner = 1; $banner_message = $ARGV[0]; + shift; + } + elsif (/^-bi$/) { + if ( $ARGV[0] eq '' ) { + &exit_help( "No intensity specified after -bi switch"); + } + $banner_intensity = $ARGV[0]; + shift; + } + elsif (/^-bs$/) { + if ( $ARGV[0] eq '' ) { + &exit_help( "No scale specified after -bs switch"); + } + $banner_scale = $ARGV[0]; + shift; + } + elsif (/^-dF$/) { + if ( $ARGV[0] eq '' ) { + &exit_help( "No dvi filter specified after -dF switch"); + } + $dvi_filter = $ARGV[0]; + shift; + } + elsif (/^-pF$/) { + if ( $ARGV[0] eq '' ) { + &exit_help( "No ps filter specified after -pF switch"); + } + $ps_filter = $ARGV[0]; + shift; + } + elsif ( ( exists( $allowed_latex_options{$_} ) ) + || ( /^(-.+)=/ && exists( $allowed_latex_options_with_arg{$1} ) ) + ) + { + push @extra_latex_options, $original; + push @extra_pdflatex_options, $original; + push @extra_lualatex_options, $original; + push @extra_xelatex_options, $original; + } + elsif (/^-/) { + warn "$My_name: $_ bad option\n"; + $bad_options++; + } + else { + push @command_line_file_list, $_ ; + } +} + +if ( $bad_options > 0 ) { + &exit_help( "Bad options specified" ); +} + +warn "$My_name: This is $version_details, version: $version_num.\n", + unless $silent; + +if ( ($out_dir ne '') && ($aux_dir eq '') ){ + $aux_dir = $out_dir; +} + +# Versions terminating in directory/path separator +$out_dir1 = $out_dir; +$aux_dir1 = $aux_dir; +foreach ( $aux_dir1, $out_dir1 ) { + if ( ($_ ne '') && ! m([\\/\:]$) ) { + $_ .= '/'; + } +} + +# At least one widely package (revtex4-1) generates a bib file +# (which is used in revtex4-1 for putting footnotes in the reference +# list), and bibtex must be run to use it. But latexmk needs to +# determine the existence of the bib file by use of kpsewhich, otherwise +# there is an error. So cope with this situation (and any analogous +# cases by adding the aux_dir to the relevant path search environment +# variables. BIBINPUTS seems to be the only one currently affected. +foreach ( 'BIBINPUTS' ) { + if ( exists $ENV{$_} ) { + $ENV{$_} = $aux_dir.$search_path_separator.$ENV{$_}; + } + else { + $ENV{$_} = $aux_dir.$search_path_separator; + } +} + + +if ($bibtex_use > 1) { + push @generated_exts, 'bbl'; +} + +# For backward compatibility, convert $texfile_search to @default_files +# Since $texfile_search is initialized to "", a nonzero value indicates +# that an initialization file has set it. +if ( $texfile_search ne "" ) { + @default_files = split /\s+/, "*.tex $texfile_search"; +} + +#Glob the filenames command line if the script was not invoked under a +# UNIX-like environment. +# Cases: (1) MS/MSwin native Glob +# (OS detected as MSWin32) +# (2) MS/MSwin cygwin Glob [because we do not know whether +# the cmd interpreter is UNIXy (and does glob) or is +# native MS-Win (and does not glob).] +# (OS detected as cygwin) +# (3) UNIX Don't glob (cmd interpreter does it) +# (Currently, I assume this is everything else) +if ( ($^O eq "MSWin32") || ($^O eq "cygwin") ) { + # Preserve ordering of files + @file_list = glob_list1(@command_line_file_list); +#print "A1:File list:\n"; +#for ($i = 0; $i <= $#file_list; $i++ ) { print "$i: '$file_list[$i]'\n"; } +} +else { + @file_list = @command_line_file_list; +} +@file_list = uniq1( @file_list ); + + +# Check we haven't selected mutually exclusive modes. +# Note that -c overrides all other options, but doesn't cause +# an error if they are selected. +if (($printout_mode && ( $preview_mode || $preview_continuous_mode )) + || ( $preview_mode && $preview_continuous_mode )) +{ + # Each of the options -p, -pv, -pvc turns the other off. + # So the only reason to arrive here is an incorrect inititalization + # file, or a bug. + &exit_help( "Conflicting options (print, preview, preview_continuous) selected"); +} + +if ( @command_line_file_list ) { + # At least one file specified on command line (before possible globbing). + if ( !@file_list ) { + &exit_help( "Wildcards in file names didn't match any files"); + } +} +else { + # No files specified on command line, try and find some + # Evaluate in order specified. The user may have some special + # for wanting processing in a particular order, especially + # if there are no wild cards. + # Preserve ordering of files + my @file_list1 = uniq1( glob_list1(@default_files) ); + my @excluded_file_list = uniq1( glob_list1(@default_excluded_files) ); + # Make hash of excluded files, for easy checking: + my %excl = (); + foreach my $file (@excluded_file_list) { + $excl{$file} = ''; + } + foreach my $file (@file_list1) { + push( @file_list, $file) unless ( exists $excl{$file} ); + } + if ( !@file_list ) { + &exit_help( "No file name specified, and I couldn't find any"); + } +} + +$num_files = $#file_list + 1; +$num_specified = $#command_line_file_list + 1; + +#print "Command line file list:\n"; +#for ($i = 0; $i <= $#command_line_file_list; $i++ ) { print "$i: '$command_line_file_list[$i]'\n"; } +#print "File list:\n"; +#for ($i = 0; $i <= $#file_list; $i++ ) { print "$i: '$file_list[$i]'\n"; } + + +# If selected a preview-continuous mode, make sure exactly one filename was specified +if ($preview_continuous_mode && ($num_files != 1) ) { + if ($num_specified > 1) { + &exit_help( + "Need to specify exactly one filename for ". + "preview-continuous mode\n". + " but $num_specified were specified" + ); + } + elsif ($num_specified == 1) { + &exit_help( + "Need to specify exactly one filename for ". + "preview-continuous mode\n". + " but wildcarding produced $num_files files" + ); + } + else { + &exit_help( + "Need to specify exactly one filename for ". + "preview-continuous mode.\n". + " Since none were specified on the command line, I looked for \n". + " files in '@default_files'.\n". + " But I found $num_files files, not 1." + ); + } +} + +# If selected jobname, can only apply that to one file: +if ( ($jobname ne '') && ($num_files > 1) ) { + &exit_help( + "Need to specify at most one filename if ". + "jobname specified, \n". + " but $num_files were found (after defaults and wildcarding)." + ); +} + + +# Normalize the commands, to have place-holders for source, dest etc: +&fix_cmds; + +# Add common options +add_option( $latex_default_switches, \$latex ); +add_option( $pdflatex_default_switches, \$pdflatex ); +add_option( $lualatex_default_switches, \$lualatex ); +add_option( $xelatex_default_switches, \$xelatex ); + +foreach (@extra_latex_options) { add_option( $_, \$latex ); } +foreach (@extra_pdflatex_options) { add_option( $_, \$pdflatex ); } +foreach (@extra_lualatex_options) { add_option( $_, \$lualatex ); } +foreach (@extra_xelatex_options) { add_option( $_, \$xelatex ); } + + +# If landscape mode, change dvips processor, and the previewers: +if ( $landscape_mode ) +{ + $dvips = $dvips_landscape; + $dvi_previewer = $dvi_previewer_landscape; + $ps_previewer = $ps_previewer_landscape; +} + +if ( $silent ) { + add_option( "$latex_silent_switch", \$latex ); + add_option( "$pdflatex_silent_switch", \$pdflatex ); + add_option( "$lualatex_silent_switch", \$lualatex ); + add_option( "$xelatex_silent_switch", \$xelatex ); + add_option( "$biber_silent_switch", \$biber ); + add_option( "$bibtex_silent_switch", \$bibtex ); + add_option( "$makeindex_silent_switch", \$makeindex ); + add_option( "$dvipdf_silent_switch", \$dvipdf ); + add_option( "$dvips_silent_switch", \$dvips ); + add_option( "$xdvipdfmx_silent_switch", \$xdvipdfmx ); +} + +if ( $recorder ) { + add_option( "-recorder", \$latex, \$pdflatex, \$lualatex, \$xelatex ); +} + +# If the output and/or aux directories are specified, fix the (pdf)latex +# commands to use them. +# N.B. We'll ensure that the directories actually exist only after a +# possible cd to the document directory, since the directories can be +# relative to the document. + +if ( $out_dir ) { + add_option( "-output-directory=\"$out_dir\"", + \$latex, \$pdflatex, \$lualatex, \$xelatex ); +} +if ( $aux_dir && ($aux_dir ne $out_dir) ) { + # N.B. If $aux_dir and $out_dir are the same, then the -output-directory + # option is sufficient, especially because the -aux-directory exists + # only in MiKTeX, not in TeXLive. + add_option( "-aux-directory=\"$aux_dir\"", + \$latex, \$pdflatex, \$lualatex, \$xelatex ); +} + +if ( $jobname ne '' ) { + $jobstring = "--jobname=\"$jobname\""; + add_option( "$jobstring", \$latex, \$lualatex, \$pdflatex, \$xelatex ); +} + +# Which kind of file do we preview? +if ( $view eq "default" ) { + # If default viewer requested, use "highest" of dvi, ps and pdf + # that was requested by user. + # No explicit request means view dvi. + $view = "dvi"; + if ( $postscript_mode ) { $view = "ps"; } + if ( $pdf_mode ) { $view = "pdf"; } +} + +# Make sure we make the kind of file we want to view: +if ($view eq 'dvi') { $dvi_mode = 1; } +if ($view eq 'ps') { $postscript_mode = 1; } +if ( ($view eq 'pdf') && ($pdf_mode == 0) ) { + $pdf_mode = 1; +} + +# Make sure that we make something if all requests are turned off +if ( ! ( $dvi_mode || $pdf_mode || $postscript_mode || $printout_mode) ) { + print "No specific requests made, so default to dvi by latex\n"; + $dvi_mode = 1; +} + +# Set new-style requested rules: +if ( $dvi_mode ) { $requested_filerules{'latex'} = 1; } +if ( $pdf_mode == 1 ) { $requested_filerules{'pdflatex'} = 1; } +elsif ( $pdf_mode == 2 ) { + $requested_filerules{'latex'} = 1; + $requested_filerules{'dvips'} = 1; + $requested_filerules{'ps2pdf'} = 1; +} +elsif ( $pdf_mode == 3 ) { + $requested_filerules{'latex'} = 1; + $requested_filerules{'dvipdf'} = 1; +} +elsif ( $pdf_mode == 4 ) { + $requested_filerules{'lualatex'} = 1; +} +elsif ( $pdf_mode == 5 ) { + $requested_filerules{'xelatex'} = 1; + $requested_filerules{'xdvipdfmx'} = 1; +} +if ( $postscript_mode ) { + $requested_filerules{'latex'} = 1; + $requested_filerules{'dvips'} = 1; +} +if ($print_type eq 'auto') { + if ( $postscript_mode ) { $print_type = 'ps'; } + elsif ( $pdf_mode ) { $print_type = 'pdf'; } + elsif ( $dvi_mode ) { $print_type = 'dvi'; } + else { $print_type = 'none'; } +} +if ( $printout_mode ) { + $one_time{'print'} = 1; + if ($print_type eq 'none'){ + warn "$My_name: You have requested printout, but \$print_type is set to 'none'\n"; + } +} +if ( $preview_continuous_mode || $preview_mode ) { $one_time{'view'} = 1; } +if ( length($dvi_filter) != 0 ) { $requested_filerules{'dvi_filter'} = 1; } +if ( length($ps_filter) != 0 ) { $requested_filerules{'ps_filter'} = 1; } +if ( $banner ) { $requested_filerules{'dvips'} = 1; } + + +if ( $pdf_mode == 2 ) { + # We generate pdf from ps. Make sure we have the correct kind of ps. + add_option( "$dvips_pdf_switch", \$dvips ); +} + +# Note sleep has granularity of 1 second. +# Sleep periods 0 < $sleep_time < 1 give zero delay, +# which is probably not what the user intended. +# Sleep periods less than zero give infinite delay +if ( $sleep_time < 0 ) { + warn "$My_name: Correcting negative sleep_time to 1 sec.\n"; + $sleep_time = 1; +} +elsif ( ($sleep_time < 1) && ( $sleep_time != 0 ) ) { + warn "$My_name: Correcting nonzero sleep_time of less than 1 sec to 1 sec.\n"; + $sleep_time = 1; +} +elsif ( $sleep_time == 0 ) { + warn "$My_name: sleep_time was configured to zero.\n", + " Do you really want to do this? It will give 100% CPU usage.\n"; +} + +# Make convenient forms for lookup. +# Extensions always have period. + +# Convert @generated_exts to a hash for ease of look up and deletion +# Keep extension without period! +%generated_exts_all = (); +foreach (@generated_exts ) { + $generated_exts_all{$_} = 1; +} + +if ($aux_dir) { + # Ensure $aux_dir is in TEXINPUTS search path. + # This is used by dvips for files generated by mpost. + if ( ! exists $ENV{TEXINPUTS} ) { + # Note the trailing ":" which ensures that the last item + # in the list of paths is the empty path, which actually + # means the default path, i.e., the following means that + # the TEXINPUTS search path is $aux_dir and the standard + # value. + $ENV{TEXINPUTS} = $aux_dir.$search_path_separator; + } + elsif ( $ENV{TEXINPUTS} !~ /$aux_dir$search_path_separator/ ) { + $ENV{TEXINPUTS} = $aux_dir.$search_path_separator.$ENV{TEXINPUTS}; + } +} + +$quell_uptodate_msgs = $silent; + # Whether to quell informational messages when files are uptodate + # Will turn off in -pvc mode + +$failure_count = 0; +@failed_primaries = (); + +if ($deps_file eq '' ) { + # Standardize name used for stdout + $deps_file = '-'; +} + +# In non-pvc mode, the dependency list is global to all processed TeX files, +# so we open a single file here, and add items to it after processing each file +# But in -pvc mode, the dependency list should be written after round of +# processing the single TeX file (as if each round were a separate run of +# latexmk). There's undoubtedly some non-optimal structuring here! +if ( $dependents_list && ! $preview_continuous_mode ) { + $deps_handle = new FileHandle "> $deps_file"; + if (! defined $deps_handle ) { + die "Cannot open '$deps_file' for output of dependency information\n"; + } +} + +# Remove leading and trailing space in the following space-separated lists, +# and collapse multiple spaces to one, +# to avoid getting incorrect blank items when they are split. +foreach ($clean_ext, $clean_full_ext) { s/^\s+//; s/\s+$//; s/\s+/ /g; } + + +FILE: +foreach $filename ( @file_list ) +{ + # Global variables for making of current file: + $updated = 0; + $failure = 0; # Set nonzero to indicate failure at some point of + # a make. Use value as exit code if I exit. + $failure_msg = ''; # Indicate reason for failure + + if ( $do_cd ) { + ($filename, $path) = fileparse( $filename ); + warn "$My_name: Changing directory to '$path'\n"; + pushd( $path ); + } + else { + $path = ''; + } + + # Ensure the output/auxiliary directories exist, if need be + if ( $out_dir ) { + if ( ! -e $out_dir ) { + warn "$My_name: making output directory '$out_dir'\n" + if ! $silent; + make_path $out_dir; + } + elsif ( ! -d $out_dir ) { + warn "$My_name: you requested output directory '$out_dir',\n", + " but an ordinary file of the same name exists, which will\n", + " probably give an error later\n"; + } + } + + if ( $aux_dir && ($aux_dir ne $out_dir) ) { + # N.B. If $aux_dir and $out_dir are the same, then the -output-directory + # option is sufficient, especially because the -aux-directory exists + # only in MiKTeX, not in TeXLive. + if ( ! -e $aux_dir ) { + warn "$My_name: making auxiliary directory '$aux_dir'\n" + if ! $silent; + make_path $aux_dir; + } + elsif ( ! -d $aux_dir ) { + warn "$My_name: you requested aux directory '$aux_dir',\n", + " but an ordinary file of the same name exists, which will\n", + " probably give an error later\n"; + } + } + + ## remove extension from filename if was given. + if ( find_basename($filename, $root_filename, $texfile_name) ) + { + if ( $force_mode ) { + warn "$My_name: Could not find file [$texfile_name]\n"; + } + else { + &ifcd_popd; + &exit_msg1( "Could not find file [$texfile_name]", + 11); + } + } + if ($jobname ne '' ) { + $root_filename = $jobname; + } + + $aux_main = "$aux_dir1$root_filename.aux"; + $log_name = "$aux_dir1$root_filename.log"; + $fdb_name = "$aux_dir1$root_filename.$fdb_ext"; + + # Initialize basic dependency information: + + # For use under error conditions: + @default_includes = ($texfile_name, $aux_main); + + # Initialize rule database. + # ?? Should I also initialize file database? + %rule_list = (); + &rdb_make_rule_list; + &rdb_set_rules( \%rule_list, \%extra_rule_spec ); + + if ( $cleanup_mode > 0 ) { +# ?? MAY NEED TO FIX THE FOLLOWING IF $aux_dir or $out_dir IS SET. + my %other_generated = (); + my @index_bibtex_generated = (); + my @aux_files = (); + $have_fdb = 0; + if ( -e $fdb_name ) { + print "$My_name: Examining fdb file '$fdb_name' for rules ...\n" + if $diagnostics; + $have_fdb = ( 0 == rdb_read( $fdb_name ) ); + } + if ( $have_fdb ) { + rdb_for_all( + sub { # Find generated files at rule level + my ($base, $path, $ext) = fileparseA( $$Psource ); + $base = $path.$base; + if ( $rule =~ /^makeindex/ ) { + push @index_bibtex_generated, $$Psource, $$Pdest, "$base.ilg"; + } + elsif ( $rule =~ /^(bibtex|biber)/ ) { + push @index_bibtex_generated, $$Pdest, "$base.blg"; + push @aux_files, $$Psource; + } + elsif ( exists $other_generated{$$Psource} ) { + $other_generated{$$Pdest}; + } + }, + sub { # Find generated files at source file level + if ( $file =~ /\.aux$/ ) { push @aux_files, $file; } + } + ); + } + elsif ( -e $log_name ) { + # No fdb file, but log file exists, so do inferior job by parse_log + print "$My_name: Examining log file '$log_name' for generated files...\n" + if $diagnostics; + # Variables set by parse_log. Can I remove them? + local %generated_log = (); + local %dependents = (); # Maps files to status. Not used here. + local @bbl_files = (); # Not used here. + local %idx_files = (); # Maps idx_file to (ind_file, base). Not used here. + local %conversions = (); # (pdf)latex-performed conversions. Not used here. + # Maps output file created and read by (pdf)latex + # to source file of conversion. + local $primary_out = ''; # Actual output file (dvi or pdf). Not used here. + local $fls_file_analyzed = 0; + &parse_log; + %other_generated = %generated_log; + } + else { + print "$My_name: No fdb or log file, so clean up default set of files ...\n" + if $diagnostics; + } + + if ( ($go_mode == 2) && !$silent ) { + warn "$My_name: Removing all generated files\n" unless $silent; + } + if ($bibtex_use < 2) { + delete $generated_exts_all{'bbl'}; + } + # Convert two arrays to hashes: + my %index_bibtex_generated = (); + my %aux_files = (); + foreach (@index_bibtex_generated) { + $index_bibtex_generated{$_} = 1 + unless ( /\.bbl$/ && ($bibtex_use < 2) ); + delete( $other_generated{$_} ); + } + foreach (@aux_files) { + $aux_files{$_} = 1; + delete( $other_generated{$_} ); + } + if ($diagnostics) { + show_array( "For deletion, the following were determined from fdb file or log file:\n" + ." Generated (from makeindex and bibtex):", + keys %index_bibtex_generated ); + show_array( " Aux files:", keys %aux_files ); + show_array( " Other generated files:\n" + ." (only deleted if \$cleanup_includes_generated is set): ", + keys %other_generated ); + show_array( " Yet other generated files:\n", + keys %generated_exts_all ); + } + &cleanup1( $aux_dir1, $fdb_ext, 'blg', 'ilg', 'log', 'aux.bak', 'idx.bak', + split('\s+',$clean_ext), + keys %generated_exts_all + ); + unlink_or_move( 'texput.log', "texput.aux", "missfont.log", + keys %index_bibtex_generated, + keys %aux_files ); + if ( $dependents_list && ( $deps_file ne '-' ) ) { + unlink_or_move( $deps_file ); + } + if ($cleanup_includes_generated) { + unlink_or_move( keys %other_generated ); + } + if ( $cleanup_includes_cusdep_generated) { + &cleanup_cusdep_generated; + } + if ( $cleanup_mode == 1 ) { + &cleanup1( $out_dir1, 'dvi', 'dviF', 'ps', 'psF', 'pdf', + 'synctex.gz', 'xdv', + split('\s+', $clean_full_ext) + ); + } + } + if ($cleanup_fdb) { + unlink_or_move( $fdb_name ); + # If the fdb file exists, it will have been read, and therefore changed + # rule database. But deleting the fdb file implies we also want + # a virgin rule database, so we must reset it: + rdb_set_rules( \%rule_list ); + } + if ($cleanup_only) { next FILE; } + + +#??? The following are not needed if use rdb_make. +# ?? They may be set too early? +# Arrays and hashes for picking out accessible rules. +# Distinguish rules for making files and others + @accessible_all = sort ( &rdb_accessible( keys %requested_filerules, keys %one_time )); + %accessible_filerules = (); + foreach (@accessible_all) { + unless ( /view/ || /print/ ) { $accessible_filerules{$_} = 1; } + } + @accessible_filerules = sort keys %accessible_filerules; + +# show_array ( "=======All rules used", @accessible_all ); +# show_array ( "=======Requested file rules", sort keys %requested_filerules ); +# show_array ( "=======Rules for files", @accessible_filerules ); + + if ( $diagnostics ) { + print "$My_name: Rules after start up for '$texfile_name'\n"; + rdb_show(); + } + + %primaries = (); + foreach (@accessible_all) { + if ( ($_ eq 'latex') || ($_ eq 'pdflatex') || ($_ eq 'lualatex') + || ($_ eq 'xelatex') ) + { $primaries{$_} = 1; } + } + + $have_fdb = 0; + if (! -e $aux_main ) { + # No aux file => set up trivial aux file + # and corresponding fdb_file. Arrange them to provoke one run + # as minimum, but no more if actual aux file is trivial. + # (Useful on big files without cross references.) + # If aux file doesn't exist, then any fdb file is surely + # wrong. + # Previously, I had condition for this as being both aux and + # fdb files failing to exist. But it's not obvious what to + # do if aux exists and fdb doesn't. So I won't do anything. + &set_trivial_aux_fdb; + } + + if ( -e $fdb_name ) { + $rdb_errors = rdb_read( $fdb_name ); + $have_fdb = ($rdb_errors == 0); + } + if (!$have_fdb) { + # We didn't get a valid set of data on files used in + # previous run. So use filetime criterion for make + # instead of change from previous run, until we have + # done our own make. + rdb_recurse( [keys %possible_primaries], + sub{ if ( $$Ptest_kind == 1 ) { $$Ptest_kind = 3;} } + ); + if ( -e $log_name ) { + rdb_for_some( [keys %possible_primaries], \&rdb_set_latex_deps ); + } + } + foreach $rule ( rdb_accessible( uniq1( keys %requested_filerules ) ) ){ + # For all source files of all accessible rules, + # if the file data are not already set (e.g., from fdb_latexmk + # file, set them from disk. + rdb_one_rule ($rule, undef, + sub{ if ( $$Ptime == 0) { &rdb_update1; } } + ); + } + + if ($go_mode) { + # Force everything to be remade. + rdb_recurse( [keys %requested_filerules], sub{$$Pout_of_date=1;} ); + } + + + if ( $diagnostics ) { + print "$My_name: Rules after initialization\n"; + rdb_show(); + } + + #************************************************************ + + if ( $preview_continuous_mode ) { + &make_preview_continuous; + next FILE; + } + + +## Handling of failures: +## Variable $failure is set to indicate a failure, with information +## put in $failure_msg. +## These variables should be set to 0 and '' at any point at which it +## should be assumed that no failures have occurred. +## When after a routine is called it is found that $failure is set, then +## processing should normally be aborted, e.g., by return. +## Then there is a cascade of returns back to the outermost level whose +## responsibility is to handle the error. +## Exception: An outer level routine may reset $failure and $failure_msg +## after initial processing, when the error condition may get +## ameliorated later. + #Initialize failure flags now. + $failure = 0; + $failure_msg = ''; + $failure = rdb_make( keys %requested_filerules ); + if ( ( $failure <= 0 ) || $force_mode ) { + rdb_for_some( [keys %one_time], \&rdb_run1 ); + } + if ($failure > 0) { next FILE; } +} # end FILE +continue { + if ($deps_handle) { deps_list($deps_handle); } + # If requested, print the list of rules. But don't do this in -pvc + # mode, since the rules list has already been printed. + if ($rules_list && ! $preview_continuous_mode) { rdb_list(); } + # Handle any errors + $error_message_count = rdb_show_rule_errors(); + if ( ($error_message_count == 0) || ($failure > 0) ) { + if ( $failure_msg ) { + #Remove trailing space + $failure_msg =~ s/\s*$//; + warn "$My_name: Did not finish processing file '$filename':\n", + " $failure_msg\n"; + $failure = 1; + } + } + if ( ($failure > 0) || ($error_message_count > 0) ) { + $failure_count ++; + push @failed_primaries, $filename; + } + &ifcd_popd; +} +close($deps_handle) if ( $deps_handle ); + +if ($show_time) { show_timing();} + +sub show_timing { + my $processing_time = processing_time() - $processing_time1; + print @timings, "Accumulated processing time = $processing_time\n"; + @timings = (); + $processing_time1 = processing_time(); +} + +# If we get here without going through the continue section: +if ( $do_cd && ($#dir_stack > -1) ) { + # Just in case we did an abnormal exit from the loop + warn "$My_name: Potential bug: dir_stack not yet unwound, undoing all directory changes now\n"; + &finish_dir_stack; +} + +if ($failure_count > 0) { + if ( $#file_list > 0 ) { + # Error occured, but multiple files were processed, so + # user may not have seen all the error messages + warn "\n------------\n"; + show_array( + "$My_name: Some operations failed, for the following tex file(s)", + @failed_primaries); + } + if ( !$force_mode ) { + warn "$My_name: Use the -f option to force complete processing,\n", + " unless error was exceeding maximum runs of latex/pdflatex.\n"; + } + exit 12; +} + + + +# end MAIN PROGRAM +############################################################# + +sub fix_cmds { + # If commands do not have placeholders for %S etc, put them in + foreach ($latex, $pdflatex, $lpr, $lpr_dvi, $lpr_pdf, + $pdf_previewer, $ps_previewer, $ps_previewer_landscape, + $dvi_previewer, $dvi_previewer_landscape, + $kpsewhich + ) { + # Source only + if ( $_ && ! /%/ ) { $_ .= " %O %S"; } + } + foreach ($pdf_previewer, $ps_previewer, $ps_previewer_landscape, + $dvi_previewer, $dvi_previewer_landscape, + ) { + # Run previewers detached + if ( $_ && ! /^(nostart|NONE|internal) / ) { + $_ = "start $_"; + } + } + foreach ($biber, $bibtex) { + # Base only + if ( $_ && ! /%/ ) { $_ .= " %O %B"; } + } + foreach ($dvipdf, $ps2pdf) { + # Source and dest without flag for destination + if ( $_ && ! /%/ ) { $_ .= " %O %S %D"; } + } + foreach ($dvips, $makeindex) { + # Source and dest with -o dest before source + if ( $_ && ! /%/ ) { $_ .= " %O -o %D %S"; } + } + foreach ($dvi_filter, $ps_filter) { + # Source and dest, but as filters + if ( $_ && ! /%/ ) { $_ .= " %O <%S >%D"; } + } +} #END fix_cmds + +############################################################# + +sub add_option { + # Call add_option( $opt, \$cmd ... ) + # Add option to one or more commands + my $option = shift; + while (@_) { + if ( ${$_[0]} !~ /%/ ) { &fix_cmds; } + ${$_[0]} =~ s/%O/$option %O/; + shift; + } +} #END add_option + +############################################################# + +sub rdb_make_rule_list { +# Set up specifications for standard rules, adjusted to current conditions +# Substitutions: %S = source, %D = dest, %B = this rule's base +# %T = texfile, %R = root = base for latex. +# %Y for $aux_dir1, %Z for $out_dir1 + + # Defaults for dvi, ps, and pdf files + # Use local, not my, so these variables can be referenced + local $dvi_final = "%Z%R.dvi"; + local $ps_final = "%Z%R.ps"; + local $pdf_final = "%Z%R.pdf"; + local $xdv_final = "%Z%R.xdv"; + if ( length($dvi_filter) > 0) { + $dvi_final = "%Z%R.dviF"; + } + if ( length($ps_filter) > 0) { + $ps_final = "%Z%R.psF"; + } + + my $print_file = ''; + my $print_cmd = 'NONE'; + if ( $print_type eq 'dvi' ) { + $print_file = $dvi_final; + $print_cmd = $lpr_dvi; + } + elsif ( $print_type eq 'pdf' ) { + $print_file = $pdf_final; + $print_cmd = $lpr_pdf; + } + elsif ( $print_type eq 'ps' ) { + $print_file = $ps_final; + $print_cmd = $lpr; + } + elsif ( $print_type eq 'none' ) { + $print_cmd = 'NONE echo NO PRINTING CONFIGURED'; + } + + my $view_file = ''; + my $viewer = ''; + my $viewer_update_method = 0; + my $viewer_update_signal = undef; + my $viewer_update_command = undef; + + if ( ($view eq 'dvi') || ($view eq 'pdf') || ($view eq 'ps') ) { + $view_file = ${$view.'_final'}; + $viewer = ${$view.'_previewer'}; + $viewer_update_method = ${$view.'_update_method'}; + $viewer_update_signal = ${$view.'_update_signal'}; + if (defined ${$view.'_update_command'}) { + $viewer_update_command = ${$view.'_update_command'}; + } + } + # Specification of internal command for viewer update: + my $PA_update = ['do_update_view', $viewer_update_method, $viewer_update_signal, 0, 1]; + +# For test_kind: Use file contents for latex and friends, but file time for the others. +# This is because, especially for dvi file, the contents of the file may contain +# a pointer to a file to be included, not the contents of the file! + %rule_list = ( + 'latex' => [ 'primary', "$latex", '', "%T", "%Z%B.dvi", "%R", 1, ["%Y%R.log"] ], + 'pdflatex' => [ 'primary', "$pdflatex", '', "%T", "%Z%B.pdf", "%R", 1, ["%Y%R.log"] ], + 'lualatex' => [ 'primary', "$lualatex", '', "%T", "%Z%B.pdf", "%R", 1, ["%Y%R.log"] ], + 'xelatex' => [ 'primary', "$xelatex", '', "%T", "%Z%B.xdv", "%R", 1, ["%Y%R.log"] ], + 'dvipdf' => [ 'external', "$dvipdf", 'do_viewfile', $dvi_final, "%B.pdf", "%Z%R", 2 ], + 'xdvipdfmx' => [ 'external', "$xdvipdfmx", 'do_viewfile', $xdv_final, "%B.pdf", "%Z%R", 2 ], + 'dvips' => [ 'external', "$dvips", 'do_viewfile', $dvi_final, "%B.ps", "%Z%R", 2 ], + 'dvifilter'=> [ 'external', $dvi_filter, 'do_viewfile', "%B.dvi", "%B.dviF", "%Z%R", 2 ], + 'ps2pdf' => [ 'external', "$ps2pdf", 'do_viewfile', $ps_final, "%B.pdf", "%Z%R", 2 ], + 'psfilter' => [ 'external', $ps_filter, 'do_viewfile', "%B.ps", "%B.psF", "%Z%R", 2 ], + 'print' => [ 'external', "$print_cmd", 'if_source', $print_file, "", "", 2 ], + 'update_view' => [ 'external', $viewer_update_command, $PA_update, + $view_file, "", "", 2 ], + 'view' => [ 'external', "$viewer", 'if_source', $view_file, "", "", 2 ], + ); + +# Ensure we only have one way to make pdf file, and that it is appropriate: + if ($pdf_mode == 2) { delete $rule_list{'dvipdf'}; delete $rule_list{'pdflatex'}; delete $rule_list{'lualatex'}; delete $rule_list{'xelatex'}; } + elsif ($pdf_mode == 3) { delete $rule_list{'pdflatex'}; delete $rule_list{'ps2pdf'}; delete $rule_list{'lualatex'}; delete $rule_list{'xelatex'}; } + elsif ($pdf_mode == 4) { delete $rule_list{'pdflatex'}; delete $rule_list{'ps2pdf'}; delete $rule_list{'dvipdf'}; delete $rule_list{'xelatex'}; } + elsif ($pdf_mode == 5) { delete $rule_list{'pdflatex'}; delete $rule_list{'ps2pdf'}; delete $rule_list{'dvipdf'}; delete $rule_list{'lualatex'}; } + else { # Default is to leave pdflatex + delete $rule_list{'dvipdf'}; delete $rule_list{'ps2pdf'}; delete $rule_list{'lualatex'}; delete $rule_list{'xelatex'}; + } + +} # END rdb_make_rule_list + +#************************************************************ + +sub rdb_set_rules { + # Call rdb_set_rules( \%rule_list, ...) + # Set up rule database from definitions + + # Map of files to rules that MAKE them: + %rule_db = (); + + foreach my $Prule_list (@_) { + foreach my $rule ( keys %$Prule_list) { + my ( $cmd_type, $ext_cmd, $int_cmd, $source, $dest, $base, $test_kind, $PA_extra_gen ) = @{$$Prule_list{$rule}}; + if ( ! $PA_extra_gen ) { $PA_extra_gen = []; } + my $needs_making = 0; + # Substitute in the filename variables, since we will use + # those for determining filenames. But delay expanding $cmd + # until run time, in case of changes. + foreach ($base, $source, $dest, @$PA_extra_gen ) { + s/%R/$root_filename/; + s/%Y/$aux_dir1/; + s/%Z/$out_dir1/; + } + foreach ($source, $dest ) { + s/%B/$base/; + s/%T/$texfile_name/; + } + # print "$rule: $cmd_type, EC='$ext_cmd', IC='$int_cmd', $test_kind,\n", + # " S='$source', D='$dest', B='$base' $needs_making\n"; + rdb_create_rule( $rule, $cmd_type, $ext_cmd, $int_cmd, $test_kind, + $source, $dest, $base, + $needs_making, undef, undef, 1, $PA_extra_gen ); +# !! ?? Last line was +# $needs_making, undef, ($test_kind==1) ); + } + } # End arguments of subroutine + &rdb_make_links; +} # END rdb_set_rules + +#************************************************************ + +sub rdb_make_links { +# ?? Problem if there are multiple rules for getting a file. Notably pdf. +# Which one to choose? + # Create $from_rule if there's a suitable rule. + # Map files to rules: + local %from_rules = (); + rdb_for_all( sub{ if($$Pdest){$from_rules{$$Pdest} = $rule;} } ); +#?? foreach (sort keys %from_rules) {print "D='$_' F='$from_rules{$_}\n";} + rdb_for_all( + 0, + sub{ + # Set from_rule, but only if it isn't set or is invalid. + # Don't forget the biber v. bibtex issue + if ( exists $from_rules{$file} + && ( (!$$Pfrom_rule) || (! exists $rule_db{$$Pfrom_rule} ) ) + ) + { $$Pfrom_rule = $from_rules{$file}; + } + } + ); + rdb_for_all( + 0, + sub{ + if ( exists $from_rules{$file} ) { + $$Pfrom_rule = $from_rules{$file}; + } + if ( $$Pfrom_rule && (! rdb_rule_exists( $$Pfrom_rule ) ) ) { + $$Pfrom_rule = ''; + } +#?? print "$rule: $file, $$Pfrom_rule\n"; + } + ); +} # END rdb_make_links + +#************************************************************ + +sub set_trivial_aux_fdb { + # 1. Write aux file EXACTLY as would be written if the tex file + # had no cross references, etc. I.e., a minimal .aux file. + # 2. Write a corresponding fdb file + # 3. Provoke a run of (pdf)latex (actually of all primaries). + + local *aux_file; + open( aux_file, '>', $aux_main ) + or die "Cannot write file '$aux_main'\n"; + print aux_file "\\relax \n"; + close(aux_file); + + foreach my $rule (keys %primaries ) { + rdb_ensure_file( $rule, $texfile_name ); + rdb_ensure_file( $rule, $aux_main ); + rdb_one_rule( $rule, + sub{ $$Pout_of_date = 1; } + ); + } + &rdb_write( $fdb_name ); +} #END set_trivial_aux_fdb + +#************************************************************ +#### Particular actions +#************************************************************ +#************************************************************ + +sub do_cusdep { + # Unconditional application of custom-dependency + # except that rule is not applied if the source file source + # does not exist, and an error is returned if the dest is not made. + # + # Assumes rule context for the custom-dependency, and that my first + # argument is the name of the subroutine to apply + my $func_name = $_[0]; + my $return = 0; + if ( !-e $$Psource ) { + # Source does not exist. Users of this rule will need to turn + # it off when custom dependencies are reset + if ( !$silent ) { +## ??? Was commented out. 1 Sep. 2008 restored, for cusdep no-file-exists issue + warn "$My_name: In trying to apply custom-dependency rule\n", + " to make '$$Pdest' from '$$Psource'\n", + " the source file has disappeared since the last run\n"; + } + # Treat as successful + } + elsif ( !$func_name ) { + warn "$My_name: Possible misconfiguration or bug:\n", + " In trying to apply custom-dependency rule\n", + " to make '$$Pdest' from '$$Psource'\n", + " the function name is blank.\n"; + } + elsif ( ! defined &$func_name ) { + warn "$My_name: Misconfiguration or bug,", + " in trying to apply custom-dependency rule\n", + " to make '$$Pdest' from '$$Psource'\n", + " function name '$func_name' does not exists.\n"; + } + else { + my $cusdep_ret = &$func_name( $$Pbase ); + if ( defined $cusdep_ret && ($cusdep_ret != 0) ) { + $return = $cusdep_ret; + if ($return) { + warn "Rule '$rule', function '$func_name'\n", + " failed with return code = $return\n"; + } + } + elsif ( !-e $$Pdest ) { + # Destination non-existent, but routine failed to give an error + warn "$My_name: In running custom-dependency rule\n", + " to make '$$Pdest' from '$$Psource'\n", + " function '$func_name' did not make the destination.\n"; + $return = -1; + } + } + return $return; +} # END do_cusdep + +#************************************************************ + +sub do_viewfile { + # Unconditionally make file for viewing, going through temporary file if + # Assumes rule context + + my $return = 0; + my ($base, $path, $ext) = fileparseA( $$Pdest ); + if ( &view_file_via_temporary ) { + if ( $$Pext_cmd =~ /%D/ ) { + my $tmpfile = tempfile1( "${root_filename}_tmp", $ext ); + warn "$My_name: Making '$$Pdest' via temporary '$tmpfile'...\n"; + $return = &Run_subst( undef, undef, undef, undef, $tmpfile ); + move( $tmpfile, $$Pdest ); + } + else { + warn "$My_name is configured to make '$$Pdest' via a temporary file\n", + " but the command template '$$Pext_cmd' does not have a slot\n", + " to set the destination file, so I won't use a temporary file\n"; + $return = &Run_subst(); + } + } + else { + $return = &Run_subst(); + } + return $return; +} #END do_viewfile + +#************************************************************ + +sub do_update_view { + # Update viewer + # Assumes rule context + # Arguments: (method, signal, viewer_process) + + my $return = 0; + + # Although the process is passed as an argument, we'll need to update it. + # So (FUDGE??) bypass the standard interface for the process. + # We might as well do this for all the arguments. + my $viewer_update_method = ${$PAint_cmd}[1]; + my $viewer_update_signal = ${$PAint_cmd}[2]; + my $Pviewer_process = \${$PAint_cmd}[3]; + my $Pneed_to_get_viewer_process = \${$PAint_cmd}[4]; + + if ($viewer_update_method == 2) { + if ($$Pneed_to_get_viewer_process) { + $$Pviewer_process = &find_process_id( $$Psource ); + if ($$Pviewer_process != 0) { + $$Pneed_to_get_viewer_process = 0; + } + } + if ($$Pviewer_process == 0) { + print "$My_name: need to signal viewer for file '$$Psource', but didn't get \n", + " process ID for some reason, e.g., no viewer, bad configuration, bug\n" + if $diagnostics ; + } + elsif ( defined $viewer_update_signal) { + print "$My_name: signalling viewer, process ID $$Pviewer_process ", + "with signal $viewer_update_signal\n" + if $diagnostics ; + kill $viewer_update_signal, $$Pviewer_process; + } + else { + warn "$My_name: viewer is supposed to be sent a signal\n", + " but no signal is defined. Misconfiguration or bug?\n"; + $return = 1; + } + } + elsif ($viewer_update_method == 4) { + if (defined $$Pext_cmd) { + $return = &Run_subst(); + } + else { + warn "$My_name: viewer is supposed to be updated by running a command,\n", + " but no command is defined. Misconfiguration or bug?\n"; + } + } + return $return; +} #END do_update_view + +#************************************************************ + +sub if_source { + # Unconditionally apply rule if source file exists. + # Assumes rule context + if ( -e $$Psource ) { + return &Run_subst(); + } + else { + warn "Needed source file '$$Psource' does not exist.\n"; + return -1; + } +} #END if_source + +#************************************************************ +#### Subroutines +#************************************************************ +#************************************************************ + +sub find_basename { + # Finds the basename of the root file + # Arguments: + # 1 - Filename to breakdown + # 2 - Where to place base file + # 3 - Where to place tex file + # Returns non-zero if tex file does not exist + # + # The rules for determining this depend on the implementation of TeX. + # The variable $extension_treatment determines which rules are used. + + # !!!!!!!! I still need to implement use of kpsewhich to match behavior + # of (pdf)latex correctly. + + local($given_name, $base_name, $ext, $path, $tex_name); + $given_name = $_[0]; + if ( "$extension_treatment" eq "miktex_old" ) { + # Miktex v. 1.20d: + # 1. If the filename has an extension, then use it. + # 2. Else append ".tex". + # 3. The basename is obtained from the filename by + # removing the path component, and the extension, if it + # exists. If a filename has a multiple extension, then + # all parts of the extension are removed. + # 4. The names of generated files (log, aux) are obtained by + # appending .log, .aux, etc to the basename. Note that + # these are all in the CURRENT directory, and the drive/path + # part of the originally given filename is ignored. + # + # Thus when the given filename is "\tmp\a.b.c", the tex + # filename is the same, and the basename is "a". + + ($base_name, $path, $ext) = fileparse( $given_name, '\..*' ); + if ( "$ext" eq "") { $tex_name = "$given_name.tex"; } + else { $tex_name = $given_name; } + $_[1] = $base_name; + $_[2] = $tex_name; + } + elsif ( "$extension_treatment" eq "unix" ) { + # unix (at least TeXLive 2016) => + # A. Finding of tex file: + # 1. If filename.tex exists, use it, + # 2. else if kpsewhich finds filename.tex, use it + # 3. else if filename exists, use it, + # 4. else if kpsewhich finds filename, use it. + # (Probably can unify the above by + # 1'. If kpsewhich finds filename.tex, use result. + # 2'. else if kpsewhich finds filename, use result. + # 3'. else report file not found. + # B. The base filename is obtained by deleting the path + # component and, if an extension exists, the last + # component of the extension, even if the extension is + # null. (A name ending in "." has a null extension.) + # C. The names of generated files (log, aux) are obtained by + # appending .log, .aux, etc to the basename. Note that + # these are all in the CURRENT directory, and the drive/path + # part of the originally given filename is ignored. + # + # Thus when the given filename is "/tmp/a.b.c", there are two + # cases: + # a. /tmp/a.b.c.tex exists. Then this is the tex file, + # and the basename is "a.b.c". + # b. /tmp/a.b.c.tex does not exist. Then the tex file is + # "/tmp/a.b.c", and the basename is "a.b". + # But there are also modifications of this when a file can be + # found by kpsewhich. + + if ( -f "$given_name.tex" ) { + $tex_name = "$given_name.tex"; + } + else { + $tex_name = "$given_name"; + } + ($base_name, $path, $ext) = fileparse( $tex_name, '\.[^\.]*' ); + $_[1] = $base_name; + $_[2] = $tex_name; + } + else { + die "$My_name: Incorrect configuration gives \$extension_treatment=", + "'$extension_treatment'\n"; + } + if ($diagnostics) { + print "Given='$given_name', tex='$tex_name', base='$base_name'\n"; + } + return ! -e $tex_name; +} #END find_basename + +#************************************************************ + +sub make_preview_continuous { + local @changed = (); + local @disappeared = (); + local @no_dest = (); # Non-existent destination files + local @rules_never_run = (); + local @rules_to_apply = (); + + local $failure = 0; + local %rules_applied = (); + local $updated = 0; + + # What to make? + my @targets = keys %requested_filerules; + + $quell_uptodate_msgs = 1; + + local $view_file = ''; + rdb_one_rule( 'view', sub{ $view_file = $$Psource; } ); + + if ( ($view eq 'dvi') || ($view eq 'pdf') || ($view eq 'ps') ) { + warn "Viewing $view\n"; + } + elsif ( $view eq 'none' ) { + warn "Not using a previewer\n"; + $view_file = ''; + } + else { + warn "$My_name: BUG: Invalid preview method '$view'\n"; + exit 20; + } + + my $viewer_running = 0; # No viewer known to be running yet + # Get information from update_view rule + local $viewer_update_method = 0; + # Pointers so we can update the following: + local $Pviewer_process = undef; + local $Pneed_to_get_viewer_process = undef; + rdb_one_rule( 'update_view', + sub{ $viewer_update_method = $$PAint_cmd[1]; + $Pviewer_process = \$$PAint_cmd[3]; + $Pneed_to_get_viewer_process = \$$PAint_cmd[4]; + } + ); + # Note that we don't get the previewer process number from the program + # that starts it; that might only be a script to get things set up and the + # actual previewer could be (and sometimes IS) another process. + + if ( ($view_file ne '') && (-e $view_file) && !$new_viewer_always ) { + # Is a viewer already running? + # (We'll save starting up another viewer.) + $$Pviewer_process = &find_process_id( $view_file ); + if ( $$Pviewer_process ) { + warn "$My_name: Previewer is already running\n" + if !$silent; + $viewer_running = 1; + $$Pneed_to_get_viewer_process = 0; + } + } + + # Loop forever, rebuilding .dvi and .ps as necessary. + # Set $first_time to flag first run (to save unnecessary diagnostics) +CHANGE: + for (my $first_time = 1; 1; $first_time = 0 ) { + my %rules_to_watch = %requested_filerules; + $updated = 0; + $failure = 0; + $failure_msg = ''; + if ( $MSWin_fudge_break && ($^O eq "MSWin32") ) { + # Fudge under MSWin32 ONLY, to stop perl/latexmk from + # catching ctrl/C and ctrl/break, and let it only reach + # downstream programs. See comments at first definition of + # $MSWin_fudge_break. + $SIG{BREAK} = $SIG{INT} = 'IGNORE'; + } + if ($compiling_cmd) { + Run_subst( $compiling_cmd ); + } + $failure = rdb_make( @targets ); + +## warn "=========Viewer PID = $$Pviewer_process; updated=$updated\n"; + + if ( $MSWin_fudge_break && ($^O eq "MSWin32") ) { + $SIG{BREAK} = $SIG{INT} = 'DEFAULT'; + } + # Start viewer if needed. + if ( ($failure > 0) && (! $force_mode) ) { + # No viewer yet + } + elsif ( ($view_file ne '') && (-e $view_file) && $updated && $viewer_running ) { + # A viewer is running. Explicitly get it to update screen if we have to do it: + rdb_one_rule( 'update_view', \&rdb_run1 ); + } + elsif ( ($view_file ne '') && (-e $view_file) && !$viewer_running ) { + # Start the viewer + if ( !$silent ) { + if ($new_viewer_always) { + warn "$My_name: starting previewer for '$view_file'\n", + "------------\n"; + } + else { + warn "$My_name: I have not found a previewer that ", + "is already running. \n", + " So I will start it for '$view_file'\n", + "------------\n"; + } + } + local $retcode = 0; + rdb_one_rule( 'view', sub { $retcode = &rdb_run1;} ); + if ( $retcode != 0 ) { + if ($force_mode) { + warn "$My_name: I could not run previewer\n"; + } + else { + &exit_msg1( "I could not run previewer", $retcode); + } + } + else { + $viewer_running = 1; + $$Pneed_to_get_viewer_process = 1; + } # end analyze result of trying to run viewer + } # end start viewer + if ( $failure > 0 ) { + if ( !$failure_msg ) { + $failure_msg = 'Failure to make the files correctly'; + } + @pre_primary = (); # Array of rules + @post_primary = (); # Array of rules + @unusual_one_time = (); # Array of rules + &rdb_classify_rules( \%possible_primaries, keys %requested_filerules ); + # There will be files changed during the run that are irrelevant. + # We need to wait for the user to change the files. + + # So set the GENERATED files from (pdf)latex as up-to-date: + rdb_for_some( [keys %current_primaries], \&rdb_update_gen_files ); + + # And don't watch for changes for post_primary rules (ps and pdf + # from dvi, etc haven't been run after an error in (pdf)latex, so + # are out-of-date by filetime criterion, but they should not be run + # until after another (pdf)latex run: + foreach (@post_primary) { delete $rules_to_watch{$_}; } + + $failure_msg =~ s/\s*$//; #Remove trailing space + warn "$My_name: $failure_msg\n", + " ==> You will need to change a source file before I do another run <==\n"; + if ($failure_cmd) { + Run_subst( $failure_cmd ); + } + } + else { + if ($success_cmd) { + Run_subst( $success_cmd ); + } + } + rdb_show_rule_errors(); + if ($rules_list) { rdb_list(); } + if ($show_time && ! $first_time) { show_timing(); } + if ( $dependents_list && ($updated || $failure) ) { + my $deps_handle = new FileHandle "> $deps_file"; + if ( defined $deps_handle ) { + deps_list($deps_handle); + close($deps_handle); + } + else { + warn "Cannot open '$deps_file' for output of dependency information\n"; + } + } + if ( $first_time || $updated || $failure ) { + print "\n=== Watching for updated files. Use ctrl/C to stop ...\n"; + } + $waiting = 1; if ($diagnostics) { warn "WAITING\n"; } +# During waiting for file changes, handle ctrl/C and ctrl/break here, rather than letting +# system handle them by terminating script (and any script that calls it). This allows, +# for example, the clean up code in the following command line to work: +# latexmk -pvc foo; cleanup; + &catch_break; + $have_break = 0; + WAIT: while (1) { + sleep( $sleep_time ); + if ($have_break) { last WAIT; } + if ( rdb_new_changes(keys %rules_to_watch) ) { + if (!$silent) { + warn "$My_name: Need to remake files.\n"; + &rdb_diagnose_changes( ' ' ); + } + last WAIT; + } + # Don't count waiting time in processing: + $processing_time1 = processing_time(); + # Does this do this job???? + local $new_files = 0; + rdb_for_some( [keys %current_primaries], sub{ $new_files += &rdb_find_new_files } ); + if ($new_files > 0) { + warn "$My_name: New file(s) found.\n"; + last WAIT; + } + if ($have_break) { last WAIT; } + } # end WAIT: + &default_break; + if ($have_break) { + print "$My_name: User typed ctrl/C or ctrl/break. I'll finish.\n"; + return; + } + $waiting = 0; if ($diagnostics) { warn "NOT WAITING\n"; } + } #end infinite_loop CHANGE: +} #END sub make_preview_continuous + +#************************************************************ + +sub process_rc_file { + # Usage process_rc_file( filename ) + # NEW VERSION + # Run rc_file whose name is given in first argument + # Exit with code 0 on success + # Exit with code 1 if file cannot be read or does not exist. + # Stop if there is a syntax error or other problem. + # PREVIOUSLY: + # Exit with code 2 if is a syntax error or other problem. + my $rc_file = $_[0]; + my $ret_code = 0; + warn "$My_name: Executing Perl code in file '$rc_file'...\n" + if $diagnostics; + # I could use the do command of perl, but the preceeding -r test + # to get good diagnostics gets the wrong result under cygwin + # (e.g., on /cygdrive/c/latexmk/LatexMk) + my $RCH = new FileHandle; + if ( !-e $rc_file ) { + warn "$My_name: The rc-file '$rc_file' does not exist\n"; + return 1; + } + elsif ( -d $rc_file ) { + warn "$My_name: The supposed rc-file '$rc_file' is a directory; but it\n", + " should be a normal text file\n"; + return 1; + } + elsif ( open $RCH, "<$rc_file" ) { + { local $/; eval <$RCH>; } + close $RCH; + } + else { + warn "$My_name: I cannot read the rc-file '$rc_file'\n"; + return 1; + } + # PREVIOUS VERSION +# if ( ! -r $rc_file ) { +# warn "$My_name: I cannot read the rc-file '$rc_file'\n", +# " or at least that's what Perl (for $^O) reports\n"; +# return 1; +# } +# do( $rc_file ); + if ( $@ ) { + # Indent each line of possibly multiline message: + my $message = prefix( $@, " " ); + warn "$My_name: Initialization file '$rc_file' gave an error:\n", + "$message\n"; + die "$My_name: Stopping because of problem with rc file\n"; + # Use the following if want non-fatal error. + return 2; + } + return 0; +} #END process_rc_file + +#************************************************************ + +sub execute_code_string { + # Usage execute_code_string( string_of_code ) + # Run the perl code contained in first argument + # Halt if there is a syntax error or other problem. + # ???Should I leave the exiting to the caller (perhaps as an option)? + # But I can always catch it with an eval if necessary. + # That confuses ctrl/C and ctrl/break handling. + my $code = $_[0]; + warn "$My_name: Executing initialization code specified by -e:\n", + " '$code'...\n" + if $diagnostics; + eval $code; + # The return value from the eval is not useful, since it is the value of + # the last expression evaluated, which could be anything. + # The correct test of errors is on the value of $@. + + if ( $@ ) { + # Indent each line of possibly multiline message: + my $message = prefix( $@, " " ); + die "$My_name: ", + "Stopping because executing following code from command line\n", + " $code\n", + "gave an error:\n", + "$message\n"; + } +} #END execute_code_string + +#************************************************************ + +sub cleanup1 { + # Usage: cleanup1( directory, exts_without_period, ... ) + # + # The directory and the root file name are fixed names, so I must escape + # any glob metacharacters in them: + my $dir = fix_pattern( shift ); + my $root_fixed = fix_pattern( $root_filename ); + foreach (@_) { + (my $name = /%R/ ? $_ : "%R.$_") =~ s/%R/$dir$root_fixed/; + unlink_or_move( glob( "$name" ) ); + } +} #END cleanup1 + +#************************************************************ + +sub cleanup_cusdep_generated { + # Remove files generated by custom dependencies + rdb_for_all( \&cleanup_one_cusdep_generated ); +} #END cleanup_cusdep_generated + +#************************************************************ + +sub cleanup_one_cusdep_generated { + # Remove destination file generated by one custom dependency + # Assume rule context, but not that the rule is a custom dependency. + # Only delete destination file if source file exists (so destination + # file can be recreated) + if ( $$Pcmd_type ne 'cusdep' ) { + # NOT cusdep + return; + } + if ( (-e $$Pdest) && (-e $$Psource) ) { + unlink_or_move( $$Pdest ); + } + elsif ( (-e $$Pdest) && (!-e $$Psource) ) { + warn "$My_name: For custom dependency '$rule',\n", + " I won't delete destination file '$$Pdest'\n", + " because the source file '$$Psource' doesn't exist,\n", + " so the destination file may not be able to be recreated\n"; + } +} #END cleanup_one_cusdep_generated + +#************************************************************ +#************************************************************ +#************************************************************ + +# Error handling routines, warning routines, help + +#************************************************************ + +sub die_trace { + # Call: die_trace( message ); + &traceback; # argument(s) passed unchanged + die "\n"; +} #END die_trace + +#************************************************************ + +sub traceback { + # Call: &traceback + # or traceback( message, ) + my $msg = shift; + if ($msg) { warn "$msg\n"; } + warn "Traceback:\n"; + my $i=0; # Start with immediate caller + while ( my ($pack, $file, $line, $func) = caller($i++) ) { + if ($func eq 'die_trace') { next; } + warn " $func called from line $line\n"; + } +} #END traceback + +#************************************************************ + +sub exit_msg1 +{ + # exit_msg1( error_message, retcode [, action]) + # 1. display error message + # 2. if action set, then restore aux file + # 3. exit with retcode + warn "\n------------\n"; + warn "$My_name: $_[0].\n"; + warn "-- Use the -f option to force complete processing.\n"; + + my $retcode = $_[1]; + if ($retcode >= 256) { + # Retcode is the kind returned by system from an external command + # which is 256 * command's_retcode + $retcode /= 256; + } + exit $retcode; +} #END exit_msg1 + +#************************************************************ + +sub warn_running { + # Message about running program: + if ( $silent ) { + warn "$My_name: @_\n"; + } + else { + warn "------------\n@_\n------------\n"; + } +} #END warn_running + +#************************************************************ + +sub exit_help +# Exit giving diagnostic from arguments and how to get help. +{ + warn "\n$My_name: @_\n", + "Use\n", + " $my_name -help\nto get usage information\n"; + exit 10; +} #END exit_help + + +#************************************************************ + +sub print_help +{ + print + "$My_name $version_num: Automatic LaTeX document generation routine\n\n", + "Usage: $my_name [latexmk_options] [filename ...]\n\n", + " Latexmk_options:\n", + " -aux-directory=dir or -auxdir=dir \n", + " - set name of directory for auxiliary files (aux, log)\n", + " - Currently this only works with MiKTeX\n", + " -bibtex - use bibtex when needed (default)\n", + " -bibtex- - never use bibtex\n", + " -bibtex-cond - use bibtex when needed, but only if the bib files exist\n", + " -bm - Print message across the page when converting to postscript\n", + " -bi - Set contrast or intensity of banner\n", + " -bs - Set scale for banner\n", + " -commands - list commands used by $my_name for processing files\n", + " -c - clean up (remove) all nonessential files, except\n", + " dvi, ps and pdf files.\n", + " This and the other clean-ups are instead of a regular make.\n", + " -C - clean up (remove) all nonessential files\n", + " including aux, dep, dvi, postscript and pdf files\n", + " and file of database of file information\n", + " -CA - clean up (remove) all nonessential files.\n", + " Equivalent to -C option.\n", + " -CF - Remove file of database of file information before doing \n", + " other actions\n", + " -cd - Change to directory of source file when processing it\n", + " -cd- - Do NOT change to directory of source file when processing it\n", + " -dependents or -deps - Show list of dependent files after processing\n", + " -dependents- or -deps- - Do not show list of dependent files\n", + " -deps-out=file - Set name of output file for dependency list,\n", + " and turn on showing of dependency list\n", + " -dF - Filter to apply to dvi file\n", + " -dvi - generate dvi\n", + " -dvi- - turn off required dvi\n", + " -e - Execute specified Perl code (as part of latexmk start-up\n", + " code)\n", + " -f - force continued processing past errors\n", + " -f- - turn off forced continuing processing past errors\n", + " -gg - Super go mode: clean out generated files (-CA), and then\n", + " process files regardless of file timestamps\n", + " -g - process regardless of file timestamps\n", + " -g- - Turn off -g\n", + " -h - print help\n", + " -help - print help\n", + " -jobname=STRING - set basename of output file(s) to STRING.\n", + " (Like --jobname=STRING on command line for many current\n", + " implementations of latex/pdflatex.)\n", + " -l - force landscape mode\n", + " -l- - turn off -l\n", + " -latex= - set program used for latex.\n", + " (replace '' by the program name)\n", + " -latexoption=