summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/bosisio/graphfig.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/bosisio/graphfig.dtx')
-rw-r--r--macros/latex/contrib/bosisio/graphfig.dtx485
1 files changed, 485 insertions, 0 deletions
diff --git a/macros/latex/contrib/bosisio/graphfig.dtx b/macros/latex/contrib/bosisio/graphfig.dtx
new file mode 100644
index 0000000000..b9d7334cf0
--- /dev/null
+++ b/macros/latex/contrib/bosisio/graphfig.dtx
@@ -0,0 +1,485 @@
+%\iffalse % MetaComment
+%%
+%% + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
+%% | Copyright(C) 1997-2010 by F. Bosisio |
+%% | |
+%% | This program can be redistributed and/or modified under |
+%% | the terms of the LaTeX Project Public License, either |
+%% | version 1.3 of this license or (at your option) any later |
+%% | version. The latest version of this license is in |
+%% | http://www.latex-project.org/lppl.txt |
+%% | and version 1.3 or later is part of all LaTeX distributions |
+%% | version 2005/12/01 or later. |
+%% | |
+%% | This work has the LPPL maintenance status `maintained'. |
+%% | The Current Maintainer of this work is F. Bosisio. |
+%% | |
+%% | This work consists of files graphfig.dtx and graphfig.html |
+%% | and of the derived files graphfig.sty and graphfig.pdf. |
+%% | |
+%% | E-mail: fbosisio@bigfoot.com |
+%% | CTAN location: macros/latex/contrib/bosisio/ |
+%% + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
+%%
+%% If you make any improvment, find any bug or have
+%% any suggestion, please let me know about it.
+%%
+%<*package,driver>
+%\fi
+%
+\def\FileName{graphfig}
+%\iffalse % MetaComment
+%</package,driver>
+%<*package>
+%\fi
+\def\fileversion{2.2}
+\def\filedate{1997/12/15}
+\def\docdate{2005/04/09}
+\def\filedescr{Commands to include graphics files (FB)}
+%
+%\iffalse % MetaComment
+%</package>
+%<*dtx>
+%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+% This section is the installation driver
+%
+\def\batchfile{\FileName.dtx}
+%
+\input docstrip
+%
+\keepsilent
+% \askforoverwritefalse
+%
+\generateFile{\FileName.sty}{f}{\from{\FileName.dtx}{package}}
+%
+\generateFile{\FileName.drv}{f}{\from{\FileName.dtx}{driver}}
+%
+\Msg{******************************************************}
+\Msg{*}
+\Msg{* To produce the documentation run the}
+\Msg{* file `\FileName.drv' through LaTeX.}
+\Msg{*}
+\Msg{******************************************************}
+%
+\endbatchfile
+%
+% End of the installation driver
+%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+%</dtx>
+%
+% This section is the documentation driver
+%
+%<+driver>\documentclass[12pt,a4paper]{article}
+%<+driver>\usepackage{doc}
+%<+driver> \EnableCrossrefs
+%<+driver> \CodelineIndex
+%<+driver> \RecordChanges
+%<+driver> %\OnlyDescription % Uncomment not to see the implementation
+%<+driver>\begin{document}
+%<+driver> \DocInput{\FileName.dtx}
+%<+driver> \PrintIndex
+%<+driver> \PrintChanges
+%<+driver>\end{document}
+%
+% End of the documentation driver
+%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+%<*package>
+%\fi
+%
+% \changes{v0.1}{21 April 1997}{First release}
+% \changes{v0.2}{5 July 1997}{Added the ``\texttt{clip}'' option to ``\texttt{psfig}''}
+% \changes{v0.3}{29 August 1997}{Modified the ``\texttt{@PS@Figure}'' command}
+% \changes{v1.0}{8 September 1997}{Documentation added}
+% \changes{v1.1}{19 November 1997}{Improved the ``SubFigure'' command}
+% \changes{v1.2}{11 December 1997}{Fixed a bug in ``SubFigure'' references}
+% \changes{v1.3}{12 December 1997}{Standard ``graphics'' package instead of ``psfig''}
+%\iffalse % MetaComment
+% The previous change has been suggested by Sebastian Rahtz (spqr@ftp.tex.ac.uk)
+%\fi
+% \changes{v2.0}{15 December 1997}{``graphfile'' instead of ``PSFigure/SubFigure''}
+% \changes{v2.1}{5 March 1999}{Added copyright notice and changed addresses}
+% \changes{v2.2}{9 April 2005}{Usage of the double-quote character (") avoided}
+%
+% \MakeShortVerb{\|}
+%
+% \title{Package \texttt{\FileName}\thanks{This is version \fileversion,
+% last revised \filedate; documentation date \docdate}}
+% \author{F. Bosisio\\\normalsize E-mail: \texttt{fbosisio@bigfoot.com}}
+% \date{\filedate}
+% \maketitle
+%
+% \begin{abstract}
+% Documentation for the package \texttt{\FileName}.
+% \end{abstract}
+%
+% \section{Introduction}
+% This package provides some commands to make the use of graphic
+% files in \LaTeX{} simpler.
+%
+% \noindent
+% It declares the ``|Figure|'' environment (capitalized!) and
+% the two commands ``|\graphfile|'' and ``|\graphfile*|''.
+% Combining this commands, it it possible to include graphic
+% files in a \LaTeX{} document very simply.
+%
+% \section{Required packages}
+% This package uses the ``|\includegraphics*|'' command defined in the
+% standard |graphics| package.
+% Moreover, it uses the package |subfigure| when the |subfigure|
+% option is specified, and the |float| package if the |AllowH|
+% option is used.
+%
+% \section{The options}
+% At now, two options are available: ``|subfigure|'' and ``|AllowH|''.
+%
+% \noindent
+% The ``|subfigure|'' option allow the use of sub-figures
+% inside a |Figure| environment, in order to place multiple
+% pictures in a single \LaTeX{} figure (cfr. the |subfigure|
+% standard package).
+%
+% \noindent
+% The ``|AllowH|'' option allow the use of the ``|H|'' float specifier
+% for the |Figure| environment, in order to place the figure exaclty
+% where the command is placed (cfr. the |float| standard package).
+%
+% \section{The \texttt{Figure} environment and its relatives}
+% The ``|Figure|'' environment (capitalized!) is somewhat different
+% from the standard \LaTeX{} ``|figure|'' environment: besides an
+% optional argument used to specify the placement parameters (which
+% now defaults to ``|[htbp]|''), it has a mandatory argument specifying
+% the ``caption'' and another optional argument, used as a ``label'' for
+% cross-referencies:
+%
+% \begin{verbatim}
+% \begin{Figure}[<htbpH>]{<caption>}[<label>]
+% ...
+% \end{Figure}
+% \end{verbatim}
+%
+% \noindent
+% The use of the ``|H|'' specifier (i.e. ``I want my float here!'') is
+% possible only if the ``|AllowH|'' option has been specified.
+%
+% \subsection{The \texttt{graphfile} command}
+% Inside the ``|Figure|'' environment, are available the commands:
+%
+% \begin{verbatim}
+% \graphfile[<width>]{<file>}[<sub-caption>]
+% \graphfile*[<heigth>]{<file>}[<sub-caption>]
+% \end{verbatim}
+%
+% \noindent
+% which are a simplified version of the ``|\includegraphics*|''
+% command (which is automatically included by this package; see the
+% |graphics| package for reference), since you don't have to worry
+% about scaling: the mandatory argument is the name of the graphic file to
+% include, whereas the first optional argument specifies the desired
+% width (in the non *-form) or heigth (in the *-form) of the figure as
+% a fraction of ``|\linewidth|'' (e.g. ``|50|'' means ``|.50\linewidth|'',
+% i.e. half a line! ), so no unit of measure (as ``|cm|'' or ``|pt|'')
+% is required.
+% Moreover, since the ``*-form'' of ``|\includegraphics|'' is used, the
+% regions outside the bounding-box are not drawn.
+% Another advantage of the combined use of the ``|Figure|'' environment
+% and the ``|\graphfile|'' commands is that the picture is automatically
+% centered horizontally, so no ``|\centering|'' or similar declartion
+% is required.
+%
+% \begin{verbatim}
+% \begin{Figure}[<htbpH>]{<caption>}[<label>]
+% \graphfile[<width>]{<file>}
+% \end{Figure}
+% \end{verbatim}
+%
+% \subsection{Sub-figures}
+%
+% If you want to include more than one file in a single figure,
+% you need to specify the ``|subfigure|'' option, which includes the
+% |subfigure| package and provides the authomatic placement of a
+% sub-caption below each picture.
+%
+% \begin{verbatim}
+% \graphfile[<width_1>]{<file_1>}[<sub-caption_1>]
+% ...
+% \graphfile[<width_N>]{<file_N>}[<sub-caption_N>]
+% \end{verbatim}
+%
+% \noindent
+% which is a combined version of ``|\subfigure|'' and ``|\includegraphics*|''
+% (see the |subfigure| and |graphics| packages for reference):
+% the last optional argument specify a ``caption'' for the sub-figure under
+% consideration, while the first two arguments work exactly like as
+% described above in the case of one only picture (indeed, you can
+% use the last optional argument even if the |subfigure| option was
+% not specified, in which case it is simply ignored).
+% Each individual caption is printed preceded by a bracketed letter,
+% which is the sub-figure counter and is printed even if no caption is
+% specified.
+% Using only a series of ``|\graphfile[|$\dots$|]{|$\dots$|}[|$\dots$|]|''
+% commands inside a ``|Figure|'' environment provides an equal spacing
+% beetween the pictures and around them, without the need for any
+% extra command.
+% Finally, if a ``|<label>|'' was specified as the last optional argument
+% to the ``|Figure|'' environment, you can reference to each individual
+% sub-figure by the labels ``|<label>:a|'', ``|<label>:b|'', and so on,
+% without the need for declaring them.
+%
+% \begin{verbatim}
+% \begin{Figure}[<htbpH>]{<caption>}[<label>]
+% \graphfile[<width_1>]{<file_1>}[<sub-caption_1>]
+% \graphfile[<width_2>]{<file_2>}[<sub-caption_2>]
+% :
+% :
+% \end{Figure}
+% \end{verbatim}
+%
+% \subsection{The \texttt{FigureDefaultPlacement} command}
+%
+% The command ``|FigureDefaultPlacement{|$\dots$|}|'' can be used to
+% specify the default value for the placement argument of the ``|Figure|''
+% environment.
+% This is useful to change the default placement from the standard
+% value ``htbp''.
+%
+% \StopEventually{}
+% \newpage
+% \section{Implementation}
+% We start defining the options and including the required packages.
+% \begin{macrocode}
+%%
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{\FileName}[\filedate\space v\fileversion\space\filedescr]
+\RequirePackage{graphics}
+%%
+\newif\if@AllowSubFigure\@AllowSubFigurefalse
+\newif\if@AllowHfloat\@AllowHfloatfalse
+%%
+\DeclareOption{subfigure}{\@AllowSubFiguretrue}
+\DeclareOption{AllowH}{\@AllowHfloattrue}
+%%
+\ProcessOptions
+%%
+\if@AllowSubFigure
+ \RequirePackage{subfigure}[1995/03/06 v2.0]
+% \end{macrocode}
+%
+% These redefinitions are needed in order to obtain the right form
+% of the references (i.e. like ``Fig. 1a'' and not ``Fig. 1(a)'')
+% \begin{macrocode}
+ \def\thesubfigure{\alph{subfigure}}
+% \end{macrocode}
+%
+% We use ``|\renewcommand|'' instead of ``|\def|'' in order to realize
+% possible changes in the |subfigure| package which may eliminate the
+% inner command ``|\@thesubfigure|''.
+% \begin{macrocode}
+ \renewcommand*\@thesubfigure{{\subcaplabelfont(\thesubfigure)}\space}
+ \let\SubGR@PH=\subfigure
+\else
+% \end{macrocode}
+%
+% If the ``subfigure'' option is not present, we let the internal
+% command ``|\SubGR@PH|'' to simply execute its mandatory argument
+% \begin{macrocode}
+ \newcommand*\SubGR@PH[2][]{#2}
+\fi
+\if@AllowHfloat
+ \RequirePackage{float}[1995/03/29 v1.2c]
+ \restylefloat{figure}
+\fi
+%%
+\newif\if@FirstPicture\@FirstPicturetrue
+\let\SubFig@Label=\relax
+% \end{macrocode}
+%
+% \begin{macro}{\@Graph@Figure}
+% This is the core command which includes and scales the graphic file
+% using the commands provided by the |graphic| package.
+% \begin{macrocode}
+%%
+\newcommand*\@Graph@Figure[3]{\resizebox{#1}{#2}{\includegraphics*{#3}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\graphfile}
+% The command ``|\graphfile''| and its *-version simply calls one
+% of the forthcoming commands.
+% \begin{macrocode}
+\newcommand*\graphfile{\@ifnextchar*{\graphfile@star}{%
+\@ifnextchar[{\GraphFile@width}{\GraphFile@noSize}}%
+}
+\def\graphfile@star*{\@ifnextchar[{\GraphFile@heigth}{\GraphFile@noSize}}
+% \end{macrocode}
+% These commands, in turns, calls ``|\@GraphFile@Draw|'' with suitable
+% arguments (i.e. the lengths are turned into fractions of ``|\linewidth|''
+% and an exclamation mark ``|!|'' is used where the scaling factor has
+% to be the same as the other direction; furthermore the actual size
+% of the graphic image is used [throught the ``|\width|'' command] if
+% no scaling parameter is given).
+% \begin{macrocode}
+%%
+\def\GraphFile@width[#1]{%
+\@ifnextchar[{\@GraphFile@width@heigth{#1}}{\@GraphFile@widthNOheigth{#1}}%
+}
+\def\@GraphFile@width@heigth#1[#2]#3{%
+\@ifnextchar[{\@GraphFile@Draw{.#1\linewidth}{.#2\linewidth}{#3}}{%
+\@GraphFile@Draw{.#1\linewidth}{.#2\linewidth}{#3}[]}%
+}
+\def\@GraphFile@widthNOheigth#1#2{%
+\@ifnextchar[{\@GraphFile@Draw{.#1\linewidth}{!}{#2}}{%
+\@GraphFile@Draw{.#1\linewidth}{!}{#2}[]}%
+}
+\def\GraphFile@heigth[#1]#2{%
+\@ifnextchar[{\@GraphFile@Draw{!}{.#1\linewidth}{#2}}{%
+\@GraphFile@Draw{!}{.#1\linewidth}{#2}[]}%
+}
+\newcommand*\GraphFile@noSize[1]{%
+\@ifnextchar[{\@GraphFile@Draw{\expandafter\width}{!}{#1}}{%
+\@GraphFile@Draw{\expandafter\width}{!}{#1}[]}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@GraphFile@Draw}
+% This command has three mandatory arguments and an optional one,
+% which represent, respectively, the width, heigth, file-name and
+% sub-caption of the current picture.
+% \begin{macrocode}
+%%
+\def\@GraphFile@Draw#1#2#3[#4]{%
+\if@FirstPicture%
+% \end{macrocode}
+% If it is the first call to this command in the current |Figure|
+% environment, we simply store it in ``|\TMP@Graph|''.
+% We also set ``|@FirstPicture|'' to false for the next call.
+% \begin{macrocode}
+ \@FirstPicturefalse%
+ \def\TMP@Graph{\SubGR@PH[#4\SubFig@Label]{\@Graph@Figure{#1}{#2}{#3}}}%
+\else%
+ \ifx\TMP@Graph\undefined%
+% \end{macrocode}
+% If ``|\TMP@Graph|'' is not defined, this is the third call (or more).
+% So we invoke the ``|\SubGR@PH|'' command (which may be ``|\subfigure|''
+% or simply its second argument depending on the options) with a
+% ``|\@Graph@Figure|'' command inside and followed by an ``|\hfill|''
+% command for centering purposes.
+% \begin{macrocode}
+ \SubGR@PH[#4\SubFig@Label]{\@Graph@Figure{#1}{#2}{#3}}\hspace*{\fill}%
+ \else%
+% \end{macrocode}
+% If we arrive at this point it is the second call to ``|\graphfile|''
+% inside the current |Figure| environment: before plotting the
+% current figure (as above) we must call ``|\TMP@Graph|'' to plot
+% the first one (which was only saved).
+% We also undefine ``|\TMP@Graph|'' for the next time.
+% \begin{macrocode}
+ \hspace*{-4pt}\TMP@Graph\hspace*{\fill}%
+ \let\TMP@Graph\undefined%
+ \SubGR@PH[#4\SubFig@Label]{\@Graph@Figure{#1}{#2}{#3}}\hspace*{\fill}%
+ \fi%
+\fi%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\FigureDefaultPlacement}
+% The ``|\FigureDefaultPlacement|'' macro is defined to set the value of
+% the ``|\Default@FigurePlacement|'' to its argument.
+% Also ``|\Default@FigurePlacement|'' is initialized to ``|htbp|''.
+% \begin{macrocode}
+%%
+\newcommand*\FigureDefaultPlacement[1]{\def\Default@FigurePlacement{#1}}
+\def\Default@FigurePlacement{htbp}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{Figure}
+% \begin{macrocode}
+%%
+\newenvironment{Figure}[2][\Default@FigurePlacement]{%
+% \end{macrocode}
+% The code for ``|\begin{Figure}|'' starts by setting ``|@FirstPicture|''
+% to true.
+% \begin{macrocode}
+\@FirstPicturetrue%
+% \end{macrocode}
+% Then we start a standard ``|figure|'' environment followed by an
+% ``|\hfill|'' command (for centering purposes).
+% \begin{macrocode}
+\figure[#1]%
+\hspace*{\fill}%
+% \end{macrocode}
+% We change the definition of ``|\\|'' so that an ``|\hfill|'' command
+% is added at the beginning of next line.
+% \begin{macrocode}
+\let\@Figure@CR=\\%
+\def\\{\par\hspace*{\fill}}%
+% \end{macrocode}
+% If there is the last optional argument, ``|\@Figure@quadra|'' is
+% invoked, otherwise ``|\MK@Figure@Caption|'' is directly defined
+% to print the specified caption.
+% \begin{macrocode}
+\@ifnextchar[{\@Figure@quadra{#2}}{\def\MK@Figure@Caption{\caption{#2}}}%
+}{%
+% \end{macrocode}
+% The code for ``|\end{Figure}|'' starts by checking that ``|\TMP@Graph|''
+% is undefined, otherwise this means that there was one only picture:
+% in such a case we have to print it out before continuing.
+% \begin{macrocode}
+\ifx\TMP@Graph\undefined\else%
+ \if@AllowSubFigure%
+ \renewcommand*\SubGR@PH[2][]{##2}%
+ \TMP@Graph\hspace*{\fill}%
+ \let\SubGR@PH=\subfigure%
+ \else%
+ \TMP@Graph\hspace*{\fill}%
+ \fi%
+ \global\let\TMP@Graph\undefined%
+\fi%
+% \end{macrocode}
+% The ``|\MK@Figure@Caption|'' prints the previously saved caption.
+% \begin{macrocode}
+\MK@Figure@Caption%
+% \end{macrocode}
+% All local commands are undefined in order to save \TeX{} memory.
+% \begin{macrocode}
+\let\Mk@Figure@Caption\undefined%
+\let\SubFig@Label=\relax%
+\let\\=\@Figure@CR%
+\let\@Figure@CR\undefined%
+% \end{macrocode}
+% The standard ``|figure|'' environment is closed.
+% \begin{macrocode}
+\endfigure%
+% \end{macrocode}
+% The command ``|\thesubfigure|'' is redefined so that it correctly
+% prints the figure number, too.
+% \begin{macrocode}
+\def\thesubfigure{\thefigure\alph{subfigure}}%
+}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\@Figure@quadra}
+% The ``|\MK@Figure@Caption|'' is defined to print the specified
+% caption with an added label.
+% Also ``|\SubFig@Label|'' generates a label in the form ``|<label>:a|''.
+% \begin{macrocode}
+%%
+\def\@Figure@quadra#1[#2]{%
+\def\MK@Figure@Caption{\caption{#1}\label{#2}}%
+\def\SubFig@Label{\expandafter\label{#2:\expandafter\alph{subfigure}}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse % MetaComment
+%<*package>
+%\fi
+%
+% \CheckSum{214}
+% \Finale
+%
+\endinput
+