diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/IEEEtran/IEEEtrantools.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/IEEEtran/IEEEtrantools.sty | 394 |
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 %%%%%%%%%%%%%%%%%%%%%% |