summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/IEEEtran/IEEEtrantools.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/IEEEtran/IEEEtrantools.sty')
-rw-r--r--Master/texmf-dist/tex/latex/IEEEtran/IEEEtrantools.sty394
1 files changed, 249 insertions, 145 deletions
diff --git a/Master/texmf-dist/tex/latex/IEEEtran/IEEEtrantools.sty b/Master/texmf-dist/tex/latex/IEEEtran/IEEEtrantools.sty
index c5dec9d8e96..76ce3930c07 100644
--- a/Master/texmf-dist/tex/latex/IEEEtran/IEEEtrantools.sty
+++ b/Master/texmf-dist/tex/latex/IEEEtran/IEEEtrantools.sty
@@ -1,16 +1,11 @@
%%
-%% IEEEtrantools.sty 2002/11/18 version V1.1
-%%
-%% NOTE: This text file uses UNIX line feed conventions. When (human)
-%% reading this file on other platforms, you may have to use a text
-%% editor that can handle lines terminated by the UNIX line feed
-%% character (0x0A).
+%% IEEEtrantools.sty 2007/01/11 version V1.2
%%
%%
%% This package provides several popular and unique commands from the
-%% IEEEtran.cls class (version 1.6b) file.
+%% IEEEtran.cls class (version 1.7) file.
%%
-%% The provided commands include \PARstart, \IEEEitemize, \IEEEenumerate,
+%% The provided commands include \IEEEPARstart, \IEEEitemize, \IEEEenumerate,
%% \IEEEdescription as well as the \IEEEeqnarray, \IEEEeqnarraybox family
%% of commands including support commands such as \IEEEstrut.
%% Also provides the \bstctlcite command for the control entry types of
@@ -18,35 +13,40 @@
%%
%% IEEEtrantools.sty should not be used with IEEEtran.cls.
%%
-%% The latest version and documentation of IEEEtrantools can be obtained at:
-%% http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/
-%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
+%%
%%
-%% Copyright (c) 2002 by Michael Shell
-%% mshell@ece.gatech.edu
-%% See the CTAN website above
-%% for current contact information.
+%% Copyright (c) 2002-2007 by Michael Shell
+%% See: http://www.michaelshell.org/
+%% for current contact information.
%%
-%%**********************************************************************
+%%*************************************************************************
%% Legal Notice:
-%% This code is offered as-is without any warranty either
-%% expressed or implied; without even the implied warranty of
-%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE!
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
%% User assumes all risk.
-%% In no event shall IEEE or any contributor to this code
-%% be liable for any damages or losses, including, but not limited to,
-%% incidental, consequential, or any other damages, resulting from the
-%% use or misuse of any information contained here.
-%%
+%% In no event shall IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
%% All comments are the opinions of their respective authors and are not
%% necessarily endorsed by the IEEE.
%%
-%% This code is distributed under the Perl Artistic License
-%% ( http://language.perl.com/misc/Artistic.html )
-%% and may be freely used, distributed and modified.
-%% Please retain the contribution notices and credits.
-%%
-%%**********************************************************************
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%
+%% File list of work: IEEEtrantools.sty, IEEEtrantools_doc.txt
+%%*************************************************************************
%%
%%
%%
@@ -59,7 +59,37 @@
%% always available as IEEEitemize, IEEEenumerate and IEEEdescription.
%%
%%*******
-% 11/2002 V1.1 (v1.6b of IEEEtran.cls) changes:
+% 1/2007 V1.2 (V1.7 of IEEEtran.cls) changes:
+%
+% 1) Several commands and environments have depreciated in favor of
+% replacements with IEEE prefixes to better avoid potential future name
+% clashes with other packages. Legacy code retained to allow
+% use of the obsolete forms, but with an warning message to the
+% console during compilation:
+% \IEEEPARstart
+% For IED lists:
+% \IEEEiedlabeljustifyc, \IEEEiedlabeljustifyl, \IEEEiedlabeljustifyr,
+% \IEEEnocalcleftmargin, \IEEElabelindent, \IEEEsetlabelwidth,
+% \IEEEusemathlabelsep
+%
+% 2) These commands/lengths now require the IEEE prefix and do not have
+% legacy support: \IEEEnormaljot.
+% For IED lists: \ifIEEEnocalcleftmargin, \ifIEEEnolabelindentfactor,
+% \IEEEiedlistdecl, \IEEElabelindentfactor
+%
+% 3) \normalsizebaselineskip no longer provided.
+%
+% 4) New \IEEEPARstart controls:
+% \IEEEPARstartHEIGHTTEXT, \IEEEPARstartFONTSTYLE, \IEEEPARstartCAPSTYLE,
+% \IEEEPARstartWORDFONTSTYLE, \IEEEPARstartWORDCAPSTYLE,
+% \IEEEPARstartHOFFSET, \IEEEPARstartITLCORRECT
+% and the (output) length \IEEEPARstartletwidth.
+%
+% 5) Provide for an optional argument to \bstctlcite to provide a way to
+% specify a different aux file.
+%
+%
+% 11/2002 V1.1 (V1.6b of IEEEtran.cls) changes:
%
% 1) In addition to the IEEE IED lists, the original LaTeX IED style list
% environments are now preserved as LaTeXitemize, LaTeXenumerate, and
@@ -70,8 +100,9 @@
%%**********************************************************************
-\ProvidesPackage{IEEEtrantools}[2002/11/18 revision V1.1 by Michael Shell]
+\ProvidesPackage{IEEEtrantools}[2007/01/11 V1.2 by Michael Shell]
\typeout{-- See the "IEEEtrantools_doc.txt" manual for usage information.}
+\typeout{-- http://www.michaelshell.org/tex/ieeetran/tools/}
\NeedsTeXFormat{LaTeX2e}
@@ -85,8 +116,8 @@
% define new needed flags to indicate document options
% and set a few "failsafe" defaults
-\newif\if@retainorgcmds
-\global\@retainorgcmdsfalse
+\newif\if@IEEETOOLSretainorgcmds
+\global\@IEEETOOLSretainorgcmdsfalse
@@ -102,27 +133,22 @@
% declare the options
-\DeclareOption{retainorgcmds}{\@retainorgcmdstrue}
+\DeclareOption{retainorgcmds}{\@IEEETOOLSretainorgcmdstrue}
% get and process any supplied options
\ProcessOptions
-% store the normalsize baselineskip
-\newskip\normalsizebaselineskip
-{\normalsize \global\normalsizebaselineskip\baselineskip\relax}
% store the nominal value of jot
-\newskip\normaljot
-\normaljot\jot\relax
-
-
-
+\newdimen\IEEEnormaljot
+\IEEEnormaljot\jot\relax
% Itemize, Enumerate and Description (IED) List Controls
% ***************************
%
+%
% IEEE seems to use at least two different values by
% which ITEMIZED list labels are indented to the right
% For The Journal of Lightwave Technology (JLT) and The Journal
@@ -159,14 +185,14 @@
% The IED environments automatically set its value to
% one of the three values above, so global changes do
% not have any effect
-\newdimen\labelindent
-\labelindent \parindent
+\newdimen\IEEElabelindent
+\IEEElabelindent \parindent
% The actual amount labels will be indented is
-% \labelindent multiplied by the factor below
+% \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 \labelindent for deeper
+% alter the effective \IEEElabelindent for deeper
% levels
% There may not be such a thing as correct "standard IEEE"
% values. What IEEE actually does may depend on the specific
@@ -185,7 +211,7 @@
% value actually used within IED lists, it is auto
% set to one of the 6 values above
% global changes here have no effect
-\def\labelindentfactor{1.0}
+\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
@@ -211,18 +237,18 @@
% 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{\iedlistdecl}{\setlength{\labelsep}{5em}}
+% i.e., renewcommand{\IEEEiedlistdecl}{\setlength{\labelsep}{5em}}
% will alter the \labelsep for the next list(s) until
-% \iedlistdecl is redefined.
-\def\iedlistdecl{\relax}
+% \IEEEiedlistdecl is redefined.
+\def\IEEEiedlistdecl{\relax}
% This command provides an easy way to set \leftmargin based
-% on the \labelwidth, \labelsep and the argument \labelindent
-% Usage: \calcleftmargin{width-to-indent-the-label}
+% 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\calcleftmargin#1{\setlength{\leftmargin}{#1}%
+\def\IEEEcalcleftmargin#1{\setlength{\leftmargin}{#1}%
\addtolength{\leftmargin}{\labelwidth}%
\addtolength{\leftmargin}{\labelsep}}
@@ -232,41 +258,42 @@
% and useful as a shorter alternative.
% Typically used to set \labelwidth to be the width
% of the longest label in the list
-\def\setlabelwidth#1{\settowidth{\labelwidth}{#1}}
+\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 \iedlistdecl or within the option of the IED list
+% the \IEEEiedlistdecl or within the option of the IED list
% environments.
-\def\usemathlabelsep{\setlength{\labelsep}{\IEEEiedmathlabelsep}}
+\def\IEEEusemathlabelsep{\setlength{\labelsep}{\IEEEiedmathlabelsep}}
% A flag which controls whether the IED lists automatically
-% calculate \leftmargin from \labelindent, \labelwidth and \labelsep
+% calculate \leftmargin from \IEEElabelindent, \labelwidth and \labelsep
% Useful if you want to specify your own \leftmargin
-% This flag must be set (\nocalcleftmargintrue or \nocalcleftmarginfalse)
-% via the \iedlistdecl or within the option of the IED list
+% 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\ifnocalcleftmargin
-\nocalcleftmarginfalse
+\newif\ifIEEEnocalcleftmargin
+\IEEEnocalcleftmarginfalse
-% A flag which controls whether \labelindent is multiplied by
-% the \labelindentfactor for each list level.
-% This flag must be set via the \iedlistdecl or within the option
+% 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\ifnolabelindentfactor
-\nolabelindentfactorfalse
+\newif\ifIEEEnolabelindentfactor
+\IEEEnolabelindentfactorfalse
% internal variable to indicate type of IED label
% justification
% 0 - left; 1 - center; 2 - right
-\def\@iedjustify{0}
+\def\@IEEEiedjustify{0}
+
% commands to allow the user to control IED
% label justifications. Use these commands within
-% the IED environment option or in the \iedlistdecl
+% the IED environment option or in the \IEEEiedlistdecl
% Note that changing the normal list justifications
% is nonstandard and IEEE may not like it if you do so!
% I include these commands as they may be helpful to
@@ -274,9 +301,9 @@
% other non-IEEE related LaTeX work.
% itemize and enumerate automatically default to right
% justification, description defaults to left.
-\def\iedlabeljustifyl{\def\@iedjustify{0}}%left
-\def\iedlabeljustifyc{\def\@iedjustify{1}}%center
-\def\iedlabeljustifyr{\def\@iedjustify{2}}%right
+\def\IEEEiedlabeljustifyl{\def\@IEEEiedjustify{0}}%left
+\def\IEEEiedlabeljustifyc{\def\@IEEEiedjustify{1}}%center
+\def\IEEEiedlabeljustifyr{\def\@IEEEiedjustify{2}}%right
@@ -285,7 +312,7 @@
% 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
-% use \edefs instead of dimen's to conserve dimen registers
+% 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}%
@@ -298,7 +325,7 @@
\edef\@IEEEiedlistparindent{\the\listparindent}%
\edef\@IEEEieditemindent{\the\itemindent}}
-% Note controlled spacing here, shield end of lines with %
+% Note controlled spacing here
\def\@IEEErestorelistparams{\topsep\@IEEEiedtopsep\relax%
\labelwidth\@IEEEiedlabelwidth\relax%
\labelsep\@IEEEiedlabelsep\relax%
@@ -325,7 +352,7 @@
% override LaTeX's default IED lists, unless the user requested they be retained
-\if@retainorgcmds\relax\else
+\if@IEEETOOLSretainorgcmds\relax\else
\def\itemize{\@IEEEitemize}
\def\enditemize{\@endIEEEitemize}
\def\enumerate{\@IEEEenumerate}
@@ -365,14 +392,14 @@
\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
% get the labelindentfactor for this level
\advance\@listdepth\@ne% we need to know what the level WILL be
- \edef\labelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}%
+ \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}%
\advance\@listdepth-\@ne% undo our increment
- \def\@iedjustify{2}% right justified labels are default
+ \def\@IEEEiedjustify{2}% right justified labels are default
% set other defaults
- \nocalcleftmarginfalse%
- \nolabelindentfactorfalse%
+ \IEEEnocalcleftmarginfalse%
+ \IEEEnolabelindentfactorfalse%
\topsep\IEEEiedtopsep%
- \labelindent\IEEEilabelindent%
+ \IEEElabelindent\IEEEilabelindent%
\labelsep\IEEEiednormlabelsep%
\partopsep 0ex%
\parsep 0ex%
@@ -389,19 +416,19 @@
\@IEEErestorelistparams% override any list{} changes
% to our globals
\let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel
- \iedlistdecl% let user alter parameters
+ \IEEEiedlistdecl% let user alter parameters
#1\relax%
% If the user has requested not to use the
% labelindent factor, don't revise \labelindent
- \ifnolabelindentfactor\relax%
- \else\labelindent=\labelindentfactor\labelindent%
+ \ifIEEEnolabelindentfactor\relax%
+ \else\IEEElabelindent=\IEEElabelindentfactor\labelindent%
\fi%
% Unless the user has requested otherwise,
% calculate our left margin based
- % on \labelindent, \labelwidth and
+ % on \IEEElabelindent, \labelwidth and
% \labelsep
- \ifnocalcleftmargin\relax%
- \else\calcleftmargin{\labelindent}%
+ \ifIEEEnocalcleftmargin\relax%
+ \else\IEEEcalcleftmargin{\IEEElabelindent}%
\fi}\fi\fi}%
@@ -416,14 +443,14 @@
\edef\@enumctr{enum\romannumeral\the\@enumdepth}%
% get the labelindentfactor for this level
\advance\@listdepth\@ne% we need to know what the level WILL be
- \edef\labelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}%
+ \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}%
\advance\@listdepth-\@ne% undo our increment
- \def\@iedjustify{2}% right justified labels are default
+ \def\@IEEEiedjustify{2}% right justified labels are default
% set other defaults
- \nocalcleftmarginfalse%
- \nolabelindentfactorfalse%
+ \IEEEnocalcleftmarginfalse%
+ \IEEEnolabelindentfactorfalse%
\topsep\IEEEiedtopsep%
- \labelindent\IEEEelabelindent%
+ \IEEElabelindent\IEEEelabelindent%
\labelsep\IEEEiednormlabelsep%
\partopsep 0ex%
\parsep 0ex%
@@ -441,19 +468,19 @@
\@IEEErestorelistparams% override any list{} changes
% to our globals
\let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel
- \iedlistdecl% let user alter parameters
+ \IEEEiedlistdecl% let user alter parameters
#1\relax%
% If the user has requested not to use the
- % labelindent factor, don't revise \labelindent
- \ifnolabelindentfactor\relax%
- \else\labelindent=\labelindentfactor\labelindent%
+ % 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 \labelindent, \labelwidth and
+ % on \IEEElabelindent, \labelwidth and
% \labelsep
- \ifnocalcleftmargin\relax%
- \else\calcleftmargin{\labelindent}%
+ \ifIEEEnocalcleftmargin\relax%
+ \else\IEEEcalcleftmargin{\IEEElabelindent}%
\fi}\fi\fi}%
@@ -465,14 +492,14 @@
\ifnum\@listdepth>5\relax\@toodeep\else%
% get the labelindentfactor for this level
\advance\@listdepth\@ne% we need to know what the level WILL be
- \edef\labelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}%
+ \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}%
\advance\@listdepth-\@ne% undo our increment
- \def\@iedjustify{0}% left justified labels are default
+ \def\@IEEEiedjustify{0}% left justified labels are default
% set other defaults
- \nocalcleftmarginfalse%
- \nolabelindentfactorfalse%
+ \IEEEnocalcleftmarginfalse%
+ \IEEEnolabelindentfactorfalse%
\topsep\IEEEiedtopsep%
- \labelindent\IEEEdlabelindent%
+ \IEEElabelindent\IEEEdlabelindent%
% assume normal labelsep
\labelsep\IEEEiednormlabelsep%
\partopsep 0ex%
@@ -493,25 +520,25 @@
\list{}{\@IEEErestorelistparams% override any list{} changes
% to our globals
\let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel
- \iedlistdecl% let user alter parameters
+ \IEEEiedlistdecl% let user alter parameters
#1\relax%
% If the user has requested not to use the
- % labelindent factor, don't revise \labelindent
- \ifnolabelindentfactor\relax%
- \else\labelindent=\labelindentfactor\labelindent%
+ % 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 \labelindent, \labelwidth and
+ % on \IEEElabelindent, \labelwidth and
% \labelsep
- \ifnocalcleftmargin\relax%
- \else\calcleftmargin{\labelindent}\relax%
+ \ifIEEEnocalcleftmargin\relax%
+ \else\IEEEcalcleftmargin{\IEEElabelindent}\relax%
\fi}\fi}
% v1.6b we use one makelabel that does justification as needed.
-\def\@IEEEiedmakelabel#1{\relax\if\@iedjustify 0\relax
+\def\@IEEEiedmakelabel#1{\relax\if\@IEEEiedjustify 0\relax
\makebox[\labelwidth][l]{\normalfont #1}\else
-\if\@iedjustify 1\relax
+\if\@IEEEiedjustify 1\relax
\makebox[\labelwidth][c]{\normalfont #1}\else
\makebox[\labelwidth][r]{\normalfont #1}\fi\fi}
@@ -519,6 +546,10 @@
+
+
+
+
% used only by IEEEtran's IEEEeqnarray as other packages may
% have their own, different, implementations
\newcounter{IEEEsubequation}[equation]
@@ -895,9 +926,6 @@ Using a default centering column instead}%
\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
@@ -1093,7 +1121,7 @@ Using a default centering column instead}%
\lineskip=0pt\relax
\lineskiplimit=0pt\relax
\baselineskip=\normalbaselineskip\relax%
- \jot=\normaljot\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
@@ -1252,7 +1280,7 @@ $$\@ignoretrue}
\lineskip=0pt\relax%
\lineskiplimit=0pt\relax%
\baselineskip=\normalbaselineskip\relax%
- \jot=\normaljot\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
@@ -1608,73 +1636,105 @@ between column types.}%
-
-
-
-
-
-% \PARstart
+% \IEEEPARstart
% Definition for the big two line drop cap letter at the beginning of the
% first paragraph of journal papers. The first argument is the first letter
% of the first word, the second argument is the remaining letters of the
% first word which will be rendered in upper case.
+% In V1.6 this has been completely rewritten to:
+%
+% 1. no longer have problems when the user begins an environment
+% within the paragraph that uses \IEEEPARstart.
+% 2. auto-detect and use the current font family
+% 3. revise handling of the space at the end of the first word so that
+% interword glue will now work as normal.
+% 4. produce correctly aligned edges for the (two) indented lines.
%
% We generalize things via control macros - playing with these is fun too.
+%
% For IEEEtrantools, we do not use a "@" in the names as these are user
% alterable controls.
%
+% V1.7 added more control macros to make it easy for IEEEtrantools.sty users
+% to change the font style.
%
% the number of lines that are indented to clear it
+% may need to increase if using decenders
\providecommand{\IEEEPARstartDROPLINES}{2}
-% minimum number of lines left on a page to allow a \@PARstart
+% 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 a capital "T" in the current
+% 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}
-% This is the separation distance from the drop letter to the main text.
-% Lengths that depend on the font (i.e., ex, em, etc.) will be referenced
-% to the font that is active when PARstart is called.
+% 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 \PARstart
+% 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 \PARstart and will be a font command which creates the big letter
+% 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\PARstart#1#2{\par{%
+\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 a capital "T" in the current font
+% it extends from the top of \IEEEPARstartHEIGHTTEXT in the current font
% down to \IEEEPARstartDROPDEPTH below the current baseline
-\settoheight{\@IEEEtrantmpdimenA}{T}%
+\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}%
-{\bfseries%
-\edef\@IEEEPARstartFONTNAMESPACE{\fontname\font\space}%
-\xdef\@IEEEPARstartFONTNAME{\expandafter\@IEEEPARstartGETFIRSTWORD\@IEEEPARstartFONTNAMESPACE\relax}}%
+{\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\MakeUppercase{#1}}%
+\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: PARstart drop letter has zero height! (line \the\inputlineno)}%
+\typeout{** WARNING: IEEEPARstart drop letter has zero height! (line \the\inputlineno)}%
\typeout{ Forcing the drop letter font size to 10pt.}%
\@IEEEtrantmpdimenB=10pt%
\fi%
@@ -1702,17 +1762,32 @@ between column types.}%
% 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\MakeUppercase{#1}}}%
+\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%
+\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.
-\noindent\hangindent\@IEEEtrantmpdimenA\hangafter=-\IEEEPARstartDROPLINES%
-\makebox[0pt][l]{\hspace{-\@IEEEtrantmpdimenA}\raisebox{-\IEEEPARstartDROPDEPTH}[0pt][0pt]{\@IEEEPARstartfont\MakeUppercase{#1}}}\MakeUppercase{#2}}
+\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
@@ -1738,15 +1813,44 @@ between column types.}%
+
+
% Provide support for the control entries of IEEEtran.bst V1.00 and later.
-\providecommand{\bstctlcite}[1]{\@bsphack
- \@for\@citeb:=#1\do{%
+% V1.7 optional argument allows for a different aux file to be specified in
+% order to handle multiple bibliographies. For example, with multibib.sty:
+% \newcites{sec}{Secondary Literature}
+% \bstctlcite[@auxoutsec]{BSTcontrolhak}
+% V1.7 I see no need for \providecommand here.
+\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
+\def\@bstctlcite[#1]#2{\@bsphack
+ \@for\@citeb:=#2\do{%
\edef\@citeb{\expandafter\@firstofone\@citeb}%
- \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi}%
+ \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
\@esphack}
+% need a backslash character for typeout output
+{\catcode`\|=0 \catcode`\\=12
+|xdef|@IEEEbackslash{\}}
+
+
+% hook to allow easy disabling of all legacy warnings
+\def\@IEEElegacywarn#1#2{\typeout{** ATTENTION: \@IEEEbackslash #1 is depreciated (line \the\inputlineno).
+Use \@IEEEbackslash #2 instead.}}
+
+% provide for legacy commands
+\def\PARstart{\@IEEElegacywarn{PARstart}{IEEEPARstart}\IEEEPARstart}
+
+% provide for legacy IED commands/lengths when possible
+\let\labelindent\IEEElabelindent
+\def\calcleftmargin{\@IEEElegacywarn{calcleftmargin}{IEEEcalcleftmargin}\IEEEcalcleftmargin}
+\def\setlabelwidth{\@IEEElegacywarn{setlabelwidth}{IEEEsetlabelwidth}\IEEEsetlabelwidth}
+\def\usemathlabelsep{\@IEEElegacywarn{usemathlabelsep}{IEEEusemathlabelsep}\IEEEusemathlabelsep}
+\def\iedlabeljustifyc{\@IEEElegacywarn{iedlabeljustifyc}{IEEEiedlabeljustifyc}\IEEEiedlabeljustifyc}
+\def\iedlabeljustifyl{\@IEEElegacywarn{iedlabeljustifyl}{IEEEiedlabeljustifyl}\IEEEiedlabeljustifyl}
+\def\iedlabeljustifyr{\@IEEElegacywarn{iedlabeljustifyr}{IEEEiedlabeljustifyr}\IEEEiedlabeljustifyr}
+
\endinput
%%%%%%%%%%%%%%%%%%%%%%%%%% End of IEEEtrantools.sty %%%%%%%%%%%%%%%%%%%%%%