\def\filename{endfloat}
\def\fileversion{v2.4i}
\def\filedate{1995/10/11}
\def\docdate {1995/10/11}
%
% \CheckSum{596}
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
%%
%
% \iffalse
%% Description: LaTeX style to put figures and tables at end of article
%% Keywords: LaTeX, style-option, float, figure, table
%% Authors: James Darrell McCauley <jdm5548@diamond.tamu.edu>,
%%		Jeff Goldberg <j.goldberg@cranfield.ac.uk>
%% Maintainer: Jeff Goldberg <J.Goldberg@Cranfield.ac.uk>
%% Latest Version: Version 2.4i <October 1995>
% \fi
%
% \DoNotIndex{\documentclass,\usepackage,\hfuzz,\small,\tt,\begin,\end}
% \DoNotIndex{\NeedsTeXFormat,\filedate,\fileversion,\DoNotIndex}
% \DoNotIndex{\def,\edeg,\xdef,\gdef,\let,\divide,\advance,\multiply}
% \DoNotIndex{\",\-,\H,\',\\,\{,\},\^,\ }
% \DoNotIndex{\begingroup,\endgroup,\catcode,\global,\relax,\space}
% \DoNotIndex{\string,\immediate}
% \DoNotIndex{\normalsize,\large,\Large,\small,\tiny,\bf}
% \DoNotIndex{\@z}
% \DoNotIndex{\ifthenelse,\and,\equal,\whiledo,\if,\fi,\else}
% \DoNotIndex{\CodelineIndex,\EnableCrossrefs,\DisableCrossrefs}
% \DoNotIndex{\DocInput,\AltMacroFont}
% \DoNotIndex{\RecordChanges,\OnlyDescription}
% \DoNotIndex{\@input,\@namedef,\@whilesw,\clearpage,\ifnum,\ifx}
% \DoNotIndex{\jobname,\message,\MessageBreak,\newcommand}
% \DoNotIndex{\protect,\providecommand,\ProvidesPackage,\renewcommand}
% \DoNotIndex{\section,\setlength}
%
% \changes{v0.1}{1992/02/25}{created by Darrell McCauley (jdm)}
% \changes{v1.0}{1992/03/01}{cleaned up and released jdm}
% \changes{v2.0}{1992/06/02}{incorporated changes made by bj (see v1.99). jdm}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
% \changes{v2.1c}{1994/07/20}{Modify documentation -jpg}
% \changes{v2.3}{1995/03/05}{Fix figure* bug and docs -jpg}
%
% \newcommand*{\pkg}[1]{\textsf{#1}}
% \newcommand*{\file}[1]{\texttt{#1}}
% \newcommand*{\cls}[1]{\textsl{#1}}
% \newcommand{\bs}{\texttt{\char'134}}
%
% \title{The \texttt{\filename} package\thanks{This file
%        has version number \fileversion, last
%        revised \filedate, documentation dated \docdate.}}
% \author{James Darrell McCauley
%  \and Jeff Goldberg\thanks{JPG (J.Goldberg@Cranfield.ac.uk)
%    is responsible for all modifications
%    from version 2.1 upwards.  Since there is almost no original code
%    left, he has claimed co-authorship from version 2.4.  He is
%    also the current maintainer.}}
% 
% \date{\docdate}
%
% \maketitle
%
% \begin{abstract}
% The purpose of this style is to put all figures on pages by themselves
% at the end of an article in a section named Figures. Likewise for tables.
% Markers, like ``[Figure 3 about here]'' appear in the text (by default)
% near where the figure (or table) would normally have occurred.
% This is usually required when preparing submissions to journals.
%
% A number of package options and other mechanisms are provided to
% give the user control over various aspects of the package's behavior.
%
% Loading this package will change the output of \LaTeX.
% \end{abstract}
% 
% \tableofcontents
% \section{In many voices}
%
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% This documentation was put in its current form by Jeff Goldberg,
% who has tried to indicate when he is (when
% I am) speaking.   See section~\ref{sec:history} for more detail.
% However, both the original author, Darrell McCauley, and
% a major contributor, Brian Junker, use the first person
% singular.  In this version I no longer work to keep it clear
% who wrote what portions of the documentation and the code, but
% have allowed things to blend together a little more, since the
% constant interpolations were hindering readability.  Generally
% the user documentation was written by Darrell MaCauley (jdm),
% but anything that refers to \LaTeXe\ features was added
% by me (jpg).  Also, where you find spelling and typographical
% errors, you are likely to be reading my text.
%
% This documentation is long.  Most users won't need to read beyond
% the first few pages, but there are a number of ways to customize
% the behavior of \pkg{endfloat} and these are detailed as the
% documentation progresses.  The package is unusual in the way
% it does its job, so it can interact with other packages and
% other aspects of \LaTeX\ in ways that may be surprising.
% Although the package is flexible in some respects, it is
% highly limited in others.
% Tools and hints are provided to help you control these interactions,
% but these do require some reading.  But you only need to take
% a look at these sections when the need arises.
%
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
%
% \section{Why write this package?}
% 
% Many journals require tables and figures to be separated from the text
% when you submit those ugly double spaced copies.  They also usually want
% a list of figures/tables before these sections (capability added in v2.0,
% control through package options added in v2.2).
%
% I (jdm) am writing a set of styles that look exactly like a journal, but just
% by adding one style option, I wanted the user to meet the requirements
% for formatting submissions. I encourage others to do the
% same.\footnote{Note that jdm, working in old \LaTeX209
% did not have the distinction between class, package and package
% options available to him at the time he made his comment.
% The most coherent way to do what is needed is to use a class,
% let's say \cls{submit}, which would load \pkg{endfloat} and
% presumably some double spacing packages among other things.  Once
% that class is defined, then other classes which are specific
% to particular journals can be defined.} 
%
% \section{Usage}
% \subsection{Loading}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% Just include the package in your preamble
% \begin{verbatim}
%  \usepackage[...]{endfloat}
%\end{verbatim}
% 
% Note that versions 2.1 and beyond will no longer work with
% \LaTeX209.  Get your administrator to upgrade your site
% to the new standard, \LaTeXe.  Although version~2.0 (a \LaTeX209 version)
% will usually work with \LaTeXe, it will not do so in combination
% with certain other packages.
%
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%
% \subsection{What it does}
%
% Merely loading the package will get it working.  Loading it will
% have \LaTeX\ produce two extra files with
% \texttt{.ttt} and \texttt{.fff} extensions
% (for tables and figures, respectively).
%
% This puts all figures and tables at the end of your document
% each on a page by itself\footnote{This
%    is the default.  See section~\ref{sec:separator} to see how
%    to have multiple floats per page.}
% and creates a List of Figures and/or List of Tables section
% at the end (when appropriate and controllable by options).
% The floats are processed using |\baselinestretch{1}| irrespective
% of what is used in the document as a whole.  This can be
% reset to, say 1.4, by using
% \begin{verbatim}
% \AtBeginDelayedFloats{\renewcommand{\baselinestretch}{1.4}}
%\end{verbatim}
% which is available from version 2.4.  See section~\ref{sec:hooks}
% for more discussion.
%
% It also leaves notes in the text (i.e., ``[Figure 4 about here.]'').
% If you would rather not have these, this can be turned off by
% using the |nomarkers| options.  If you
% do not like the look of this marker, you can change
% their text and appearance
% (see section~\ref{sec:language}).
%
% \subsection{Starred floats}
% The |figure*| and |table*| versions are supported by the current
% version.\footnote{I (jpg) very stupidly introduced a bug in version 2.2
% which wrecked |figure*|.  It has been brought to my attention and
% fixed.  I offer my thanks and my apologies.}
% However, it must be noted that what actually gets processed at the
% end is always with the star, since in single column mode the
% |*| is harmless.
%
% \subsection{Options} \label{sec:options}
% 
% Under version 2.2 and higher,
% the \pkg{endfloat} package uses package options.  The options
% are summarized in table~\ref{tab:options}.  In addition to these
% options, see sections~\ref{sec:extra} and~\ref{sec:hooks} for more
% advanced ways of controlling output.
%
% \begin{table}
% \caption{Options and defaults} \label{tab:options}
% \smallskip
% \begin{tabular}{lcll}
% \hline
% \multicolumn{1}{c}{Option} &
% \multicolumn{1}{c}{Default}&
% \multicolumn{1}{c}{Default implication} &
% \multicolumn{1}{c}{Descriptions} \\
% \hline
% |nofiglist| & off  &		                & no list of figures\\
% |notablist| & off  &		                & no list of tables\\
% |nolists|   &      & |nofiglist|, |notablist| & neither list\\
% |figlist|   & on   &                          & list of figures\\
% |tablist|   & on   &                          & list of tables\\
% |lists|     &      & |figlist|, |tablist|     & list of tables and figures\\
% |nofighead| & on   &                          & no `Figures' section header\\
% |notabhead| & on   &                          & no `Tables' section header\\
% |noheads|   &      & |nofighead|, |notabhead| & neither of the headers\\
% |fighead|   & off  &                          & `Figures' section header\\
% |tabhead|   & off  &                          & `tables' section header\\
% |heads|     &      & |fighead|, |tabhead|     & Both section headers\\
% |markers|   & on   &		                & Place markers in the text\\
% |nomarkers| & off  &		                & no markers in text\\
% |tablesfirst|  & off &	                & Put tables before figures\\
% |figuresfirst| & on  &		        & Put figures before tables\\
% \hline
% \end{tabular}
% \end{table}
%
% The list of tables and figures can be suppressed by using the
% \texttt{nofiglist} and \texttt{notablist} options.  Both
% can be suppressed with the \texttt{nolists} option.\footnote{In
% versions prior to 2.2 the command for turning of the lists turned
% on the headers (the equivalent of the |heads| option).  That is
% not the case with these options.  The |lists| and the |heads|
% options are entirely orthogonal.}
% The default is \texttt{lists}.
%
% A section header for `Tables' and `Figures' can be produced by using
% the option |tabhead|, |fighead|, respectively, and |heads| for both.
% The defaults are |notabhead| and |nofighead|.
%
% If you want the headers instead of the lists you would need to 
% use both the |nolists| and the |heads| options.
%
% If you want to suppress the markers in the text, use the
% option \texttt{nomarkers}.  The default is
% \texttt{markers}.
%
% Normally the figures at the end appear before the tables.
% This can be changed by using the option \texttt{tablesfirst}.
% The default is \texttt{figuresfirst}.\footnote{It is hoped that
%   future versions will allow new kinds of float or environment
%   to be delayed, in which case an entirely new mechanism will
%   need to be introduced for ordering their appearance.}
% 
% A typical usage might be something like
% \begin{verbatim}
%\documentclass[a4paper,12pt]{article}
%\usepackage[nolists,tablesfirst]{endfloat}
%...
%\begin{document}
%\end{verbatim}
% which would suppress the list of tables and figures as well as
% the corresponding section headers, and would have the tables
% precede the figures.
%
% \subsubsection{Contradictions and dilemmas}
%
% It is not recommended that one specify conflicting options, but
% if you insist, here are the rules.  In table~\ref{tab:options} the third
% column indicates what other options are implied by default.  That
% is |heads| turns on |fighead| by default, but that implication
% can be overruled by explicitly stating the |nofighead| option.
%
% \begin{enumerate}
% \item \label{rule:default}
%   When two entirely conflicting options are both specified
%   the one corresponding to the default wins.
%   (e.g., if both |markers| and |nomarkers| are specified then
%   |markers| will be in effect).  Here the notion of default is
%   determined by inspecting the second column of table~\ref{tab:options}.
% \item \label{rule:elsewhere}
%   When one option is more specific than the other the more specific
%   one holds true, and the more general will only partially hold.
%   So specifying \texttt{fighead} and \texttt{noheads} will be the
%   same as saying \texttt{fighead} and \texttt{notabhead}.
% \item
%   The order in which the options appear is not relevant.
% \item
%   If some of the obsolete commands for these options are used
%   all bets are off on these interactions.
% \end{enumerate}
%
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% 
% \section{Modifying marker text}\label{sec:language}
%
% \changes{v1.0b}{1992/03/10}{adaptation for LaTeX 2.09 and
%                      international namegiving by Ronald Kappert
%                      R.Kappert@urc.kun.nl}
% \DescribeMacro{\tableplace}
% \DescribeMacro{\figureplace}
%  Announcements in any language can be generated by 
%   using |\renewcommand| to redefine |\tableplace| and
%   |\figureplace|
%
%  The defaults are
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \begin{verbatim}
%\newcommand{\figureplace}{%
%   \begin{center} 
%     [\figurename~\thepostfig\ about here.]
%   \end{center}}
%\newcommand{\tableplace}{%
%   \begin{center}
%      [\tablename~\theposttbl\ about here.]
%   \end{center}}
%\end{verbatim}
%
% These redefinitions may be placed in the \file{endfloat.cfg}
% file (see section~\ref{sec:extra} for more information).
%
% WARNING! The name of the counters |posttbl| and |postfig|
% are very likely to change in future versions, possibly
% to |efloattttctr| and |efloatfffctr|, but whatever they
% change to, the names will be a function of either the
% file extension names |ttt| or |fff|, or the environment
% names |table| and |figure|.  The purpose is so that the
% counters can be automatically created for new float types.
%
% Hooks for the \texttt{babel} package are not (yet) provided, so
% you will have to do things by hand:
%  \begin{verbatim}
% \renewcommand{\figurename}{Abra} % if no babel
% \renewcommand{\figureplace}{%
%   \begin{center} 
%     [A(z) \thepostfig.~\figurename itt legyen.]
%   \end{center}}
%\end{verbatim}
% 
% If you wish to change the name of the figure or table section
% heading, you can to that in the usual way (via the \texttt{babel}
% package, or by redefining \verb"\figuresection" and \verb"tablesection"
% directly).
%
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v1.0b}{1992/03/10}{adaptation for LaTeX 2.09 and
%                      international namegiving by Ronald Kappert
%                      R.Kappert@urc.kun.nl}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
%
% \section{Commands before processing delayed material} \label{sec:hooks}
%
% \DescribeMacro{\AtBeginFigures}
% \DescribeMacro{\AtBeginTables}
% \DescribeMacro{\AtBeginDelayedFloats}
% If you wish to have some more control over how the tables and figures
% are processed, you can make use of the commands |\AtBeginDelayedFloats|,
% |\AtBeginFigures| and
% |\AtBeginTables|.  If you wanted to ensure that the tables begin
% on a recto page, you could for example say something like
% |\AtBeginTables{\cleardoublepage}| in the preamble  of your
% document.\footnote{It is difficult for me to imagine a situation where
% one would be using \pkg{endfloat} and the class option \texttt{twoside},
% without which \texttt{\bslash cleardoublepage}
% is the same as \texttt{\bslash clearpage}, together.
% Another, more realistic example would be to adjust the
% \texttt{\bslash baselinestretch} for table and figure processing.}
% Material in |\AtBeginTables| and |\AtBeginFigures| is processed after
% the list of tables or list of figures (if those options are set) and
% just before the files with the delayed material in input.  These are
% also processed after the original definitions of the table and figure
% environments are restored.
%
% These commands can be used either in the preamble of your document,
% or in the \file{endfloat.cfg} file (see section~\ref{sec:extra}).
% 
% \section{Processing delayed floats before the end}
%
% \DescribeMacro{\processdelayedfloats}
% If you wish to process
% the floats prior to the end of the document, you may do so with the
% |\processdelayedfloats| command, which has been made available from
% version~2.4 onward.  This will process all of the
% unprocessed tables and figures up to that point.  You may wish
% to use this command at the end of every chapter for example.
%
% If you do use this, there are several points which should be noted.
% \begin{enumerate}
% \item All outstanding floats will be processed at the
%   end of the document.
% \item If you use the |lists| option you will get a list of all
%   tables and figures in the document.  Not just the ones for
%   the current chapter.  Using lists may have other odd consequences.
% \item It is your responsibility to set |\tableplace| and
%   |\figureplace| correctly, as well as to possibly reset
%   the counters |\theposttbl| and |\thepostfig| (section~\ref{sec:language})
%   as you wish.  If you do not reset them, they will continue to
%   increase throughout the document.
% \end{enumerate}
% 
% \section{Several floats per page}\label{sec:separator}
%
% \DescribeMacro{\efloatseparator}
% Endfloat places \verb"\efloatseparator" after each float in their
% respective files.  By default it is defined to be \verb"\clearpage"
% forcing one float per page.  You may change this by using
% \verb"\renewcommand" to redefine \verb"\efloatseparator" as you wish.
% One possibility, suggested by a user,
% is
% \begin{verbatim}
% \renewcommand{\efloatseparator}{\mbox{}}
%\end{verbatim}
% It makes most sense to place such a redefinition in the configuration
% file (see section~\ref{sec:extra}).
%
% Do not be mislead by my misleading name for this command.  This
% actually appears after each float including the last one, so is
% not truly a separator.
%
% \section{Configuration file and other end environments}\label{sec:extra}
%
% Many users have suggested options to the package which are
% often journal specific.  Many of the suggestion options are
% also not specific to how \pkg{endfloat} itself works, but to how
% captions and lists of figures and tables are to appear.
% Instead of burdening the package with options that, in the
% end, are specific to particular journals, I have added a
% configuration file for \pkg{endfloat} which will allow
% you to make many of these redefinitions without
% having to further increase the size of \pkg{endfloat} itself.
%
% As of version 2.4 \pkg{endfloat} will look for a file
% called \file{endfloat.cfg} in \TeX's input path.  If it
% is found, it will be included after \pkg{endfloat} is loaded.
% The purpose of this configuration file is to allow the user to
% include additional definitions related to \pkg{endfloat}.
% For example, any redefinition of \verb"\figureplace" can
% go in this file, so that the preamble does not need to
% be filled with material that only makes sense when
% \pkg{endfloat} is loaded.\footnote{However, if you find yourself
% placing other material (such as double spacing or modification
% of title page and abstract) into \file{endfloat.cfg} to
% simulate a journal submission class, you should really
% do the right thing and create a journal submission class.
% Creating a minor class (one that loads an existing class
% such as \cls{article} is not difficult.  See the
% \textit{Class Guide}\cite{LT3:ClassGuide} for instructions.  Future versions
% of the \pkg{endfloat} documentation may include a sample.}
%
% The configuration file can also provided
% so that the user could specify environments other
% than |figure| and |table| (and their |*|-ed counterparts) which can
% be delayed until the end of the document.  At the moment that would
% be very difficult to do with environments which are not processed with
% tables of figures (ie, those environments that should have a different
% ``list-of'', different counters, and different temporary files from
% those used by tables and figures); but the plan is to make even that
% ever more easier.
%
% \subsection{Modified figures and tables}
%
% As stated in section~\ref{sec:envnames}, \pkg{endfloat} will
% utterly fail if one does something like
% \begin{verbatim}
%\newenvironment{foo}{...\begin{table}...}
%    {...\end{table}...}
%\end{verbatim}
% because \pkg{endfloat} will make |\begin{table}| go into a verbatim
% like mode and look for the literal string |\end{table}|, which it
% will not see in |\end{foo}|.
%
% However, for those who know \LaTeX\ internals fairly well, it is
% not impossible to tell \pkg{endfloat} to also treat the |foo| environment
% as a delayed table.  It is however, not easy, although my goal
% is to make this easier in subsequent versions.   It will take
% a fair amount of understanding of the implementation to see how to
% do this.  And the best thing to do is to follow an example.
%
% \subsection{Sideways figures and tables}
%
% The \pkg{rotating} package\cite{RahBar:rotating}
% contains definitions of environments
% |sidewaysfigure| and |sidewaystable|,\footnote{These
% require support from the dvi driver, such as \texttt{dvips}.}
% and it would be nice to have these work in documents which also
% use \pkg{endfloat}.  Appropriate redefinitions of these so that
% they work with \pkg{endfloat}
% are given in the file \file{efxmpl.cfg}.  If you wish to use
% that file, you should include it as a package (possibly renamed)
% \emph{after} you include \pkg{endfloat}.  Or you could simple rename
% it to \file{endfloat.cfg} and \pkg{endfloat} will include it automatically.
%
% For a description of those commands see section~\ref{sec:config}.
%
% \subsection[Changing list and caption appearance]
%     {Changing the appearence of ``lists of'' and captions}
%
% When the |lists| option is used, the \LaTeX\ commands |\listoftables|
% and |\listoffigures| are called.  These produce lists indicating
% the page number that each table or figure appear on.  With \pkg{endfloat}
% in use this information is usually superfluous, and -- rumor has it --
% undesirable by at least some journals.
% What seems to be required
% when using lists is that either the list does not the figure or table number,
% and/or the caption doesn't not contain the caption text.
%
% This section provides a few rudimentary samples of what you might
% put into the configuration file to get these effects.  I have chosen
% not to make these package options, because they are often too journal
% specific.  The availability of the configuration file means that
% you can put this things there, and the differences between \pkg{endfloat}
% using and non-\pkg{endfloat} using \LaTeX\ source documents is minimal.
%
% \subsubsection{Removing captions}
%
% \DescribeMacro{\@makecaption}
% The simplest thing is to provide a simple redefinition of |\@makecaption|.
% You should model your redefinition after the one described in
% \file{classes.dtx} for your release of \LaTeX\ instead of blindly
% following what is here.  |\@makecaption| takes two arguments, the
% first will be something like ``figure 3'' and the second will
% be the caption text.  We will simply ignore the second argument.
% Most of the tricky bit of the definition
% is about testing whether the caption is longer than a line.  Since
% we will only be using the first argument, we can safely assume that
% the caption will fit on one line.\footnote{If you have 
% \texttt{\bs figurename} as something absurdly long or a
% very narrow \texttt{\bs textwidth},
% then you will have to use a more complicated version.}
% Your redefinition of |\@makecaption| may look like
% \begin{verbatim}
%\renewcommand{\@makecaption}[2]{%
%  \vskip\abovecaptionskip
%  \hbox to \hsize{\hfil #1\hfil}%
%  \vskip\belowcaptionskip}
%\end{verbatim}
% 
% \DescribeMacro{\caption}
% This still leaves one problem.   If you use
% \begin{verse}\ttfamily
% \bs caption[\textit{short caption text}]\{\textit{full caption text}\}
%\end{verse}
% only the short caption text will ever appear in the list of tables or
% figures.  The following redefinition of |\caption| will take care of
% that.
% First save the original definition of |\caption|
% \begin{verbatim}
% \let\OrigCaption\caption
% \renewcommand{\caption}[2][X]{\OrigCaption[#2]{}}
%\end{verbatim}
%
% \subsubsection{Eliminating numbers from lists of tables and figures}
%
% This is a bit trickier, and I have heard that it doesn't work
% with all versions of \LaTeXe, but I am unwilling to reinstall
% and older version for debugging this.
% A user [get the name] suggested that page numbers be suppressed
% in the lists of figures and tables.
%
% \begin{macro}{\l@figure}
% \begin{macro}{\l@table}
% All this requires is a redefinition of |\l@figure| and |\l@table|
% which are defined in \texttt{classes.txt}.  Also see section~2.4.1 of the
% \emph{Companion} to see how these macros are called.
%
% The real only trick here is that |\l@figure| is defined to take
% two arguments, but the second is never used.  The way it will be
% called will give it something like
% \begin{verbatim}
% {\numberline {3} Caption of that figure}{85}
%\end{verbatim}
% as arguments, where the second argument is the page number.
% The |\numberline| command will make use of the \LaTeX\ register
% |\@tempdima| for the width of the box containing the table
% or figure number.  So we need to set that.
% The rest is pretty unsophisticated.  You can, of course, modify it
% at will.
%\begin{verbatim}
%\renewcommand*{\l@figure}[2]{%
%   \setlength\@tempdima{2.3em}%
%   \noindent\hspace*{1.5em}#1\hfil\newline }
%\end{verbatim}
% And for tables:
% \begin{verbatim}
%\let\l@table\l@figure
%\end{verbatim}
% \end{macro}
% \end{macro}
% 
% \section{Obsolete commands}
%
% Versions of the package prior to 2.2 had some commands which the
% user could specify in the preamble to do what \emph{some} of the
% options do now.  Although I would like to eventually remove those
% commands, they are documented in the \textit{Companion}; so they
% will remain for quite some time.
% 
% \section{Caveats}\label{sec:caveats}
%
% Some of the things that are listed here may be considered bugs,
% design errors, interactions to watch out for, or just the
% way life is sometimes.  They are, at least, a matter of concern, and you
% should watch out for them.
% 
% \subsection{Literal strings}
%
% When floats are being read, \LaTeX\ is in verbatim mode.  Among
% other things, this means that the lines like
% \begin{verbatim}
%\end{figure}
%\end{verbatim}
% must appear on lines by themselves without any whitespace before
% or after them.  A complete reimplementation of the most difficult
% part of the package is required to fix this limitation, but
% it is among the distant goals I have.
%
% \subsection{Extra files}
% This creates two extra files: \texttt{\meta{jobname}.fff} and
% \texttt{\meta{jobname}.ttt}.  Any files by those names
% in the current directory will be overwritten.
%
% \subsection{Environment names} \label{sec:envnames}
%
% Because of how the redefinitions of \texttt{figure} and \texttt{table}
% are actually implemented, it is crucial that these environment
% names be used.  That is, you cannot simply define a new environment which
% calls \texttt{figure} or \texttt{table} since the former must
% look for the literal string
% \begin{verbatim}
% \end{figure}
%\end{verbatim}
% in the document, while doing no expansion of control sequences.
% The latter does the same, but wants |table| instead of
% |figure|.  This caution generally applies to all `verbatim-like'
% environments
%
% Although I haven't been able to confirm this yet, the
% \LaTeX\ system ScientificWord\footnote{A registered trademark.
% Write to info@tcisoft.com for more information.}
% may automatically put floats
% inside a macro called \verb"\FFRAME".  If so, I hope
% that either someone from ScientificWord or one of its
% users will create something for \verb"\FFRAME" similarly to
% what I have done for \verb"\sidewaystable" in the sample configuration
% file (section~\ref{sec:extra}).
%
% Steps are slowly being taken to allow for new delayed environments
% to be added.  That will be version~3, but I (jpg) still have
% a long way to go to get there.  Each new minor release of
% the package includes few changes visible to the user, but may
% contain substantial internal changes to move the package in the desired
% direction.  Version~2.4 now contains a configuration file in which
% various things can be defined.  See section~\ref{sec:extra} for
% more information.
%
% Once it does become easier to delay other environments, the
% word ``float'' may not be the best expression, since there will
% be no reason to expect that only floating environments are
% delayed.
%
% \subsection{The Environment's environment}\label{sec:envenv}
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%
% Because no \TeX\ expansion is done while the material in these
% floats are read in, but is delayed until the floats are
% processed at the end of the document, it will be the state of
% \TeX\ at the end which will matter.  For example, a document
% with something like
% \begin{verbatim}
%  \newcommand{\XXX}{YYY}
%  ...
%  \begin{table}
%  ...
%  ... \XXX ...
%  ...
%  \end{table}
%  ...
%  \renewcommand{\XXX}{ZZZ}
%  ...
%  \end{document}
%\end{verbatim}
%  will process the table with |\XXX| expanding to |ZZZ|.
%
% In any particular instance, the user can use either re-redefine
% |\XXX| before the end of document, or can re-redefine it using
% on of the hooks, |\AtBeginDelayedFloats|, |\AtBeginTables|, or
% |\AtBeginFigures|, which are discussed in section~\ref{sec:hooks}.
%
% \subsection{Verbatim in delayed floats}\label{sec:verbatim}
%
% There should be no problem with verbatim text within a
% float unless that verbatim text contains an |\end{figure}| or
% |\end{table}| in a figure or table respectively.  I don't see
% a fix for this.  All I can imagine is that you create a new
% delayed type which behaves exactly like |figure| (or |table|)
% (even writing |\begin{figure}| and |\end{figure}| to the
% \texttt{.fff} file. [\textit{mutatis mutandis} for |table|])
% In future versions, I may create a sample like this in the
% sample configuration file, but it is a low priority since
% the only time one would write such a figure or table would
% be in a document about \LaTeX\ and it is difficult to imagine
% circumstances where a document about \LaTeX\ would need to
% be subject to \pkg{endfloat}.
%
% \subsection{Ordering End Document material}\label{sec:enddocument}
%
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1}{1994/06/25}{Use AtEndDocument. jpg}
%
% Version 2.1 uses the \LaTeXe\ directive |\AtEndDocument|.  This
% makes it \LaTeXe\ specific, but it means that it can be used
% with other packages that use that directive.  Previous versions
% of \pkg{endfloat} redefined |\enddocument|.  Now several
% packages or commands can add stuff at the ends of documents
% and still work together.  This does mean that \emph{the order
% of loading packages can be important!}  If you use several
% packages that may use the |\AtEndDocument| directive and you
% get funny results, try loading them in a different order.
% It that doesn't work, complain to the maintainer of the packages
% so that they will work out a way for the packages to interact
% correctly.
%
% \changes{v2.1}{1994/06/25}{Use AtEndDocument. jpg}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
% \subsubsection{General ordering and wish list}\label{sec:order}
%
% I believe that the output of a \LaTeXe\ run should be independent
% of the order in which package are loaded.  It would be possible
% to set this up, but it would take coordination of all package
% writers who use |\AtEndDocument|.  The actual call to |\AtEndDocument|
% would not occur during package loading, but some new command,
% like |\ExecuteAtEndDocument| would be called by the user after
% all such packages are loaded, with tags for each thing in the
% packages, so something like
% \begin{verbatim}
%   \usepackage{lastpage}
%   \usepackage{endfloat,xyzzy}
%   \ExecuteAtEndDocument{endfloat,xyzzy,lastpage}
%\end{verbatim}
% and the order of End Document material would be the \pkg{endfloat}
% material, followed by \textsf{xyzzy}, and finally by \pkg{lastpage}.
% The package \pkg{xyzzy} is fictitious, while the
% package \pkg{lastpage}\cite{Goldberg:lastpage} exists,
% it doesn't really matter what these do.
% 
% I will have to wait until someone else develops such a system, but
% I will gladly modify the packages I am responsible for maintaining
% to comply with it.  Until then
% I will include a message
% which begins with \texttt{AED}
% in every usage of |\AtEndDocument|, and try to minimize any side
% effects my usage may have.
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%
% \subsection{What are packages for?} \label{sec:monoton}
% 
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%
% One option is to not have packages like \pkg{endfloat} actually call
% |\AtEndDocument|, but merely define a user level command which
% would make the call itself.  This way, the order of those particular
% commands would matter, but not the ordering of the package loading.
%
% Another advantage of this is that packages could easily be things
% which make commands available, but do not actually entail
% a change in \texttt{.dvi} output themselves.  It is classes,
% and options to classes which do that.  That is, the actual
% loading of packages should have no visible effects, other than
% making new commands available.  (Typeface changing
% packages, such as \textsf{times}, are obvious, and principled, exceptions.)
% The disadvantage is that it leads
% to two-step modifications (loading and calling) to change
% a document.
%
% I would propose any package (other than typeface changing
% packages) which changes output instead of merely providing additional
% commands, should be clearly labeled as doing such in the documentation
% and in a message.
% 
% \subsection{Float position specifiers} \label{sec:gobble}
%
% Float position specifiers are passed to the temporary files
% and are used when those floats are processed.  This may lead
% to funny results, especially if the first figure or first table uses
% |[p]| while the |heads| option is being used.  This can lead to
% that float, floating to the page after the header.
% Most other float specifiers will not lead to any problems, because
% the package mucks about the various float specification parameters.
%
% \subsection{Misplaced headers} \label{sec:buggyheads}
%
% Version 2.2c contains a partial fix to a problem with the placement
% of floats around the section headers produced by the |heads| option.
% There were two variants of the problem.  In one the first float
% after the header would float above the header.  This has been fixed
% by using the \LaTeXe\ command |\suppressfloats|.  The other
% problem is that that the first float may float to a page float
% after the page with the header on it.
%
% This has been partially fixed, but
% if users use the |[p]| specification on their first floats or if
% there are large floats, the problem can still
% show up.  It is recommended that whenever the user wants a |[p]| that
% an |[hp]| be used instead.  In normal running (without \pkg{endfloat}),
% this should only rarely effect the document, but it will help avoid
% the problem with the floating end float.  An |[h]| may also be needed for
% large floats.  There is only need to be concerned about the first
% figure and first table.
%
% The natural solution to this problem will require that the bug
% in described in section~\ref{sec:gobble} be resolved.
%
% \subsection{Known incompatibilities}
%
% Above I have outlined sources of potential conflicts and incompatibilities
% with other packages.  Those sections contain a discussion of potential
% work-arounds.  Here I list where I know of specific incompatibilities
% with distributed packages.  This list is not complete.  If you know
% on an addition, please let me know.
%
% \subsubsection{Environment names}
%
% The packages listed here all have the problem described in
% section~\ref{sec:envnames}.  The work-arounds are also described
% there.  \pkg{rotating}, \emph{Scientific Word}.
%
% \subsubsection{Ordering end material}
%
% The following packages put things at the end of the document, and
% peculiar results are possible if you don't pay attention to the
% order in which packages are loaded.  This is described in
% section~\ref{sec:order}.  The package \pkg{lastpage} is among
% these, as are recent versions of the package \pkg{harvard}.
%
% \subsubsection{Conflicting \texttt{\bs enddocument}}
%
% Prior to \LaTeXe's provision of the hook |\AtEndDocument|, package
% writers were forced to redefine |\enddocument|.  Some did so
% in ways that over wrote any other package's redefinition of the
% same.  When you encounter such a package you should try to get
% its author to release a modified version.  Version~2.0 of \pkg{endfloat}
% was such a packages.   So was the winter 1993 version of~\pkg{harvard}
% (which has been fixed).  But
% for those using an old version of \pkg{harvard} you will encounter
% problems.
%
% \subsubsection{Miscellaneous}
%
% There are several other potential conflicts that don't fall into
% the broader categories.
%
% \begin{itemize}
% \item |\listoftables| and |\listoffigurers| are left undefined
%	in class \cls{elsart}.  But this is because Elsevier does
%	not want those lists.  Elsevier, bless them, does not want
%	floats at the end for submissions to its journals.  So
%	there is no reason to use \pkg{endfloat} (with or without lists)
%	with class \cls{elsart}.  Let's hope that other publishers
%	will follow Elsevier's lead in understanding that the
%	submission rules which were created were created for a reason,
%	and when those reasons no longer apply, the rules should be changed.
%
%	I look forward to the day when \pkg{endfloat} will serve
%	no purpose.
%
% \item The \pkg{float} package appears to work in my limited tests.
%       Although, only tables and figures get moved to end.
%	The success is due to the robustness with which \pkg{float}
%	is written.
%
% \end{itemize}
%
% \section{Support}\label{sec:support}
%
% As is usual, this package is provided with no warranty whatsoever.
% However, it is my desire to make it useful and usable, although
% I may very well fail at that.  If you
% need a feature added, see whether the hooks will allow you to
% do what you want.  If something goes wrong look over
% section~\ref{sec:caveats}.  But if you need to get in touch
% with the maintainer, you should send email to me at
% \texttt{J.Goldberg@Cranfield.ac.uk}.
%
% \section{History}\label{sec:history}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.1}{1994/06/25}{Use AtEndDocument. jpg}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
%
% \subsection{The burden of history}
%
% By version 2.2 the file was getting so that most of the bytes
% were things that had been commented out of previous versions,
% and changelog messages.  Instead of this making things clearer
% to the maintainer, it turns out to be clutter.  I (jpg) have started
% to throw out some of history (it is not really useful to see
% who corrected what typo or cleaned up what extraneous space
% with a |%| in 1991.  Although my purge of history is far
% from complete, it should be noted that I do want to preserve
% the spirit of the history.  I have already been miscredited
% with original authorship.  I have made extensive modifications
% and extensions, but the basic core (even if only a small amount
% of version 2.0 code remains) and concept are JDM's.
%
% \subsection{Author}
% The file was written by Darrell McCauley (jdm5548@diamond.tamu.edu)
% in February and March 1992.   He acknowledges that much of the
% guts are adapted from
% \texttt{comment.sty} by Victor Eijkhout (eijkhout@csrd.uiuc.edu).
% So, although Jeff
% Goldberg (J.Goldberg@Cranfield.ac.uk) now maintains this, he should not
% be credited with writing the package, but only with extending and
% maintaining it.  He has contributed enough so that by version~2.4
% he claimed co-authorship.
% 
% \subsection{Version 2.4}
%
% Version 2.4 involves the largest set of additional features
% since at least version 2.2 (which added all the options).  Some
% of these are
% \begin{itemize}
%
% \item
% This version adds various user hooks, both as commands:
% |\AtBeginFigures|, |\AtBeginTables|, and
% |\AtBeginDelayedFloats| (section~\ref{sec:hooks}),
% and |\efloatseparator| (section~\ref{sec:separator}).
%
% \item
% Most importantly, there is the addition of a configuration file
% (section~\ref{sec:extra}).  An example configuration file contains
% code which allows \pkg{endfloat} to work properly with
% the \texttt{sidewaystable} environment of the \pkg{rotating}
% package.
%
% \item
% Additionally, all figures and tables are written as |figure*| and
% |table*| in the temporary files, eliminating the need to force single
% column mode when table and figures are processed.
%
% \item
% There are a fair number of internal changes to the code (which
% make it easier for the various hooks to work).
%
% \item
% Also changed some internal command names, such as |\xtable|,
% which did not include |@| to names that to include |@| such as
% |\ef@extable|.  Also renamed all commands |\end...| to something
% else so as to not use up valuable environment name space.
%
% \item
% Removed dead code.  It was making this too hard to read.
%
% \item
% Documentation changes to reflect user level changes.  Also added
% more to the Caveats section (section~\ref{sec:caveats}).
% 
% \end{itemize}
%
% During the past few months I have received a wonderful level
% of feedback from users.   Many made very useful suggestions.
% Even those queries which resulted from a misunderstanding of
% how to use the package have been lead me to modify the
% documentation.  I had intended to acknowledge all of you,
% but the list has grown too long.  You know who you are.  Thanks,
% and good luck with your journal submissions!
%
% \subsection{Version 2.3}
% 
% Very minor changes in the organization of some parts of the
% code, but I fixed a bug I introduced while ``cleaning up'' for
% for version~2.2:  I had misunderstood part of the original
% code and commented out a necessary trick to allow for |figure*|
% The bug was very real, so I am releasing this version~2.3 as soon
% as I can document it, and am not waiting to include other planned
% improvements.
%
% \subsection{Version 2.2}
%
% A user (Kate Hedstrom) pointed out a number of bugs and shortcomings,
% which led me (jpg) to finally sit down and make some of the changes
% I had been planning on making.  The effect of the |tablesfirst| option
% was specifically requested, and also work on the bug discussed
% in section~\ref{sec:buggyheads}.  Although my bug fix is partial,
% version 2.2 includes the means to suppress the headers altogether.
%
% \subsubsection{Package options}
%
% I, jpg, have used the package option facility of \LaTeXe\
% to get other options (described in section~\ref{sec:options}).
% I also made some cosmetic changes (breaking up lines to reduce
% the number of overfull boxes when printing the documentation,
% line breaks and indentation to make the code more readable.
% I also replaced some |\def|s with |\newcommand|s and
% |\providecommand|s.  This are not logged, because I actually
% found that all of the logging information was hampering my
% ability to read and modify the code.
%
% \subsubsection{Internal commands}
%
% In version 2.2, I also replaced some code internal
% to |\xfigure| and |\xtable| with |\efloat@foundendfig|
% and |\efloat@foundendtab|.  This was merely a stylistic
% change.
%
% I also deleted some some definitions
% which are not used.  These had had probably been left as hooks, but with
% not enough for them to be useful hooks.  There are some cases where
% I have left these in when I could see what they could be used for.
% I have tried to add a note as to their potential use.
%
% \subsubsection{Documentation}
%
% Massive changes to user documentation, and some to the code
% documentation.
%
% \subsection{Version 2.1}
%
% I, Jeffrey Goldberg, in June 1994 wanted to use Darrell McCauley's
% \file{endfloat.sty} with \LaTeXe.  It worked fine until I
% needed to use the \LaTeXe\ directive |\AtEndDocument| for
% some other function, and discovered that it was not functioning
% and that it was because version 2.0 (and earlier) of
% \texttt{endnotes.sty} redefined |\enddocument|.   The
% fix that I needed was trivial, but it made the file no
% longer compatible with \LaTeX209.  As a consequence, it seemed
% that the only way I could make up for this crime was to make
% it fully compatible with \LaTeXe.
%
% \subsection{Minor changes (version 2.0)}
%
% A series of changes and fixes were made in March 1992.  Many
% by the original author others by  Ronald Kappert (R.Kappert@urc.kun.nl)
% who replaced literal strings with |\figurename|, and so on; and
% by schultz@unixg.ubc.ca who pointed out gobbling bug with
% |\nomarkersintext|.
%
% \subsection{Brian Junker's modifications (version 2.0)}
%
% Brian Junker (brian@stat.cmu.edu) made a number of fixes.
% Here are his change comments:
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
%
% \begin{enumerate}
%   \item Changed ``comment" to ``figure" and ``komment" to
%                      ``table" throughout, to avoid collisions with other
%                      style files' definitions of ``comment".  Also
%                      fixes |\begin{table}| ends with |\end{komment}|
%                      error generated by my (older) version of PC\TeX.
%
%   \item Fixed gobble of float position specifiers.
%         There are two ways to do this:
%         \begin{enumerate}
%         \item |\write\ifnextchar[{\gobbleuntilnext}{}|
%                      into every
%                      environment written to |\jobname.fff|, etc.;
%          \item save \LaTeX's old def's of |\figure| and |\table|
%                      and re-use them when processing fig's and tables.
%                      I chose the latter approach, for maximum
%                      consistency with \LaTeX, other style files, etc.
%          \end{enumerate}
%
%  \item Added def's of |\tablename| and |\figurename|,
%                      which my version of PC-\TeX\ seemed to need.
%                      [backward compatibility for earlier versions ---jdm]
%
%  \item Moved formatting of figure and table markers to
%                      |\figureplace| and |\tableplace|.
%
%   \item Style change: in-text markers are now
%                      centered reminders like ``[Figure 4 about here.]".
%
%    \item Style change: added list of tables and
%                      figures to the table and figure sections.
%                      Change back to old format with |\nofiglist| and
%                      |\notablist|.
%
%    \item Changed default to |\markersintext|.
%
%     \item Fixed trivial typo in |\@openposttbls|
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \end{enumerate}
%  All changes marked |% bj| at end of line.
%  ---Brian Junker (brian@stat.cmu.edu)
%
% \section{Wish list}
%
% I doubt that I will really work on this wish list in the near future
% but in addition to solving the know bugs, there are two major sorts of
% changes that I (jpg) would like to see.
% \begin{enumerate}
% \item
%    Updating the verbatim writing by using the tools in the
%    |verbatim| standard packages, and the |moreverb| package.
%    Since they provide more generalized an cleaner verbatim code
%    then this which dates back to the earliest days of \LaTeX.
% \item
%    Integrate with the |float| package  which (among other things)
%    enables the user to define new floating environments. 
%    \pkg{endfloat} v2.2 only allows figures and tables to be placed at
%    the end, not all types of potential floats.  Nor does it allow
%    the user to specify which of the two types it does recognize
%    to be placed at the end.
% \end{enumerate}
%
% \begin{thebibliography}{1}
% 
% \bibitem{Goldberg:lastpage}
% Jeffrey Goldberg.
% \newblock The \texttt{lastpage} package.
% \newblock Electronic documentation
% 
% \bibitem{A-W:GMS94}
% Michel Goossens, Frank Mittelbach, and Alexander Samarin.
% \newblock {\em The {\LaTeX} Companion}.
% \newblock Addison-Wesley, Reading, Massachusetts, 1994.
%  
% \bibitem{LT3:ClassGuide}
% The \LaTeX3 Project.
% \newblock \emph{\LaTeXe\ for class and package writers}
% \newblock (Preliminary draft) June 1994.
% \newblock Electronic Documentation
%
% \bibitem{Lingnau:float}
% Anselm Lingnau.
% \newblock An Improved Environment for Floats
% \newblock June 1994 (version~1.2)
% \newblock Electronic Documentation
%
% \bibitem{RahBar:rotating}
% Sebastian Rahtz and Leonor Barroca.
% \newblock A style option for rotated objects in \LaTeX{}
% \newblock April 1994. (version~2)
% \newblock Electronic Documentation
% \end{thebibliography}
%  
%\StopEventually{\PrintIndex\PrintChanges}
%
% \section{The documentation driver file}
%
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% The next bit of code contains the documentation driver file for
% \TeX{}, i.e., the file that will produce the documentation you are
% currently reading. It will be extracted from this file by the
% \texttt{docstrip} program.
%    \begin{macrocode}
%<*driver>
\documentclass{ltxdoc}
\setlength\hfuzz{2pt}    % ignore small overfulls
\CodelineIndex
\EnableCrossrefs
%\DisableCrossrefs   % Say \DisableCrossrefs if index is ready
%\RecordChanges      % Gather update information
%\OnlyDescription    % comment out for implementation details
\begin{document}
   \DocInput{endfloat.dtx}
\end{document}
%</driver>
%    \end{macrocode}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
%
% \section{The implementation}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \subsection{File and package identification}
%
% We start by checking if this file was already loaded. If not we
% identify the current version.
% \changes{v2.1}{1994/06/25}{Use LaTeX2e package form. jpg}
%    \begin{macrocode}
%<*package>
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{endfloat}[\filedate\space\fileversion\space
               LaTeX2e package puts figures and tables at end (jdm)]
%    \end{macrocode}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e package form. jpg}
%
% \subsection{How it was written}
%
% [this subsection mostly based on jdm's original text.]
%
% Overview: redefine the figure and table environment following 
% the |comment| environment of
% \texttt{comment.sty} written by Victor Eijkhout
% \texttt{eijkhout@csrd.uiuc.edu}.
%
% Instead of processing what was between |\begin{...}| and |\end{...}|,
% every line is written to a file (|\jobname.fff| for figures, |\jobname.ttt|
% for tables).  Then, when you do an |\end{document}|, the figure section
% is processed, then the table section is processed.  The |tablesfirst|
% option changes this order.
%
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1}{1994/06/25}{Use AtEndDocument. jpg}
%
% After initial versions, I [jdm] received much help from Ronald Kappert
% and Brian Junker (see change log below). \emph{Thanks guys!}
%
% \subsection{Define warning message}
% Since I, JPG, am making the commands options, I want to warn users
% to use the options, since these commands should be discontinued
% in future versions.
%    \begin{macrocode}
\newcommand{\ef@OldCmd}[2]{\PackageWarning{endfloat}
  {The command \protect#1 is obsolete and will be\MessageBreak
   omitted from future releases of the endfloat package.\MessageBreak
   Use the package option `#2' instead.}}
%    \end{macrocode}
% \subsection{Flags}
% Put all of the newifs for the user options and flags here.
%    \begin{macrocode}
\newif\if@domarkers
\newif\if@tablist                % bj
\newif\if@figlist                % bj
\newif\if@tabhead
\newif\if@fighead
\newif\if@tablesfirst
%    \end{macrocode}
%
% \subsubsection{Default values}
% Set default values of all of the flags here.
%    \begin{macrocode}
\@domarkerstrue
\@tablisttrue
\@figlisttrue
\@tabheadfalse
\@figheadfalse
\@tablesfirstfalse
%    \end{macrocode}
%
% \begin{macro}{\markersintext}
% \begin{macro}{\nomarkersintext}
% First set up flags and defaults.  First set for flagging
% whether markers appear in text.
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.2a}{1994/10/07}{Create new options}
%    \begin{macrocode}
\DeclareOption{nomarkers}{\@domarkersfalse }
\DeclareOption{markers}{\@domarkerstrue }
%    \end{macrocode}
%    \begin{macrocode}
\newcommand{\markersintext}{\@domarkerstrue
   \ef@OldCmd{\markersintext}{markers}}
\newcommand{\nomarkersintext}{\@domarkersfalse
  \ef@OldCmd{\nomarkersintext}{nomarkers}}
%    \end{macrocode}
%
% \end{macro}
% \end{macro}
% \begin{macro}{\dotablist}
% \begin{macro}{\notablist}
% Options for creating lists of Tables \ldots
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
%
%    \begin{macrocode}
\newcommand{\dotablist}{\@tablisttrue \ef@OldCmd{\dotablist}{tablist}}
\newcommand{\notablist}{\@tablistfalse \@tabheadtrue
   \ef@OldCmd{\notablist}{notablist}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\dofiglist}
% \begin{macro}{\nofiglist}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \ldots and Figures
%    \begin{macrocode}
\newcommand{\dofiglist}{\@figlisttrue \ef@OldCmd{\dofiglist}{figlist}}
\newcommand{\nofiglist}{\@figlistfalse \@figheadtrue
  \ef@OldCmd{\nofiglist}{nofiglist}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% Now we make options |tablist| and |notablist| and |figlist| and
% |nofiglist|.  Note that options will be processed in order of
% the |\DeclareOption| commands in this file.  So by placing
% |list| after |nolist| we ensure that if both are specified, |list|
% is in effect.
%
% First two new options
%    \begin{macrocode}
\DeclareOption{nolists}{\@tablistfalse \@figlistfalse }
\DeclareOption{lists}{\@tablisttrue \@figlisttrue }
%    \end{macrocode}
% Now the more specific ones, which must come after the more
% general options to get the right interactions between semi-conflicting
% options.
%    \begin{macrocode}
\DeclareOption{notablist}{\@tablistfalse }
\DeclareOption{nofiglist}{\@figlistfalse }
\DeclareOption{tablist}{\@tablisttrue }
\DeclareOption{figlist}{\@figlisttrue }
%    \end{macrocode}
% 
% The \texttt{notablist} and \texttt{nofiglist} options still leave
% a section header at the beginning of the tables and figures.
%
% Note again the role that order plays, by placing |fighead| after
% |noheads| it ensures that |fighead| will be in effect if both
% are specified.
%    \begin{macrocode}
\DeclareOption{heads}{\@figheadtrue \@tabheadtrue }
\DeclareOption{noheads}{\@figheadfalse \@tabheadfalse }
\DeclareOption{fighead}{\@figheadtrue }
\DeclareOption{tabhead}{\@tabheadtrue }
\DeclareOption{nofighead}{\@figheadfalse }
\DeclareOption{notabhead}{\@tabheadfalse }
%    \end{macrocode}
% Also need option for putting tables first
%    \begin{macrocode}
\DeclareOption{tablesfirst}{\@tablesfirsttrue }
\DeclareOption{figuresfirst}{\@tablesfirstfalse }
%    \end{macrocode}
% Other option stuff
%    \begin{macrocode}
\DeclareOption*{%
   \PackageWarning{endfloat}{Unknown option `\CurrentOption'}}
\ProcessOptions
%    \end{macrocode}
% \subsection{Other preliminaries}
% I (jpg) have been slowly working at making more and more of the
% code for processing tables and figures common, with the idea
% that once I have factored out all that is common with them
% I will be then be able to set up code for other floats,
% I have still a very long way to go, but common code created
% for version 2.3 is here.
%
% \begin{macro}{\efloat@openpost}
% \begin{macro}{\efloat@newwrite}
% attempt to reduce old |\@openpostfigs| and |\@openposttbls| to
% one command
% The first one calls |\newwrite| so, |\efloat@newwrite{ttt}|
% will have the effect of |\newwrite\efloat@postttt|.
%    \begin{macrocode}
\def\efloat@newwrite#1{%
   \expandafter\newwrite\csname efloat@post#1\endcsname}
%    \end{macrocode}
% \end{macro}
% |\efloat@openpost{ttt}| will be the same as
% \begin{verbatim}
%   \immediate\openout\efloat@postttt=\jobname.ttt\relax
%\end{verbatim}
% while also calling |\ef@setct{ttt}{1}| to set a flag
% (|@ef@tttopen|) in the case of |ttt|.
%    \begin{macrocode}
\def\efloat@openpost#1{\expandafter\immediate\expandafter\openout
      \csname efloat@post#1\endcsname =\jobname.#1\relax
   \ef@setct{#1}{1}
   \message{(\jobname.#1)}}
%    \end{macrocode}
% \begin{macro}{\ef@setct}
% \begin{macro}{\ef@newct}
% |\ef@newct{ttt}| will create a new counter called |\@ef@tttopen|
% and |\ef@setct{ttt}{1}| would set it to 1.
%    \begin{macrocode}
\def\ef@newct#1{%
 \expandafter \newcount \csname @ef@#1open\endcsname}
\def\ef@setct#1#2{\expandafter\global\csname @ef@#1open\endcsname=#2\relax}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% Conditionally open a file
%    \begin{macrocode}
\def\efloat@condopen#1{%
    \expandafter\ifnum \csname @ef@#1open\endcsname>0 \relax \else
     \efloat@openpost{#1}\fi}
%    \end{macrocode}
% Immediate write to one of these files.
%    \begin{macrocode}
\def\efloat@iwrite#1#2{%
   \expandafter\immediate\expandafter\write\csname efloat@post#1\endcsname
    {#2}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloatseparator}
% A user suggested that in some cases we may not wish
% to force \pkg{endfloat} to put each float on a page by itself.   By
% default that is what it does, by defining \verb"\efloatseparator"
% to be \verb"\clearpage".  If you want it to be something else,
% you may redefine this command in the configuration file or preamble.
%    \begin{macrocode}
\newcommand{\efloatseparator}{\clearpage}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\postfig}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% Counters
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
%    \begin{macrocode}
\newcounter{postfig}
%    \end{macrocode}
% \end{macro}
%
% Code for opening the |\jobname.fff|
%    \begin{macrocode}
\efloat@newwrite{fff}
\ef@newct{fff}
%    \end{macrocode}
% \begin{macro}{\posttbl}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
% \changes{v2.3c}{1995/03/08}{Remove some tbl specific stuff -jpg}
% Same stuff but for tables
%    \begin{macrocode} 
\newcounter{posttbl}
%    \end{macrocode}
% \end{macro}
%
% Commands for opening |\jobname.ttt|
% This sets up new write for tables
%    \begin{macrocode}
\efloat@newwrite{ttt}
\ef@newct{ttt}
%    \end{macrocode}
% \begin{macro}{\ef@makeinnocent}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%    \begin{macrocode}
\newcommand*{\ef@makeinnocent}[1]{\catcode`#1=12 }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\figureplace}
% \begin{macro}{\tableplace}
% Place markers.
% \changes{v1.0b}{1992/03/10}{adaptation for LaTeX 2.09 and
%                      international namegiving by Ronald Kappert
%                      R.Kappert@urc.kun.nl}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% 
% \begin{macro}{\figurename}
% \begin{macro}{\tablename}
% Make sure that |\tablename| and |\figurename| are defined.
%    \begin{macrocode}
\providecommand{\figurename}{Figure}
\providecommand{\tablename}{Table}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
%    \begin{macrocode}
\newcommand{\figureplace}{%
   \begin{center} 
     [\figurename~\thepostfig\ about here.]
   \end{center}}
\newcommand{\tableplace}{%
   \begin{center}
      [\tablename~\theposttbl\ about here.]
   \end{center}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \subsection{Parsing \texttt{figure} and \texttt{table}}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% 
% Now we get the utilities for parsing needed to
% get unmodified code into files.
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
%    \begin{macrocode}
%\def\@gobbleuntilnext[#1]{}  % Not used (jpg)
\let\@bfig\figure             % bj
\let\@btab\table              % bj
\let\efloat@float\relax
%    \end{macrocode}
%
% \begin{macro}{\figure}
% the {blank space } appearing with |\nomarkersintext| was fixed by adding
% a percent sign (|%|) at strategic locations, determined by setting
% |\tracingcommands=1| ---Darrell
% \changes{v2.0}{1992/06/02}{Corrected problem of extra blank spaces in
%                      the output when nomarkersintext was in effect
%                      (bug reported by schultz@unixg.ubc.ca).
%                      jdm}
% 
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% As mentioned by the jdm above, the following is based
% on \texttt{comment.sty}.  It appears that the idea is to
% turn off all control sequence processing and read in from
% input each line, until a line is found that looks like
% |\end{figure}|.  Thus the actual name of the environment
% is hardcoded into the use of the macros
% (see section~\ref{sec:envnames}).  ---jpg]
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
% \changes{v1.1}{1992/03/13}{verified that floats were
%               used before a section was
%               created for them. jdm}
% \changes{v1.2}{1992/03/14}{corrected typo that may have caused figures not
%                      to be printed. jdm}
%
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
%    \begin{macrocode}
\def\figure{%
%    \end{macrocode}
% If we have already done one table then the file we write to
% is already open, and there is nothing to do, else open it up.
%    \begin{macrocode}
     \efloat@condopen{fff}
%    \end{macrocode}
%
% We have read a |\begin{figure}| to get here.  We need to write that
% into the file. 
%
%
% I (jpg) would add the |[htb]| parameters to what
% gets written, but that leaves any float specifiers that had
% been employed by the user wandering around in the floated material.
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%    \begin{macrocode}
     \efloat@iwrite{fff}{\string\begin{figure*}}%
%    \end{macrocode}
% Since the figures are not actually processed until much later, we don't
% use \LaTeX's figure numbering mechanism, but we use our own.   Also
% put marker in text (if option set).  In the future, I may combine
% the counter for the markers and the counter used as a flag for
% whether the file is open into one thing.
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%    \begin{macrocode}
    \if@domarkers%
       \addtocounter{postfig}{1}% % bj
       \figureplace%              % bj
    \fi%
%    \end{macrocode}
% \begin{macro}{\@currenvir}
% |\@currenvir| (current environment) it set to fool
% latex into expecting the end of this environment
% to match the environment name.   It will be used more extensively
% when dealing with
% the problem discussed in section~\ref{sec:envnames}.
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%    \begin{macrocode}
    \def\@currenvir{efloat@float}%
%    \end{macrocode}
% \end{macro}
% Now we set up catcodes for reading in text without processing
% things.  But need to make |^^M| special since we want to read
% line by line.
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%    \begin{macrocode}
    \begingroup%
    \let\do\ef@makeinnocent \dospecials%
    \ef@makeinnocent\^^L% and whatever other special cases
    \endlinechar`\^^M \catcode`\^^M=12 \ef@xfigure}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\efloat@foundend}
% When |\ef@xfigure| is verbatim-like reading the figure it has to
% do some clean-up after it as found the |\end{figure}| or
% |\end{figure*}|.  This is it.  [this part written by jpg v2.2]
%    \begin{macrocode}
\def\efloat@foundend#1#2{\def\next{\endgroup\end{efloat@float}%
          \efloat@iwrite{#1}{\string\end{#2}}%
          \efloat@iwrite{#1}{\string\efloatseparator}%
          \efloat@iwrite{#1}{ }}}%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ef@xfigure}
% |\ef@xfigure| reads line by line, checking whether each line
% is the |\end{figure}|.  If it is, then write out end stuff
% to the file.  Otherwise write out read in line to the
% file and do the |\next| line.
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
%    \begin{macrocode}
{\catcode`\^^M=12 \endlinechar=-1 %
 \gdef\ef@xfigure#1^^M{\def\test{#1}%
%    \end{macrocode}
% Test for |\end{figure}|
%    \begin{macrocode}
      \ifx\test\ef@endfiguretest
           \efloat@foundend{fff}{figure*}
%    \end{macrocode}
% Test for |\end{figure*}|
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%    \begin{macrocode}
      \else\ifx\test\ef@enddblfiguretest
           \efloat@foundend{fff}{figure*}
%    \end{macrocode}
% Finally, if none of the above, we have a line of text in the
% body of the figure which should be written to the file.
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%    \begin{macrocode}
      \else%
          \efloat@iwrite{fff}{#1}%
          \let\next\ef@xfigure%
      \fi \fi \next}%
}%
%    \end{macrocode}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \begin{macro}{\ef@endfiguretest}
% \begin{macro}{\ef@enddblfiguretest}
% Generalizing these end\ldots{}test so that they
% can be used for user specified floating environments will
% require more |\expandafter|s then you can shake a stick at.
% I am not looking forward to taking on that task.  I should
% look at the version control package to see what I can
% lift from there, since it must be the same problem.
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%    \begin{macrocode}
{\escapechar=-1%
 \xdef\ef@endfiguretest{\string\\end\string\{figure\string\}}%
 \xdef\ef@enddblfiguretest{\string\\end\string\{figure*\string\}}%
}%
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \end{macro}
% \begin{macro}{\table}
% |\table| is the same as |\figure|.  But I am not going to
% document it as much.
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
%    \begin{macrocode}
\def\table{\efloat@condopen{ttt}
    \efloat@iwrite{ttt}{\string\begin{table*}}%
    \if@domarkers
       \addtocounter{posttbl}{1} % bj
       \tableplace               % bj
    \fi
    \def\@currenvir{efloat@float}%
    \begingroup
    \let\do\ef@makeinnocent \dospecials
    \ef@makeinnocent\^^L% and whatever other special cases
    \endlinechar`\^^M \catcode`\^^M=12 \ef@xtable}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ef@xtable}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
%    \begin{macrocode}
{\catcode`\^^M=12 \endlinechar=-1 %
 \gdef\ef@xtable#1^^M{\def\test{#1}
      \ifx\test\ef@enddbltabletest
          \efloat@foundend{ttt}{table*}
      \else\ifx\test\ef@endtabletest
          \efloat@foundend{ttt}{table*}
      \else
          \efloat@iwrite{ttt}{#1}%
          \let\next\ef@xtable
      \fi \fi \next}
}
%    \end{macrocode}
% \end{macro}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
%    \begin{macrocode}
{\escapechar=-1
 \xdef\ef@enddbltabletest{\string\\end\string\{table*\string\}}
 \xdef\ef@endtabletest{\string\\end\string\{table\string\}}
}
%    \end{macrocode}
% Define starred floats.
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
%    \begin{macrocode}
\@namedef{figure*}{\figure}
\@namedef{table*}{\table}
%    \end{macrocode}
% \subsection{Processing Figures and Tables}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
%    \begin{macrocode}
\providecommand{\figuresection}{Figures}
\providecommand{\tablesection}{Tables}
%    \end{macrocode}
% \begin{macro}{\AtBeginFigures}
% \begin{macro}{\AtBeginTables}
% \begin{macro}{\AtBeginDelayedFloats}
% Here we set-up the hooks for getting stuff into |\process...|
% commands easily.  The command |\g@addto@macro| is defined
% in \file{classes.dtx}.  I was about to write it myself, when I realized that
% it must already exist for things like |\AtBeginDocument|.
%    \begin{macrocode}
\newcommand{\processfigures@hook}{\@empty}
\def\AtBeginFigures{\g@addto@macro\processfigures@hook}
\newcommand{\processtables@hook}{\@empty}
\def\AtBeginTables{\g@addto@macro\processtables@hook}
\newcommand{\processdelayedfloats@hook}{\@empty}
\def\AtBeginDelayedFloats{%
   \g@addto@macro\processdelayedfloats@hook}
\newcommand{\processotherdelayedfloats}{\@empty}
%    \end{macrocode}
% \end{macro}\end{macro}\end{macro}
% \begin{macro}{\processfigures}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
%    \begin{macrocode}
\def\processfigures{%
%    \end{macrocode}
% First test to see if there are any figures to process.  If so
% do it.
%    \begin{macrocode}
 \expandafter\ifnum \csname @ef@fffopen\endcsname>0
%    \end{macrocode}
% Close the file for writing.  Set a flag saying so.
%    \begin{macrocode}
  \immediate\closeout\efloat@postfff \ef@setct{fff}{0}
%    \end{macrocode}
% Deal with headers and list of figures if necessary
%    \begin{macrocode}
  \clearpage                                                        % bj
  \if@figlist                                                       % bj
    {\normalsize\listoffigures}                                     % bj
    \clearpage                                                      % bj
  \fi
  \if@fighead
     \section*{\figuresection}                                   % bj
%    \end{macrocode}
% See the discussion in section~\ref{sec:place} for what problem
% the |suppressfloats[t]| is here to solve.  If I understand the
% \textit{Companion} correctly (page 144), this was not available
% in previous versions of \LaTeX.
%    \begin{macrocode}
     \suppressfloats[t]                                          % jpg
  \fi
  \markboth{\uppercase{\figuresection}}{\uppercase{\figuresection}}% bj
%    \end{macrocode}
% Use any user defined hooks just before inputting the file.
%    \begin{macrocode}
  \processfigures@hook \@input{\jobname.fff}
 \fi}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\processtables}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% Just like |\processfigures|, only not so well documented.
%    \begin{macrocode}
\def\processtables{%
  \expandafter\ifnum \csname @ef@tttopen\endcsname>0
  \immediate\closeout\efloat@postttt \ef@setct{ttt}{0}
  \clearpage                                                      % bj
  \if@tablist                                                     % bj
    {\normalsize\listoftables}                                    % bj
    \clearpage                                                    % bj
  \fi
  \if@tabhead
      \section*{\tablesection}                                  % bj
      \suppressfloats[t]                                        % jpg
  \fi
  \markboth{\uppercase{\tablesection}}{\uppercase{\tablesection}}% bj
  \processtables@hook \@input{\jobname.ttt}
 \fi}
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{Getting float placement correct} \label{sec:place}
%
% In versions prior to this attempt (v2.2c), when the |heads| options
% were used, the float could could either float to the next page, leaving
% the section header alone, or could float to the top of the page, leaving
% section header at the bottom of the page.  The idea here is to change the
% parameters that place floats, to very very strongly
% encourage floats at the bottom of pages.
% It also allows for easy top floats.  Thus obviating the need
% for float pages.
% A |\suppressfloats[t]| in the commands
% that issue the headers will make sure that the floats don't float
% above the headers.
%
%    \begin{macrocode}
\renewcommand{\bottomfraction}{1.0}
\renewcommand{\topfraction}{1.0}
\renewcommand{\textfraction}{0.0}
%    \end{macrocode}
%
% \subsubsection{Calling the processing commands}
% Note that there is an extra set |{| and |}| so  that the
% restoration of the original definitions is in a group and is \emph{not}
% global.  If, for some reason, you wish them to be global then use
% something like
% \begin{verbatim}
%  \makeatletter
%  \AtBeginDelayedFloats{\global\let\table\@btab \global\let\figure\@bfig}
%  \makeatother
%\end{verbatim}
% \begin{macro}{\processdelayedfloats}
%    \begin{macrocode}
\newcommand{\processdelayedfloats}{{%
%    \end{macrocode}
% Here we reset stuff to apply while end stuff is being processed.
% Prior to version 2.4, these were in |\processtablels| and |\processfigures|.
%    \begin{macrocode}
  \def\baselinestretch{1}\normalsize
   \let\figure\@bfig
   \let\table\@btab
%    \end{macrocode}
% The hook comes after those settings so as to override them if desired.
%    \begin{macrocode}
   \processdelayedfloats@hook
%    \end{macrocode}
% Process tables, figures, and others (or figures, tables, others)
%    \begin{macrocode}
   \if@tablesfirst \processtables\processfigures
   \else \processfigures\processtables \fi
   \processotherdelayedfloats}}
%    \end{macrocode}
% \end{macro}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1}{1994/06/25}{Use AtEndDocument. jpg}
%    \begin{macrocode}
\AtEndDocument{%                                      % jpg
   \message{AED endfloat: Processing end Figures and Tables}% % jpg
   \onecolumn
   \processdelayedfloats }
%    \end{macrocode}
% Use, or don't use, configuration file.
%    \begin{macrocode}
\InputIfFileExists{endfloat.cfg}{%
   \typeout{*** Using endfloat.cfg ***}}{}
%</package>
%    \end{macrocode}
%
% \section{Extra macros -- HIGHLY Experimental} \label{sec:config}
%
% \subsection{Getting new delayed environments}
%
% I have been promising to make it easy to define new sorts
% of environments which can be delayed.  I don't expect to deliver
% on that promise any time soon; so until I do, I will provide a
% couple of useful extra macros in a configuration fill which
% the user may experiment with.  The two that I have needed are
% used in conjunction with the
% \textsf{rotating} package\cite{RahBar:rotating}, which
% among other things provides environments |sidewaystable| and
% |sidewaysfigure|.   With the following definitions, these should
% also work properly with \pkg{endfloat}.
%
%    \begin{macrocode}
%<*config>
% Warning!  This configuration file is experimental and
% will probably only work with the version of endfloat.sty
% with which it is distributed.  It is fully expected that the
% mechanism by which the stuff here is done will change radically
% in future versions.  For detailed comments on this code see
% endfloat.dtx.
%    \end{macrocode}
%
% Setting up sidewaystable and sidewaysfigure is fairly easy since they
% will use the same counters as table and figure, and more importantly
% the same temporary files.  So, no special |\processsideways...| needs
% to be created.
%
% We must, of course, have use of the rotating package.
%    \begin{macrocode}
\RequirePackage{rotating}
%    \end{macrocode}
% First save the definitions from |rotating| of the environments
% in question, since they will need to be restored when they are
% processed at the end.
%    \begin{macrocode}
\let\efsaved@sidewaysfigure\sidewaysfigure
\let\efsaved@sidewaystable\sidewaystable
%    \end{macrocode}
%
% And to restore them when the time comes.  These hooks are called by
% |\processtables| and |\processfigures|.  We use the hooks to
% restore the original definitions of |sideways...|.
%    \begin{macrocode}
\AtBeginTables{\let\sidewaystable=\efsaved@sidewaystable\relax}
\AtBeginFigures{\let\sidewaysfigure=\efsaved@sidewaysfigure\relax}
%    \end{macrocode}
% \begin{macro}{\sidewaystable}
% This redefinition of |sidewaystable| is very similar to the redefinition
% of |\table| in |endfloat| proper.  When a |\begin{sidewaystable}| is
% expanded, it will write |\begin{sidewaystable}| to |\jobname.ttt| and
% otherwise do what it does for a |\begin{table}|, except of course that
% it is looking for an |\end{sidewaystable}|.
%    \begin{macrocode}
\def\sidewaystable{\efloat@condopen{ttt}
    \efloat@iwrite{ttt}{\string\begin{sidewaystable}}%
    \if@domarkers
       \addtocounter{posttbl}{1}
       \tableplace
    \fi
    \def\@currenvir{efloat@float}%
    \begingroup
    \let\do\ef@makeinnocent \dospecials
    \ef@makeinnocent\^^L% and whatever other special cases
    \endlinechar`\^^M \catcode`\^^M=12 \ef@xsidetable}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ef@xsidetable}
% The definition of |\ef@xsidetable| is similar to the definition of
% |\ef@xtable| in |endfloat| proper.  It is a little bit simpler, since
% there is no need to worry about the |*|-ed versions.  Note that it
% writes out verbatim the environment to the |.ttt| file.  When
% it finds a line that satisfies the |\ef@endsidetabletest| it
% will call a macro that will write |\end{sidewaystable}| to the
% |\jobname.ttt| file.
%    \begin{macrocode}
{\catcode`\^^M=12 \endlinechar=-1 %
 \gdef\ef@xsidetable#1^^M{\def\test{#1}
      \ifx\test\ef@endsidetabletest
          \efloat@foundend{ttt}{sidewaystable}
      \else
          \efloat@iwrite{ttt}{#1}%
          \let\next\ef@xsidetable
      \fi \next}
}
%    \end{macrocode}
% \end{macro}
%
% Now figures
% \begin{macro}{\sidewaysfigure}
%    \begin{macrocode}
\def\sidewaysfigure{\efloat@condopen{fff}
    \efloat@iwrite{fff}{\string\begin{sidewaysfigure}}%
    \if@domarkers
       \addtocounter{postfig}{1}
       \figureplace
    \fi
    \def\@currenvir{efloat@float}%
    \begingroup
    \let\do\ef@makeinnocent \dospecials
    \ef@makeinnocent\^^L% and whatever other special cases
    \endlinechar`\^^M \catcode`\^^M=12 \ef@xsidefigure}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ef@xsidefigure}
%    \begin{macrocode}
{\catcode`\^^M=12 \endlinechar=-1 %
 \gdef\ef@xsidefigure#1^^M{\def\test{#1}
      \ifx\test\ef@endsidefiguretest
          \efloat@foundend{fff}{sidewaysfigure}
      \else
          \efloat@iwrite{fff}{#1}%
          \let\next\ef@xsidefigure
      \fi \next}
}
%    \end{macrocode}
% \end{macro}
% We need the strings to test for ends of the sideways things.
%    \begin{macrocode}
{\escapechar=-1%
 \xdef\ef@endsidefiguretest{\string\\end\string\{sidewaysfigure\string\}}%
 \xdef\ef@endsidetabletest{\string\\end\string\{sidewaystable\string\}}}%
%    \end{macrocode}
%
%    \begin{macrocode}
%</config>
%    \end{macrocode}
% \Finale
%
\endinput
