% ===================================================================== % --------------------------------------------------------------------- % % XX XX XX X % X X X % XX XXX XXX XXX XXX XX XXX XXXX XXX X X % X X X X X X X X X X X X X X X % X XXXXX XXXXX XXXXX X X X X XXX X X X % X X X X X X X X XX X X X X X % XXX XXX XXX XXX XXX XXX XXXX XX XXXX XX XXXX % X X % XXXX XXXX % --------------------------------------------------------------------- % ===================================================================== % ieeefig.sty --- For managing figures in LaTeX2e documents. % --- Written by Gregory Plett, Sept 1997 % ===================================================================== % The following macros provide a systematic yet flexible method for % incorporating figures in a LaTeX2e document. They are especially well % suited for paper preparation using the ieee.cls and psfrag % style. Each figure has its own .tex file. When used with psfrag, it % will also have its own .eps file. In the main text, % \figdef{figure} % loads the file `figure.tex', which contains all the LaTeX commands % format that particular figure. (The figure will be centered) % To insert an EPS file, `figure.tex' should contain the % \inserteps{figure.eps} command, and any psfrag commands required % to format that figure. % Options defined below control the formating of figures. % If using psfrag, the figure.tex file will be of the form: % \begin{psfrags} \psfrag{xx}{yy} ... \inserteps{figure.eps} % \end{psfrags} % ===================================================================== % ********************************************************************* % ****** ************************************* % ***** LaTeX2e INITIALIZATION ************************************ % ****** ************************************* % ********************************************************************* \NeedsTeXFormat{LaTeX2e}[1993/11/11] % Oldest acceptable version of LaTeX2e \ProvidesPackage{ieeefig}[1996/01/26] % Name of package provided, date %====================== Initial Code & Declaration of Options \newif\iffigdr@ft \figdr@ftfalse % defines draft or regular mode. \newif\iffigframe \figframefalse % if figures are framed, w/ labels \newif\ifshowfigs \showfigstrue % if false, only figure name shown. \newif\ifdraftfigs \draftfigsfalse % if true, blank space left for fig. \newif\ifsc@leoverride % override scale when doing figs. \DeclareOption{draft}{\figdr@fttrue\typeout{ieeefig: Draft option selected.}} \DeclareOption{final}{\figdr@ftfalse\typeout{ieeefig: Final option selected.}} \DeclareOption{blank}{\draftfigstrue\typeout{ieeefig: Blank option selected.}} \DeclareOption{noblank}{\draftfigsfalse\typeout{ieeefig: Blank option de-selected.}} \DeclareOption{hide}{\showfigsfalse\typeout{ieeefig: Hide option selected.}} \DeclareOption{show}{\showfigstrue\typeout{ieeefig: Show option selected.}} \DeclareOption{frame}{\figframetrue\typeout{ieeefig: Frame option selected.}} \DeclareOption{noframe}{\figframefalse\typeout{ieeefig: Frame option de-selected.}} \ProcessOptions \RequirePackage[final]{graphics} \RequirePackage{graphicx,ifthen} \newcommand{\figw@rning}[1]{\typeout{Warning: #1\space on page \thepage}} %====================================================================== % LaTeX input file and is input by the figure commands. The figure can % be "larger than life" and these routines will scale the figures by % a constant amount to fit into the paper or book. % % \setfigscale{scale} Changes the scaling factor applied to each figure % (which is initialized to 1). If changed inside the main LaTeX % code, then the new scale will apply to all figures from that % point on. If changed within the figure file, it will apply only % to that figure. % % \figdef[dim]{figname} This command inputs a figure % TeX file of name "figname.tex". If the file "figname.tex" does % not exist, a warning is output and the figure name is displayed % in a framed box. A warning is also output if an eps file of name % "figname.eps" does not exist. The optional dimension [dim] is % the vertical space skipped when draftfigs is true. % % \scalefig[dim]{figname}{scale} This is the same as \figdef, except % that it overrides any scaling in the "figname.tex" file. % % \showfigsfalse This command will cause figdef to print the figure's % name in a framed box instead of including the figure. Saves % time. Note that the figures are "short" since they are just % the height of the text. % \showfigstrue (default) figdef returns to the regular mode of display- % ing the figures, not just the name. % % \figframetrue This command will cause figdef to draw a frame around % the figure so that you can adjust the bounding box. Also prints % the figure name in the margin of the page. % \figframefalse (default) Turns off the figure framing. % % \draftfigstrue Leaves an empty space *of correct vertical dimension* % on the page for the figure. (speeds up LaTeX since it does not % need to search for the figure on the disk). % \draftfigsfalse (default) Draws the figure instead. % % Use \renewcommand{\figfontsize}{\scriptsize}, for example, to change the % default font size for the figure labels. % Using \renewcommand{\figfontstyle}{\sffamily}, for example, to change the % default figure font style to sans-serif. %====================================================================== \newcommand{\setfigscale}[1]{\gdef\figsc@le{#1}} \setfigscale{1} \newsavebox{\figb@x} \newdimen\htpl@sdp \newif\ifdr@fteps \newdimen\b@xwidth \def\figfontsize{\footnotesize} \def\figfontstyle{\rmfamily} \newcommand{\d@fig}[2]{\begingroup\figfontsize\reset@font\figfontstyle% \b@xwidth=\hsize \advance\b@xwidth by -9\arrayrulewidth \xdef\figh@ight{#2}% \xdef\figscales@ve{\figsc@le}% save the global scale factor. \IfFileExists{#1.tex}{% \ifsc@leoverride\xdef\figsc@le{\sc@lefig}\fi% % \ifshowfigs% % show figs true... \ifdraftfigs% % show figs true and draft figs true... \vspace*{-2\arrayrulewidth}\frame{\vbox to #2{\vss \hbox to \b@xwidth{\hfill #1 \hfill}\vss}}% \else% % show figs true and draft figs false... \iffigframe% % showfigstrue, draftfigsfalse, figframetrue... \vspace*{-2\arrayrulewidth}\hfill\frame{\let\par\relax\input{#1}}\hfill% \sbox{\figb@x}{\let\par\relax\input{#1}}% read box to get the height! \htpl@sdp=\ht\figb@x\advance\htpl@sdp by \dp\figb@x% \smash{\rlap{\vbox{\hbox{\footnotesize\quad\tt{ht=}\the\htpl@sdp\typeout{#1: \the\htpl@sdp}}% \hbox{\footnotesize \quad #1}}}}% \else% % showfigstrue, draftfigsfalse, figframefalse... \iffigdr@ft% % showfigstrue, draftfigsfalse, figframefalse, draft mode true... \hbox to \hsize{\hss\let\par\relax\input{#1}\hss\smash{\rlap{\footnotesize\quad#1}}}% \else% % showfigstrue, draftfigsfalse, figframefalse, draft mode false... %\hbox to \hsize{\hss\let\par\relax\input{#1}\hss\smash{\rlap{}}}% \noindent{\hfill\let\par\relax\input{#1}\hfill}% %\hbox to \hsize{\hss\let\par\relax\input{#1}\hss}% %\centerline{\let\par\relax\input{#1}}% \fi% end \iffigdr@ft \fi% end \iffigframe \fi% end \ifdraftfigs \else% % show figs is false... \centerline{\fbox{#1}}% \fi% end \ifshowfigs }{% \figw@rning{#1.tex not found!}% \centerline{\frame{\vbox to #2{\vss\hbox{\hskip 1in\relax #1 (missing from disk!)\hskip 1in}\vss}}}% }% end IfFileExists #1.tex \xdef\figsc@le{\figscales@ve} \ifdr@fteps% \vspace*{0.05in}% \centerline{\large \bf This is a draft figure!}% \fi% \endgroup }%end \fgdf %====================================================================== % \inserteps[options]{epsfilename} % The specified eps file will be inserted into a figdef environment % (such as when using psfrag). If the file does not exist, a box is % left on the page, of height specified by the \figdef command, with % a warning message. The "options" can be any options supported by % the \includegraphics command. % % A recommended variant of this command is: % \inserteps[trim=a b c d]{filename.eps}. This is especially useful % when using \psfrags if the frags fall outside the original bounding % box of the eps file. The parameters a,b,c,d are the amount to trim % from the left, bottom, right and top of the figure, respectively. % Their units are in points. To see if you need to modify the bounding % box in this way, use the \figframetrue command. (If the arguments a,b, % c, or d are negative, then the bounding box is expanded. This is % probably the most common situation). % % \insertdrafteps{epsfilename} % The specified file is inserted just as above. Below the figure, and % centered on the page is a framed message stating that the figure is % a draft figure. %====================================================================== \def\insert@eps[#1]#2{\IfFileExists{#2}{\ifsc@leoverride% \includegraphics[scale=\sc@lefig,#1,clip=]{#2}\else% \includegraphics[scale=\figsc@le,#1,clip=]{#2}\fi}{% \figw@rning{file #2 is missing!}\vspace*{-2\arrayrulewidth}% \frame{\vbox to \figh@ight{\vss \hbox{\mbox{\qquad #2 (missing from disk)\qquad}}\vss}}}\global\dr@ftepsfalse} \def\inserteps{\@ifnextchar [{\insert@eps}{\insert@eps[angle=0]}} \newcommand{\insertdrafteps}[1]{\inserteps{#1}\global\dr@ftepstrue} \def\figdef{\@ifnextchar [{\figdefa}{\figdefa[0.5in]}} \def\figdefa[#1]#2{\sc@leoverridefalse\d@fig{#2}{#1}} \def\scalefig{\@ifnextchar [{\@scalefiga}{\@scalefiga[0.5in]}} \def\@scalefiga[#1]#2#3{\xdef\sc@lefig{#3}\sc@leoverridetrue\d@fig{#2}{#1}}