summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/endfloat/endfloat.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/endfloat/endfloat.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/endfloat/endfloat.dtx')
-rw-r--r--macros/latex/contrib/endfloat/endfloat.dtx2831
1 files changed, 2831 insertions, 0 deletions
diff --git a/macros/latex/contrib/endfloat/endfloat.dtx b/macros/latex/contrib/endfloat/endfloat.dtx
new file mode 100644
index 0000000000..04b4a31765
--- /dev/null
+++ b/macros/latex/contrib/endfloat/endfloat.dtx
@@ -0,0 +1,2831 @@
+\def\filename{endfloat}
+\def\fileversion{v2.7}
+\def\filedate{2019/04/15}
+\def\docdate{2019/04/15}
+%
+% \CheckSum{872}
+%% \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 <jeffrey@goldmark.org>,
+%% Axel Sommerfeldt <axel.sommerfeldt@f-m.fm>
+%% Maintainer: -none-
+%% Latest Version: Version 2.7 <April 2019>
+% \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}}
+% \newcommand*\x{\discretionary{-}{}{}}
+%
+% \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 (jeffrey@goldmark.org)
+% 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.}
+% \and Axel Sommerfeldt\thanks{Axel Sommerfeldt (axel.sommerfeldt@f-m.fm)
+% is responsible for all modifications from version 2.5 to 2.7.}
+% }
+%
+% \date{\docdate}
+%
+% \maketitle
+%
+% \begin{abstract}
+% The purpose of this package 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 \autoref{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.
+%
+% Axel Sommerfeldt has added a section about dealing with
+% other floating environments than |figure| and |table|, and
+% made adaptions to other sections affected by the
+% changes of version 2.5, 2.6, and 2.7.
+% Furthermore he has added paragraphs about his \pkg{caption}
+% package in section \ref{sec:removingcaptions} ``Removing captions''.
+%
+% 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{quote}
+% |\usepackage[|\ldots|]{endfloat}|
+% \end{quote}
+%
+% 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 \autoref{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{quote}
+% |\AtBeginDelayedFloats{%|\\
+% | \renewcommand{\baselinestretch}{1.4}}|
+% \end{quote}
+% which is available from version 2.4. See \autoref{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 \autoref{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.}
+%
+% \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 \\
+% |tablesonly| & off & & Handle tables only \\
+% |figuresonly| & off & & Handle figures only \\
+% |notables| & off & & Disregard tables \\
+% |nofigures| & off & & Disregard figures \\
+% |disable| & & & Disables the package \\
+% \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 off 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}.
+%
+% If nothing else if specified, both figures and tables will be handled
+% by the \pkg{endfloat} package.
+% This can be altered by usage of the options |tables|\x|only|
+% resp. |figures|\x|only|.
+%
+% \medskip
+%
+% A typical usage might be something like
+% \begin{quote}
+% |\documentclass[a4paper,12pt]{article}|\\
+% |\usepackage[nolists,tablesfirst]{endfloat}|\\
+% \ldots\\
+% |\begin{document}|
+% \end{quote}
+% 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: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 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}
+% \DescribeMacro{\floatplace}
+% Announcements in any language can be generated by
+% using |\re|\x|new|\x|command| to redefine |\table|\x|place| and
+% |\figure|\x|place|, or by redefining |\float|\x|place|.
+%
+% The defaults are
+% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
+% \begin{quote}
+% |\newcommand\figureplace{\floatplace{figure}}|\\
+% |\newcommand\tableplace{\floatplace{table}}|\\
+% \\
+% |\newcommand\floatplace[1]{%|\\
+% | \begin{center}|\\
+% | [\csname #1name\endcsname~%|\\
+% | \csname thepost#1\endcsname\ about here.]|\\
+% | \end{center}}|
+% \end{quote}
+%
+% These redefinitions may be placed in the \file{endfloat.cfg}
+% file (see \autoref{sec:extra} for more information).
+%
+% WARNING! The name of the counters |post|\x|tbl| and |post|\x|fig|
+% have been changed to |post|\x|table| and |post|\x|figure| in version 2.5.
+% However, |\the|\x|post|\x|tbl| and |\the|\x|post|\x|fig| are still available for
+% usage inside redefined versions of |\table|\x|place| and |\figure|\x|place|
+% so old documents (hopefully) will still work.
+%
+% Hooks for the \texttt{babel} package are not (yet) provided, so
+% you will have to do things by hand:
+% \begin{quote}
+% |\renewcommand{\figurename}{Abra} % if no babel|\\
+% |\renewcommand{\figureplace}{%|\\
+% | \begin{center}|\\
+% | [A(z) \thepostfigure.~\figurename itt legyen.]|\\
+% | \end{center}}|
+% \end{quote}
+%
+% If you wish to change the name of the figure or table section
+% heading, you can do that in the usual way (via the \texttt{babel}
+% package, or by redefining |\figure|\x|section| and |\table|\x|section|
+% directly).
+%
+% \DescribeMacro{\efloatheading}
+% Endfloat uses |\efloat|\x|heading| for applying this heading.
+% By default it is defined to use |\mark|\x|both| for that purpose:
+% \begin{quote}
+% |\newcommand\efloatheading[1]{%|\\
+% | \markboth{\uppercase{#1}}{\uppercase{#1}}}|
+% \end{quote}
+% forcing the headings applied in uppercase. You may change this by using
+% |\re|\x|new|\x|command| to redefine |\efloat|\x|heading| as you wish:
+% \begin{quote}
+% |\renewcommand\efloatheading[1]{|\meta{code that applies \#1 as heading}|}|
+% \end{quote}
+% It makes most sense to place such a redefinition in the configuration
+% file (see \autoref{sec:extra}).
+%
+% \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 |\At|\x|Begin|\x|Delayed|\x|Floats|,
+% |\At|\x|Begin|\x|Figures|, and |\At|\x|Begin|\x|Tables|.
+% If you wanted to ensure that the tables begin
+% on a recto page, you could for example say something like
+% |\At|\x|Begin|\x|Tables{\clear|\x|double|\x|page}| 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 |\At|\x|Begin|\x|Tables| and |\At|\x|Begin|\x|Figures| 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 \autoref{sec:extra}).
+%
+% \section{Insert own code into the delayed material} \label{sec:addto}
+%
+% \DescribeMacro{\addtodelayedfloat}
+% |\addtodelayedfloat| will add own code to delayed floats.
+% For example
+% \begin{quote}
+% |\addtodelayedfloat{figure}{\clearpage}|
+% \end{quote}
+% will add |\clear|\x|page| to the delayed figures.
+%
+% Note: The argument will be stored detokenized to the intermediate
+% file.
+% If this is not what you want, use the starred variant
+% |\add|\x|to|\x|delayed|\x|float*| instead, for example
+% \begin{quote}
+% |\addtodelayedfloat{figure}{\sometext}|
+% \end{quote}
+% will add |\some|\x|text| to the delayed figures while
+% \begin{quote}
+% |\addtodelayedfloat*{figure}{\sometext}|
+% \end{quote}
+% will add the current content of |\some|\x|text| to the delayed
+% figures.
+%
+% \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 |\table|\x|place| and
+% |\figure|\x|place| correctly, as well as to possibly reset
+% the counters |\the|\x|post|\x|table| and |\the|\x|post|\x|figure| (\autoref{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{\efloatpreamble}
+% Endfloat applies |\efloat|\x|preamble| before typesetting the very first
+% (delayed) float in their respective files.
+% By default it is defined to do nothing.
+% You may change this by using
+% |\re|\x|new|\x|command| to redefine |\efloat|\x|preamble| as you wish.
+%
+% \medskip
+%
+% \DescribeMacro{\efloatseparator}
+% Endfloat places |\efloat|\x|separator| between the floats in their
+% respective files. By default it is defined to be |\clear|\x|page|
+% forcing one float per page. You may change this by using
+% |\re|\x|new|\x|command| to redefine |\efloat|\x|separator| as you wish.
+% One possibility, suggested by a user, is
+% \begin{quote}
+% |\renewcommand{\efloatseparator}{\mbox{}}|
+% \end{quote}
+%
+% \DescribeMacro{\efloatpostamble}
+% Endfloat applies |\efloat|\x|postamble| after typesetting the very last
+% (delayed) float in their respective files.
+% By default it is defined to be |\efloat|\x|separator|.
+% You may change this by using
+% |\re|\x|new|\x|command| to redefine |\efloat|\x|postamble| as you wish.
+%
+% \iffalse
+% \medskip
+% It makes most sense to place such redefinitions in the configuration
+% file (see \autoref{sec:extra}).
+% \fi
+%
+% \medskip
+%
+% \DescribeMacro{\efloattype}
+% If you need to know what floats are actually processed, you could draw on
+% |\efloat|\x|type| which is set to the environment type currently processed,
+% for example |figure| or |table|.
+%
+% \section{Other customizations}\label{sec:customizations}
+%
+% \DescribeMacro{\efloatbegin}
+% \DescribeMacro{\efloatend}
+% |\efloat|\x|begin| will be typeset before the processing of each delayed
+% float while |\efloat|\x|end| will be typeset after each processing.
+% By default the first is defined to be |\clear|\x|page|, the second is
+% defined to do nothing.
+%
+% \medskip
+%
+% \DescribeMacro{\efloatbeginlist}
+% \DescribeMacro{\efloatendlist}
+% |\efloat|\x|begin|\x|list| will be typeset before each list of delayed floats
+% while |\efloat|\x|end|\x|list| will be typeset after each list.
+% By default the first is defined to be |\normal|\x|size|, the second is
+% defined to be |\clear|\x|page|.
+%
+% \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"\floatplace" 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.
+%
+% \subsection{Modified figures and tables}
+%
+% As stated in \autoref{sec:envnames}, \pkg{endfloat} will
+% utterly fail if one does something like
+% \begin{quote}
+% |\newenvironment{foo}{...\begin{table}...}|\\
+% | {...\end{table}...}|
+% \end{quote}
+% 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, inserting the following code into the document preamble
+% may be worth a try:
+% \begin{quote}
+% |\DeclareDelayedFloatFlavor{foo}{table}|
+% \end{quote}
+% This tells the \pkg{endfloat} package that |foo| should be treated as |table|,
+% at least from \pkg{endfloat}'s point of view.
+% If you keep your fingers crossed this may actually work.
+%
+% \subsection{Environments based on figures and tables}\label{sec:flavor}
+%
+% The \pkg{rotating} package\cite{RahBar:rotating}
+% contains definitions of environments
+% |side|\x|ways|\x|figure| and |side|\x|ways|\x|table|\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}.
+%
+% This can be archived with
+% \begin{quote}
+% |\DeclareDelayedFloatFlavor{sidewaysfigure}{figure}|\\
+% |\DeclareDelayedFloatFlavor{sidewaystable}{table}|
+% \end{quote}
+% after loading both, the \pkg{endfloat} and \pkg{rotating} package.
+%
+% The general syntax of |\Declare|\x|Delayed|\x|Float|\x|Flavor| is
+% \begin{quote}
+% |\DeclareDelayedFloatFlavo|(|u|)|r|\marg{environment}\marg{is a variant of}
+% \end{quote}
+% so for example
+% \begin{quote}
+% |\usepackage{endfloat,threeparttable}|\\
+% |\DeclareDelayedFloatFlavour{threeparttable}{table}|
+% \end{quote}
+% makes the |three|\x|part|\x|table| environment known to the \pkg{endfloat} package
+% as a variant of the floating environment |table|.
+%
+% This works with the |long|\x|table| environment as well:
+% \begin{quote}
+% |\usepackage{endfloat,longtable}|\\
+% |\DeclareDelayedFloatFlavour*{longtable}{table}|
+% \end{quote}
+% Note that we use the starred variant |\Declare|\x|Delayed|\x|Float|\x|Flavor*|
+% here which only redefines |long|\x|table| to be delayed, but leaves the unnumbered
+% |long|\x|table*| environment (provided by the \pkg{caption} resp.~\pkg{ltcaption} package)
+% unchanged.
+%
+% \subsubsection{The ctable package}\label{sec:ctable}
+%
+% Since |\ctable| offered by the \pkg{ctable} package\cite{Dekker:ctable}
+% is a command and not an environment, it cannot be declared as delayed
+% environment straight-ahead, i.e.
+% \begin{quote}
+% |\DeclareDelayedFloatFlavor{ctable}{table}|
+% \end{quote}
+% is not sufficient here since the \pkg{endfloat} package is only
+% capable of delaying environments.
+% A dirty (but working) solution is using |ctable| as environment
+% and not as command. An example document:
+% \begin{quote}
+% |\documentclass{book}|\\
+% |\usepackage{ctable}|\\
+% |\usepackage{endfloat}|\\
+% |\DeclareDelayedFloatFlavor{ctable}{table}|\\
+% |\begin{document}|\\
+% ||\\
+% |\begin{ctable}[|\\
+% | cap=Test,|\\
+% | caption=Test,|\\
+% | ]{cc}{|\\
+% | \tnote[]{}|\\
+% | }{\FL|\\
+% | A & B \ML|\\
+% | 1 & 2 \NN|\\
+% | 3 & 4 \LL}|\\
+% |\end{ctable}|\\
+% ||\\
+% |\end{document}|
+% \end{quote}
+%
+% \subsection{Other floating environments}\label{sec:other}
+%
+% By using |\new|\x|float| offered by the \pkg{float} package\cite{Lingnau:float},
+% or |\Declare|\x|New|\x|Float|\x|Type| offered by the \pkg{floatrow} package\cite{Lapko:floatrow},
+% or |\Declare|\x|Floating|\x|Environment| offered by the \pkg{newfloat}
+% package\cite{Sommerfeldt:newfloat}
+% one can define new floating environments. These environments
+% can be made supported by the \pkg{endfloat} package, too, e.g.
+% \begin{quote}
+% |\usepackage{newfloat,endfloat}|\\
+% |\DeclareFloatingEnvironment{map}|\\
+% |\DeclareDelayedFloat{map}{Maps}|
+% \end{quote}
+% will define a new floating environment called ``map'' and
+% set up the \pkg{endfloat} package to handle this environment, too.
+%
+% The trick is using the command
+% \begin{quote}
+% |\DeclareDelayedFloat|\marg{float}\oarg{file extension}\marg{heading}
+% \end{quote}
+% which makes the new floating environment known to the \pkg{endfloat} package.
+%
+% The \meta{file extension} specifies the file where the floating environments
+% will be stored, like |fff| for figures and |ttt| for tables.
+% If no \meta{file extension} is given, |ef|\meta{float} will be used, e.g. |efmap|
+% will be used as file extension in the code example above.
+%
+% The \meta{heading} will be used for the section header, if selected.
+% If |\list|\meta{float}|name| is not defined, it will be used for the list heading, too.
+%
+% The package options |nolists|, |lists|, |noheads|, and |heads| will be respected
+% for new environments, too. But if you would like to set individual options for
+% them, you can do so by using
+% \begin{quote}
+% |\SetupDelayedFloat|\marg{float}\marg{options}
+% \end{quote}
+% where options are |nolist|, |list|, |nohead|, and |head| analogous to the package
+% options for figures and tables specified in section \ref{sec:options}.
+%
+% By the way, |\Setup|\x|Delayed|\x|Float| works for the environments |figure| and
+% |table|, too, so
+% \begin{quote}
+% |\usepackage[nofiglist,fighead]{endfloat}|
+% \end{quote}
+% is identical to
+% \begin{quote}
+% |\usepackage{endfloat}|\\
+% |\SetupDelayedFloat{figure}{nolist,head}|
+% \end{quote}
+% and (if you prefer using key-value options instead)
+% \begin{quote}
+% |\usepackage{endfloat}|\\
+% |\SetupDelayedFloat{figure}{list=false,head=true}|
+% \end{quote}
+%
+% \subsection[Changing list and caption appearance]
+% {Changing the appearence of ``lists of'' and captions}
+%
+% When the |lists| option is used, the \LaTeX\ commands |\list|\-|of|\-|tables|
+% and |\list|\-|of|\-|figures| 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}
+% \label{sec:removingcaptions}
+%
+% \DescribeMacro{\captionsetup}
+% If you have included the \pkg{caption} package in your document
+% you can omit the caption text by adding
+% \begin{quote}
+% |\captionsetup{labelsep=none,textformat=empty}|
+% \end{quote}
+% to the preamble of your document.~\footnote{%
+% This needs at least version $3.2$ of the \pkg{caption} package.}
+% If this should be done for figures (or tables) only one can use the
+% optional argument of |\caption|\x|setup|, e.g.:
+% \begin{quote}
+% |\captionsetup[figure]{labelsep=none,textformat=empty}|
+% \end{quote}
+% See \pkg{caption} package documentation for details and alternatives.
+%
+% \DescribeMacro{\@makecaption}
+% If the \pkg{caption} package is not used, the simplest thing
+% is to provide a redefinition of |\@makecaption|.
+% You should model your redefinition after the one used in the
+% document class you actually use 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{quote}
+% |\renewcommand{\@makecaption}[2]{%|\\
+% | \vskip\abovecaptionskip|\\
+% | \hbox to \hsize{\hfil #1\hfil}%|\\
+% | \vskip\belowcaptionskip}|
+% \end{quote}
+%
+% \DescribeMacro{\caption}
+% This still leaves one problem. If you use
+% \begin{quote}\ttfamily
+% |\caption|\oarg{short caption text}\marg{full caption text}
+% \end{quote}
+% 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.
+%
+% Again, first of all a solution for usage with the \pkg{caption} package:~\footnote{%
+% This needs at least version $3.3$ of the \pkg{caption} package.}
+% \begin{quote}
+% |\captionsetup{list-entry=heading}|
+% \end{quote}
+%
+% If the \pkg{caption} package is not used,
+% the following code should be used instead:
+% \begin{quote}
+% |\let\OrigCaption\caption|\\
+% |\renewcommand{\caption}[2][X]{\OrigCaption[#2]{}}|
+% \end{quote}
+%
+% \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{quote}
+% |{\numberline {3} Caption of that figure}{85}|
+% \end{quote}
+% 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{quote}
+% |\renewcommand*{\l@figure}[2]{%|\\
+% | \setlength\@tempdima{2.3em}%|\\
+% | \noindent\hspace*{1.5em}#1\hfil\newline }|
+% \end{quote}
+% And for tables:
+% \begin{quote}
+% |\let\l@table\l@figure|
+% \end{quote}
+% \end{macro}
+% \end{macro}
+%
+% \section{Obsolete commands}\label{sec:obsolete}
+%
+% 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{quote}
+% |\end{figure}|
+% \end{quote}
+% or
+% \begin{quote}
+% |\end{figure}%|
+% \end{quote}
+% 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{quote}
+% |\end{figure}|
+% \end{quote}
+% 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 (\autoref{sec:extra}).
+%
+% \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{quote}
+% |\newcommand{\XXX}{YYY}|\\
+% \ldots\\
+% |\begin{table}|\\
+% \ldots\\
+% \ldots |\XXX| \ldots\\
+% \ldots\\
+% |\end{table}|\\
+% \ldots\\
+% |\renewcommand{\XXX}{ZZZ}|\\
+% \ldots\\
+% |\end{document}|
+% \end{quote}
+% 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, |\At|\x|Begin|\x|Delayed|\x|Floats|, |\At|\x|Begin|\x|Tables|,
+% or |\At|\x|Begin|\x|Figures|, which are discussed in \autoref{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{quote}
+% |\usepackage{lastpage}|\\
+% |\usepackage{endfloat,xyzzy}|\\
+% |\ExecuteAtEndDocument{endfloat,xyzzy,lastpage}|
+% \end{quote}
+% 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 |\At|\x|End|\x|Document|, 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
+% |\At|\x|End|\x|Document|, 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 \autoref{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
+% \autoref{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
+% \autoref{sec:order}. The package \pkg{lastpage} is among
+% these, as are recent versions of the package \pkg{harvard}.
+%
+% \subsubsection{Conflicting \cs{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.
+%
+% \item The \pkg{floatrow} package appears to work in my limited tests.
+% But please note that the \pkg{endfloat} package needs to be loaded
+% \emph{after} the \pkg{floatrow} package.
+%
+% \item The \pkg{newfloat} package appears to work in my limited tests, too.
+%
+% \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
+% \autoref{sec:caveats}.
+% \iffalse % Currently this package has no active maintainer
+% But if you need to get in touch
+% with the maintainer, you should send email at
+% \texttt{axel.sommerfeldt@f-m.fm}.
+% \fi
+%
+% \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 (jeffrey@goldmark.org) has maintained
+% this afterwards, 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.
+% The same applies to Axel Sommerfeldt (axel.sommerfeldt@f-m.fm)
+% who build version 2.5 with permission of Jeff Goldberg and has
+% maintained this package from version 2.6 to version 2.7.
+%
+% \subsection{Version 2.7}
+%
+% Version 2.7 was build by Axel Sommerfeldt (axel.sommerfeldt@f-m.fm),
+% and introduces the following changes:
+% \begin{itemize}
+% \item
+% A new package option |disable| has been added which disables the
+% functionality of the \pkg{endfloat} package
+% (\autoref{sec:options}).
+% \item
+% A new command |\add|\x|to|\x|delayed|\x|float| has beed added
+% which adds code to a specific delayed float type
+% (\autoref{sec:addto}).
+% \item
+% More customization was introduced with the new macros
+% |\efloat|\x|begin|, |\efloat|\x|end|, |\efloat|\x|begin|\x|list|,
+% and |\efloat|\x|end|\x|list|.
+% They can be re-defined by the user to influence the process
+% of delayed floats and the typesetting of lists of delayed floats
+% (\autoref{sec:customizations}).
+% \item
+% Unfortunately the bugfix regarding the usage of UTF-8 characters
+% in floating environments introduced in version 2.6 was flawed,
+% this has been fixed.
+% \end{itemize}
+%
+% \subsection{Version 2.6}
+%
+% Version 2.6 was build by Axel Sommerfeldt (axel.sommerfeldt@f-m.fm),
+% and introduces the following changes:
+% \begin{itemize}
+% \item
+% New package options |no|\x|tables| and |no|\x|figures| have been added
+% to allow better control over which floating environments
+% will be handled by the \pkg{endfloat} package (\autoref{sec:options}).
+% \item
+% New macros called |\efloat|\x|type|, |\efloat|\x|heading|, |\efloat|\x|preamble|,
+% and |\efloat|\x|postamble| have been added which allow the user more control
+% over how the delayed floats are typeset (\autoref{sec:separator}).
+% \item
+% A percent sign (|%|) is now allowed at the end of |\end|\marg{environment}, too, e.g.:
+% \begin{quote}
+% |\begin{figure}|\\
+% | |\ldots\\
+% |\end{figure}%|
+% \end{quote}
+% \item
+% Two bugs have been fixed regarding the usage of UTF-8 characters in floating environments.
+% \end{itemize}
+%
+% \subsection{Version 2.5}
+%
+% Version 2.5 was build by Axel Sommerfeldt (axel.sommerfeldt@f-m.fm)
+% with permission of Jeff Goldberg, and introduces the following changes:
+% \begin{itemize}
+% \item
+% New commands
+% |\Declare|\x|Delayed|\x|Float| and |\Declare|\x|Delayed|\x|Float|\x|Flavor|
+% for handling floating environments other than |figure| and |table|,
+% and |\Setup|\x|Delayed|\x|Float| for setting options
+% (\autoref{sec:flavor} and \autoref{sec:other}).
+% To make this possible a lot of internal code had to be reorganized,
+% but by trying to keep original versions of macros and trying to leave the
+% operational sequence itself as original as possible this hopefully won't break
+% compatibility with existing documents or extensions written for the
+% \pkg{endfloat} package.
+%
+% \item
+% New package options |tables|\x|only| and |figures|\x|only| have been added
+% to allow better control over which floating environments
+% will be handled by the \pkg{endfloat} package (\autoref{sec:options}).
+%
+% \item
+% The \pkg{endfloat} package should cooperate with
+% the \pkg{floatrow} package now, at least if you load it \emph{after}
+% the \pkg{floatrow} package.
+%
+% \item
+% Older versions of the \pkg{endfloat} package used to process |figure| and
+% |table| as starred variant always, but at least version $2.4$ did not.
+% It had stored all of them as starred variant into the temporary files, but had
+% processed them as non-starred always.
+% To make this more consistent the version $2.5$ does store the environments
+% as they are now, and processes them the same way, i.e.~non-starred
+% variants will be stored and processed as non-starred, and starred variants
+% will be stored and processed as starred.
+% \end{itemize}
+% If you notice a change in behaviour after updating the \pkg{endfloat}
+% package to version 2.5, please contact me (Axel) and I'll try to fix this.
+%
+% \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:
+% |\At|\x|Begin|\x|Figures|, |\At|\x|Begin|\x|Tables|, and
+% |\At|\x|Begin|\x|Delayed|\x|Floats| (\autoref{sec:hooks}),
+% and |\efloat|\x|separator| (\autoref{sec:separator}).
+%
+% \item
+% Most importantly, there is the addition of a configuration file
+% (\autoref{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 (\autoref{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 \autoref{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 \autoref{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 |\At|\x|End|\x|Document| 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 |\end|\x|document|. 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
+% |\figure|\x|place| and |\table|\x|place|.
+%
+% \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 is one major sort of
+% change that I (jpg) would like to see:
+% \begin{itemize}
+% \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.
+% \end{itemize}
+%
+% \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 August 2001 (version~1.3)
+% \newblock Electronic Documentation
+%
+% \bibitem{Lapko:floatrow}
+% Olga Lapko.
+% \newblock The floatrow package
+% \newblock August 2009 (version~0.3)
+% \newblock Electronic Documentation
+%
+% \bibitem{Sommerfeldt:newfloat}
+% Axel Sommerfeldt.
+% \newblock The newfloat package
+% \newblock November 2011 (version~1.0)
+% \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
+%
+% \bibitem{Dekker:ctable}
+% Wybo Dekker.
+% \newblock The ctable package
+% \newblock October 2015 (version~1.31)
+% \newblock Electronic Documentation
+% \end{thebibliography}
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+% \clearpage
+%
+% \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
+%
+\usepackage{ifpdf}
+\ifpdf
+ \usepackage{mathptmx,courier}
+ \usepackage[scaled=0.90]{helvet}
+\fi
+%
+\usepackage{hypdoc}
+\ifpdf\usepackage{hypdestopt}\fi
+\hypersetup{pdfkeywords={LaTeX, package, endfloat},pdfstartpage={},pdfstartview={}}
+%
+\CodelineIndex
+\EnableCrossrefs
+ %\DisableCrossrefs % Say \DisableCrossrefs if index is ready
+ %\RecordChanges % Gather update information
+ \OnlyDescription % comment out for implementation details
+\begin{document}
+ \let\subsectionautorefname\sectionautorefname
+ \let\subsubsectionautorefname\sectionautorefname
+ \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.
+%
+% Since these commands are available now for over two decades,
+% I, AS, think that it would be a bad idea removing them now.
+% So I decided to drop the warning message introduced by JPG instead.
+%
+% \subsection{Flags}
+%
+% Put all of the newifs for the user options and flags here.
+% Note that these are global flags only,
+% the ones bound to a specific environment will be defined
+% inside |\Declare|\x|Delayed|\x|Float| instead.
+%
+% I (as) have added the definition of |\Setup|\x|Delayed|\x|Float|
+% here in version 2.5.
+%
+% \begin{macrocode}
+\newif\if@domarkers
+\newif\if@tablist % bj
+\newif\if@figlist % bj
+\newif\if@tabhead
+\newif\if@fighead
+\newif\if@tablesfirst
+\newif\ifefloat@figures % as
+\newif\ifefloat@tables % as
+\newif\ifefloat@list % as
+\newif\ifefloat@head % as
+% \end{macrocode}
+%
+% \begin{macro}{\efloat@syncobsoleteflags}
+% The switches |\if@tablist|, |\if@figlist|, |\if@tabhead|, and |\if@fighead|
+% are obsolete, but still needed by some old (and unmaintained) document classes
+% and packages. So we still support them, and keep them in sync with the values
+% actually used by the \pkg{endfloat} package.
+% \changes{v2.5c}{2011/12/22}{This macro added. as}
+% \begin{macrocode}
+\newcommand*\efloat@syncobsoleteflags{%
+ \efloat@ifflag{tablelist}{\@tablisttrue}{\@tablistfalse}%
+ \efloat@ifflag{figurelist}{\@figlisttrue}{\@figlistfalse}%
+ \efloat@ifflag{tablehead}{\@tabheadtrue}{\@tabheadfalse}%
+ \efloat@ifflag{figurehead}{\@figheadtrue}{\@figheadfalse}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{Default values}
+%
+% Set default values of all of the (global) flags here.
+%
+% \begin{macrocode}
+\@domarkerstrue
+\@tablisttrue
+\@figlisttrue
+\@tabheadfalse
+\@figheadfalse
+\@tablesfirstfalse
+\efloat@figurestrue % as
+\efloat@tablestrue % as
+\efloat@listtrue % as
+\efloat@headfalse % as
+% \end{macrocode}
+%
+% \begin{macro}{\SetupDelayedFloat}
+% While global flags will be set using package options,
+% environment specific flags will be set with |\Setup|\x|Delayed|\x|Float|.
+% \changes{v2.5}{2011/11/26}{This command added. as}
+% \changes{v2.5c}{2011/12/22}{Usage of \cs{efloat@syncobsoleteflags} added. as}
+% \changes{v2.7}{2019/04/14}{Text of error message changed. as}
+% \begin{macrocode}
+\RequirePackage{keyval}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\SetupDelayedFloat[2]{%
+ \def\efloat@type{#1}%
+ \setkeys{endfloat}{#2}}
+% \end{macrocode}
+% \begin{macrocode}
+\define@key{endfloat}{list}[true]{\efloat@setkey{list}{#1}}
+\define@key{endfloat}{nolist}[]{\efloat@setkey{list}{false}}
+\define@key{endfloat}{head}[true]{\efloat@setkey{head}{#1}}
+\define@key{endfloat}{nohead}[]{\efloat@setkey{head}{false}}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\efloat@setkey{%
+ \@expandtwoargs\efloat@@setkey\efloat@type}
+\newcommand*\efloat@@setkey[3]{%
+ \efloat@ifdelayed{#1}{%
+ \efloat@setflag{#1#2}{#3}%
+ \efloat@syncobsoleteflags}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@ifdelayed}
+% Check if the given environment is a delayed float type.
+% If yes, execute the given code.
+% If not, issue an error message.
+% \changes{v2.7}{2019/04/14}{This macro added. as}
+% \begin{macrocode}
+\newcommand\efloat@ifdelayed[2]{%
+ \@ifundefined{ef@ext@#1}%
+ {\PackageError{endfloat}%
+ {`#1' is not a delayed float type}%
+ {Only environments known to the `endfloat' package are allowed here.}}%
+ {#2}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@ifflag}
+% |\efloat@ifflag|\marg{flag}\marg{yes-code}\marg{no-code}
+% tests if a flag has been set.
+% \changes{v2.5a}{2011/12/04}{This macro added. as}
+% \begin{macrocode}
+\newcommand*\efloat@ifflag[1]{%
+ \@nameuse{ef@if@#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@setflag}
+% |\efloat@setflag|\marg{flag}\marg{value}
+% sets a flag to the given boolean value.
+% \changes{v2.5a}{2011/12/04}{This macro added. as}
+% \begin{macrocode}
+\newcommand*\efloat@setflag[2]{%
+ \@nameuse{if#2}%
+ \global\expandafter\let\csname ef@if@#1\endcsname\@firstoftwo
+ \else
+ \global\expandafter\let\csname ef@if@#1\endcsname\@secondoftwo
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \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.
+%
+% I (as) have added the definition of |\Declare|\x|Delayed|\x|Float|
+% and |\Declare|\x|Delayed|\x|Float|\x|Flavor| here in version 2.5.
+%
+% \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}
+\newcommand*\efloat@newwrite[1]{%
+ \expandafter\newwrite\csname efloat@post#1\endcsname}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@openpost}
+% |\efloat@openpost{ttt}| will be the same as
+% \begin{quote}
+% |\immediate\openout\efloat@postttt=\jobname.ttt\relax|
+% \end{quote}
+% while also calling |\efloat@setflag{ttt}{true}| to set a flag
+% (|@ef@tttopen|) in the case of |ttt|.
+% \changes{v2.5a}{2011/12/04}{\cs{ef@setct} replaced by \cs{efloat@setflag}. as}
+% \changes{v2.5c}{2011/12/22}{\cs{efloat@setflag} replaced by \cs{ef@setct}. as}
+% \begin{macrocode}
+\newcommand*\efloat@openpost[1]{%
+ \expandafter\immediate\expandafter\openout
+ \csname efloat@post#1\endcsname =\jobname.#1\relax
+ \ef@setct{#1}{1}%
+ \message{(\jobname.#1)}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@closepost}
+% Close the file for writing. Set a flag saying so.
+% \changes{v2.6}{2018/03/24}{This macro added. as}
+% \begin{macrocode}
+\newcommand*\efloat@closepost[1]{%
+ \expandafter\immediate\expandafter\closeout\csname efloat@post#1\endcsname
+ \ef@setct{#1}{0}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ef@newct}
+% \begin{macro}{\ef@setct}
+% \begin{macro}{\ef@ifct}
+% |\ef@newct{ttt}| will create a new counter called |\@ef@tttopen|
+% and |\ef@setct{ttt}{1}| would set it to 1.\par
+% To offer best compatibility to version $2.4$ we still use these counters
+% although using |\efloat@setflag{tttopen}{1}| would be a better alternative.
+% (Otherwise the \pkg{apa} document class would break.)
+% \changes{v2.5c}{2011/12/22}{\cs{ef@ifct} added by as}
+% \begin{macrocode}
+\newcommand*\ef@newct[1]{%
+ \expandafter \newcount \csname @ef@#1open\endcsname}
+\newcommand*\ef@setct[2]{%
+ \expandafter\global\csname @ef@#1open\endcsname=#2\relax}
+\newcommand*\ef@ifct[1]{%
+ \expandafter\ifnum \csname @ef@#1open\endcsname>0 \relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\efloat@condopen}
+% Conditionally open a file
+% \changes{v2.5a}{2011/12/04}{\cs{ifnum} replaced by \cs{efloat@ifflag}. as}
+% \begin{macrocode}
+\newcommand*\efloat@condopen[1]{%
+ \ef@ifct{#1}{}{\efloat@openpost{#1}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@iwrite}
+% Immediate write to one of these files.
+% |\protected@iwrite| was taken from https://tex.stackexchange.com/questions/75951/
+% \changes{v2.6}{2018/03/18}{Bugfix: Uses \cs{protected@write} now. as}
+% \changes{v2.7}{2019/04/14}{Bugfix: Uses \cs{protected@iwrite} now. as}
+% \begin{macrocode}
+\providecommand\protected@iwrite[3]{%
+ \begingroup
+ \let\thepage\relax
+ #2%
+ \let\protect\@unexpandable@protect
+ \edef\reserved@a{\immediate\write #1{#3}}%
+ \reserved@a
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand\efloat@iwrite[1]{%
+ \expandafter\protected@iwrite\csname efloat@post#1\endcsname{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addtodelayedfloat}
+% Immediate write to one of these files.
+% While |\efloat@iwrite| is for internal use, this one if for usage in end-user documents.
+% \changes{v2.7}{2019/04/14}{This macro added. as}
+% \changes{v2.7}{2019/04/15}{Starred variant added. as}
+% \begin{macrocode}
+\newcommand\addtodelayedfloat{%
+ \@ifstar{\efloat@addto\@firstofone}{\efloat@addto\detokenize}}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand\efloat@addto[3]{%
+ \efloat@ifdelayed{#2}{%
+ \expandafter\efloat@@addto\expandafter{\csname ef@ext@#2\endcsname}{#1{#3}}}}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand\efloat@@addto[1]{%
+ \efloat@condopen{#1}\efloat@iwrite{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloatheading}
+% This macro changes the page headings.
+% By default it is defined to use |\markboth| for this purpose,
+% but you may redefine this command in the configuration file or preamble.
+% \changes{v2.6}{2018/03/18}{This macro added. as}
+% \begin{macrocode}
+\providecommand\efloatheading[1]{%
+ \markboth{\uppercase{#1}}{\uppercase{#1}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloatpreamble}
+% |\efloat|\x|preamble| will be typeset in front of the delayed floating environments.
+% By default it does nothing; if you want it to be something else,
+% you may redefine this command in the configuration file or preamble.
+% \changes{v2.6}{2018/03/24}{This macro added. as}
+% \begin{macrocode}
+\providecommand\efloatpreamble{}
+% \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 |\efloat|\x|separator|
+% to be |\clear|\x|page|. If you want it to be something else,
+% you may redefine this command in the configuration file or preamble.
+% \changes{v2.6}{2018/03/24}{Use \cs{providecommand} instead of \cs{newcommand} to define this macro. as}
+% \begin{macrocode}
+\providecommand\efloatseparator{\clearpage}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloatpostamble}
+% |\efloat|\x|postamble| will be typeset at the end of the delayed floating environments.
+% By default that is what it does, by defining |\efloat|\x|postamble|
+% to be |\efloat|\x|separator|. If you want it to be something else,
+% you may redefine this command in the configuration file or preamble.
+% \changes{v2.6}{2018/03/24}{This macro added. as}
+% \begin{macrocode}
+\providecommand\efloatpostamble{\efloatseparator}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloatbegin}
+% |\efloatbegin| will be typeset when the processing of the delayed float begins.
+% \changes{v2.7}{2019/04/15}{This macro added. as}
+% \begin{macrocode}
+\providecommand\efloatbegin{\clearpage}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloatend}
+% |\efloatend| will be typeset when the processing of the delayed float ends.
+% \changes{v2.7}{2019/04/15}{This macro added. as}
+% \begin{macrocode}
+\providecommand\efloatend{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloatbeginlist}
+% |\efloatbeginlist| will be typeset before the list of a delayed float.
+% \changes{v2.7}{2019/04/15}{This macro added. as}
+% \begin{macrocode}
+\providecommand\efloatbeginlist{\normalsize}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloatendlist}
+% |\efloatendlist| will be typeset after the list of a delayed float.
+% \changes{v2.7}{2019/04/15}{This macro added. as}
+% \begin{macrocode}
+\providecommand\efloatendlist{\clearpage}
+% \end{macrocode}
+% \end{macro}
+%
+% \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}{\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}
+%
+% \begin{macro}{\floatplace}
+% Place marker.
+% \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}
+% \changes{v2.5}{2011/11/26}{universalized by as}
+% \begin{macrocode}
+\newcommand{\floatplace}[1]{%
+ \begin{center}
+ [\csname #1name\endcsname~\csname thepost#1\endcsname\ about here.]
+ \end{center}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DeclareDelayedFloat}
+% This one prepares the given environment for cooperation with the \pkg{endfloat}
+% package, i.e.~|figure| resp.~|table|.
+% \changes{v2.5}{2011/11/26}{This command added. as}
+% \changes{v2.5a}{2011/12/04}{\cs{ef@newct} replaced by \cs{efloat@setflag}. as}
+% \changes{v2.5b}{2011/12/05}{Starred variant added. as}
+% \changes{v2.5c}{2011/12/22}{\cs{efloat@setflag} replaced by \cs{ef@newct}. as}
+% \begin{macrocode}
+\newcommand*\DeclareDelayedFloat{%
+ \@ifstar{\efloat@declare{*}}{\efloat@declare{}}}
+\@onlypreamble\DeclareDelayedFloat
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\efloat@declare[2]{%
+ \@testopt{\efloat@@declare{#1}{#2}}{ef#2}}
+\@onlypreamble\efloat@declare
+% \end{macrocode}
+% \begin{macrocode}
+\def\efloat@@declare#1#2[#3]#4{%
+% \end{macrocode}
+% Counters
+% \changes{v1.99}{1992/05/27}{extensive changes by bj}
+% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
+% \begin{macrocode}
+ \newcounter{post#2}%
+% \end{macrocode}
+% Remember the file extension in |\ef@ext@|\meta{environment}.
+% \begin{macrocode}
+ \edef\@tempa{#3}%
+ \edef\@tempb{\@nameuse{ext@#2}}%
+ \ifx\@tempa\@tempb
+ \PackageError{endfloat}%
+ {File extension `\@tempa' is already used by the List}%
+ {Try using a different file extension here, e.g. `ef\expandafter\@gobbletwo\@tempa'.}%
+ \else
+ \expandafter\let\csname ef@ext@#2\endcsname\@tempa
+ \fi
+% \end{macrocode}
+% Code for opening the |\jobname.fff|
+% \begin{macrocode}
+ \efloat@newwrite{#3}%
+ \ef@newct{#3}%
+% \end{macrocode}
+% Place marker
+% (Note: The \pkg{float} package uses |\fname@|\textit{X} as float name,
+% but we need |\|\textit{X}|name| in |\float|\x|place|.)
+% \begin{macrocode}
+ \@ifundefined{#2name}{\@namedef{#2name}{\@nameuse{fname@#2}}}{}%
+ \efloat@namedef{#2place}{\floatplace{#2}}%
+% \end{macrocode}
+% Re-define float.
+% \begin{macrocode}
+ \DeclareDelayedFloatFlavor#1{#2}{#2}%
+% \end{macrocode}
+% Define the heading title. (Only relevant if option |fighead| is set.)
+% \begin{macrocode}
+ \expandafter\providecommand\csname #2section\endcsname{#4}%
+% \end{macrocode}
+% \begin{macrocode}
+% \end{macrocode}
+% Here we set-up the hooks for getting stuff into |\process...|
+% commands easily.
+% \begin{macrocode}
+ \efloat@namedef{process#2s@hook}{}%
+ \edef\@tempb{\def\noexpand\@tempa{\@car#2\@nil}}%
+ \uppercase\expandafter{\@tempb}%
+ \edef\@tempb{%
+ \noexpand\g@addto@macro\noexpand\@tempa{\@cdr#2\@nil}}%
+ \@tempb
+ \efloat@namedef{AtBegin\@tempa s}{%
+ \expandafter\g@addto@macro\csname process#2s@hook\endcsname}%
+ \expandafter\expandafter\expandafter\let\expandafter
+ \csname AtBegin\@tempa es\expandafter\endcsname
+ \csname AtBegin\@tempa s\endcsname
+% \end{macrocode}
+% \begin{macrocode}
+ \efloat@namedef{process#2s}{\efloat@process{#3}{#2}}%
+ \efloat@namedef{process#2es}{\@nameuse{process#2s}}%
+% \end{macrocode}
+% Flags: Set default values of all of the flags here.
+% \begin{macrocode}
+ \efloat@@setkey{#2}{list}{efloat@list}%
+ \efloat@@setkey{#2}{head}{efloat@head}%
+% \end{macrocode}
+% Finally add the environment to the list of delayed floats
+% \begin{macrocode}
+ \@cons\efloat@list{{#2}}}
+\@onlypreamble\efloat@@declare
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\efloat@list{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@namedef}
+% Same as \cs{@namedef} from the \LaTeX\ kernal,
+% but uses \cs{newcommand} instead of \cs{def}.
+% \changes{v2.5c}{2011/12/23}{This macro added}
+% \begin{macrocode}
+\newcommand*\efloat@namedef[1]{%
+ \expandafter\newcommand\csname #1\endcsname}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DeclareDelayedFloatFlavor}
+% \begin{macro}{\DeclareDelayedFloatFlavour}
+% This one redefines the given environment, i.e. |figure| resp. |table|.
+% While the non-starred variant redefines both variants (non-starred and starred),
+% the starred variant only redefines the environment as given.\par
+% We do this |\At|\x|Begin|\x|Document| so we are (hopefully) redefining this
+% environment as the very last package.
+% (Otherwise \pkg{endfloat} would not work with \pkg{floatrow}.)
+% \changes{v2.5b}{2011/12/05}{This command added. as}
+% \changes{v2.7}{2019/04/14}{Text of error message changed. as}
+% \begin{macrocode}
+\newcommand*\DeclareDelayedFloatFlavor{%
+ \@ifstar{\efloat@declareflavor\@gobble}%
+ {\efloat@declareflavor\@iden}}
+\@onlypreamble\DeclareDelayedFloatFlavor
+\let\DeclareDelayedFloatFlavour\DeclareDelayedFloatFlavor
+\@onlypreamble\DeclareDelayedFloatFlavour
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\efloat@declareflavor[3]{%
+ \efloat@ifdelayed{#3}{%
+ \efloat@AtBeginDocument{%
+ \efloat@@declareflavor{#2}{#3}%
+ #1{\efloat@@declareflavor{#2*}{#3}}}}}
+\@onlypreamble\efloat@declareflavor
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\efloat@@declareflavor[2]{%
+ \def\@tempa{\@efloat{#2}{#1}}%
+ \@ifundefined{efloat@#1@ORI}%
+% \end{macrocode}
+% Save old definition of the environment.
+% \begin{macrocode}
+ {\expandafter\expandafter\expandafter\let\expandafter
+ \csname efloat@#1@ORI\expandafter\endcsname
+ \csname #1\endcsname
+% \end{macrocode}
+% Restore old definition of the environment at |\efloat@restore|\x|floats|.
+% \begin{macrocode}
+ \expandafter\g@addto@macro\expandafter\efloat@restorefloats\expandafter{%
+ \expandafter\let
+ \csname #1\expandafter\endcsname
+ \csname efloat@#1@ORI\endcsname}%
+% \end{macrocode}
+% Re-define float.
+% \begin{macrocode}
+ \expandafter\let\csname#1\endcsname\@tempa}%
+% \end{macrocode}
+% \begin{macrocode}
+ {\expandafter\ifx\csname#1\endcsname\@tempa \else
+ \PackageError{endfloat}%
+ {The environment `#1' was already redefined}%
+ {You can't use \noexpand\DeclareDelayedFloatFlavor twice for a given environment.}%
+ \fi}}
+\@onlypreamble\efloat@@declareflavor
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\efloat@AtBeginDocument}
+% To be compatible to version $2.4$ we usually redefine |\figure| and |\table| immediately.
+% But if the \pkg{floatrow} package is loaded we can't, so we have to use
+% |\At|\x|Begin|\x|Document| here.
+% (Note: |\efloat@At|\x|Begin|\x|Document| will be defined using |\provide|\x|command|
+% so document classes and packages can pre-define it if needed.)
+% \changes{v2.5c}{2011/12/22}{This command added. as}
+% \changes{v2.5d}{2011/12/23}{Revised. as}
+% \begin{macrocode}
+\@ifpackageloaded{floatrow}{%
+ \PackageInfo{endfloat}{`floatrow' package detected, delaying redefinitions}
+ \providecommand*\efloat@AtBeginDocument{\AtBeginDocument}
+}{%
+ \providecommand*\efloat@AtBeginDocument{\@iden}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@restorefloats}
+% Restore the original definition of all environments (floats and flavors)
+% known to the \pkg{endfloat} package.
+% This macro will be filled with life by |\Declare|\x|Delayed|\x|Float|\x|Flavor|.
+% \changes{v2.5}{2011/11/26}{This macro added by as}
+% \begin{macrocode}
+\newcommand*\efloat@restorefloats{}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Options and (obsolete) Commands}
+%
+% \begin{macro}{\efloat@SetOption}
+% Sets an option (via |\efloat@Setup|) for all environments known to
+% the \pkg{endfloat} package.
+% \changes{v2.5}{2011/11/26}{This macro added. as}
+% \begin{macrocode}
+\newcommand*\efloat@SetOption[1]{%
+ \def\@elt##1{\efloat@Setup{##1}{#1}}%
+ \efloat@list
+ \let\@elt\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@Setup}
+% Within option code we can't use |\Setup|\x|Delayed|\x|Float| since
+% |figure| and |table| are not declared as delayed floating environments yet.
+% So we use |\efloat@Setup| instead which will simply collect the settings for
+% execution at a later stage.
+% \changes{v2.5a}{2011/12/03}{This macro added. as}
+% \begin{macrocode}
+\newcommand\efloat@Setup[2]{%
+ \g@addto@macro\efloat@ProcessOptions{%
+ \SetupDelayedFloat{#1}{#2}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@ProcessOptions}
+% Processes options setup with |\efloat@Setup|.
+% \changes{v2.5a}{2011/12/03}{This macro added. as}
+% \begin{macrocode}
+\newcommand\efloat@ProcessOptions{%
+ \let\efloat@SetOption\@undefined
+ \let\efloat@Setup\@undefined
+ \let\efloat@ProcessOptions\@undefined}
+% \end{macrocode}
+% \end{macro}
+%
+% \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}
+\newcommand{\nomarkersintext}{\@domarkersfalse}
+% \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}
+% \changes{v2.5}{2011/11/26}{We use \cs{SetupDelayedFloat} now. as}
+% \begin{macrocode}
+\newcommand{\dotablist}{%
+ \SetupDelayedFloat{table}{list=true}}
+\newcommand{\notablist}{%
+ \SetupDelayedFloat{table}{list=false,head=true}}
+% \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}
+% \changes{v2.5}{2011/11/26}{We use \cs{SetupDelayedFloat} now. as}
+% \ldots and Figures
+% \begin{macrocode}
+\newcommand{\dofiglist}{%
+ \SetupDelayedFloat{figure}{list=true}}
+\newcommand{\nofiglist}{%
+ \SetupDelayedFloat{figure}{list=false,head=true}}
+% \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}{\efloat@listfalse \efloat@SetOption{list=false}}
+\DeclareOption{lists}{\efloat@listtrue \efloat@SetOption{list=true}}
+% \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}{\efloat@Setup{table}{list=false}}
+\DeclareOption{nofiglist}{\efloat@Setup{figure}{list=false}}
+\DeclareOption{tablist}{\efloat@Setup{table}{list=true}}
+\DeclareOption{figlist}{\efloat@Setup{figure}{list=true}}
+% \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}{\efloat@headtrue \efloat@SetOption{head=true}}
+\DeclareOption{noheads}{\efloat@headfalse \efloat@SetOption{head=false}}
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareOption{fighead}{\efloat@Setup{figure}{head=true}}
+\DeclareOption{tabhead}{\efloat@Setup{table}{head=true}}
+\DeclareOption{nofighead}{\efloat@Setup{figure}{head=false}}
+\DeclareOption{notabhead}{\efloat@Setup{table}{head=false}}
+% \end{macrocode}
+% Also need option for putting tables first
+% \begin{macrocode}
+\DeclareOption{tablesfirst}{\@tablesfirsttrue}
+\DeclareOption{figuresfirst}{\@tablesfirstfalse}
+% \end{macrocode}
+% \changes{v2.5a}{2011/12/03}{Options `tablesonly' and `figuresonly' added. as}
+% \begin{macrocode}
+\DeclareOption{tablesonly}{\efloat@figuresfalse \efloat@tablestrue}
+\DeclareOption{figuresonly}{\efloat@figurestrue \efloat@tablesfalse}
+% \end{macrocode}
+% \changes{v2.6}{2018/03/04}{Options `tables' and `figures' added. as}
+% \begin{macrocode}
+\DeclareOption{notables}{\efloat@tablesfalse}
+\DeclareOption{nofigures}{\efloat@figuresfalse}
+% \end{macrocode}
+% Other option stuff
+% \changes{v2.7}{2019/01/10}{Option `disable' added. as}
+% \begin{macrocode}
+\newcommand*\efloat@AtEndDocument{\AtEndDocument}
+\DeclareOption{disable}{%
+ \def\efloat@@declare#1#2[#3]#4{%
+ \PackageInfo{endfloat}{`#2' is not delayed since option `disable' was specified}}%
+ \renewcommand*\efloat@declareflavor[3]{}%
+ \renewcommand*\efloat@@setkey[3]{}%
+ \renewcommand*\efloat@AtEndDocument{\@gobble}%
+ \AtBeginDocument{\renewcommand*\processdelayedfloats{}}}
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareOption*{%
+ \PackageError{endfloat}%
+ {Unknown option `\CurrentOption'}%
+ {Please take a look at the documentation of the `endfloat' package.}}
+% \end{macrocode}
+% Process (global) options
+% \begin{macrocode}
+\ProcessOptions*
+% \end{macrocode}
+% For compatibility reasons we still store the original code of `figure' and `table'
+% to |\@bfig| and |\@btab| although we don't make use of it anymore.
+% \begin{macrocode}
+\let\@bfig\figure % bj
+\let\@btab\table % bj
+% \end{macrocode}
+% Declare `figure' and `table' as delayed floating environment, if requested
+% \begin{macrocode}
+\if@tablesfirst
+ \ifefloat@tables
+ \DeclareDelayedFloat{table}[ttt]{Tables}
+ \fi
+ \ifefloat@figures
+ \DeclareDelayedFloat{figure}[fff]{Figures}
+ \fi
+\else
+ \ifefloat@figures
+ \DeclareDelayedFloat{figure}[fff]{Figures}
+ \fi
+ \ifefloat@tables
+ \DeclareDelayedFloat{table}[ttt]{Tables}
+ \fi
+\fi
+% \end{macrocode}
+% Process environment specific options
+% \begin{macrocode}
+\efloat@ProcessOptions
+% \end{macrocode}
+%
+% \begin{macro}{\thepostfig}
+% \begin{macro}{\theposttbl}
+% For compatibility reasons we still offer the old counters
+% |postfig| and |posttbl|, so existing redefinitions of |\figure|\x|place|
+% and |\table|\x|place| resp. existing extensions to the \pkg{endfloat} package
+% will still work.
+% \begin{macrocode}
+\let\c@postfig\c@postfigure
+\let\c@posttbl\c@posttable
+\newcommand\thepostfig{\thepostfigure}
+\newcommand\theposttbl{\theposttable}
+% \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.
+% \begin{macrocode}
+\let\efloat@float\relax
+% \end{macrocode}
+%
+% \begin{macro}{\@efloat}
+% the {blank space } appearing with |\nomarkersintext| was fixed by adding
+% a percent sign (|%|) at strategic locations, determined by setting
+% |\tracingcommands=1| ---Darrell
+%
+% 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 \autoref{sec:envnames}). ---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.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}{Use LaTeX2e documentation form. jpg}
+% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
+% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
+% \changes{v2.5}{2011/11/26}{universalized by as}
+% \changes{v2.5b}{2011/12/05}{revised by as}
+% \changes{v2.6}{2018/03/18}{Re-defines \cs{efloat@endtestX} and \cs{efloat@enddbltestX}, too. as}
+% \changes{v2.6}{2018/03/24}{Writes \cs{efloatseparator} into the file, if necessary. as}
+% \begin{macrocode}
+\newcommand*\@efloat[1]{%
+ \expandafter\@@efloat\expandafter{\csname ef@ext@#1\endcsname}{#1}}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\@@efloat[3]{%
+% \end{macrocode}
+% \begin{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{#1}%
+% \end{macrocode}
+% Write |\efloatseparator| into the file, if necessary.
+% \begin{macrocode}
+ \@nameuse{efloat@separator@#1}%
+% \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.
+% \begin{macrocode}
+ \if@domarkers
+ \stepcounter{post#2}% % bj
+ \@nameuse{#2place}% % bj
+ \fi
+% \end{macrocode}
+% |\@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 \autoref{sec:envnames}.
+% \begin{macrocode}
+ \def\@currenvir{efloat@float}%
+% \end{macrocode}
+% 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.
+% \begin{macrocode}
+ \begingroup
+ \let\do\ef@makeinnocent \dospecials
+ \ef@makeinnocent\^^L% and whatever other special cases
+ \endlinechar`\^^M \catcode`\^^M=12 %
+% \end{macrocode}
+% Patch |\efloat@endtest| so it contains the actual environment name.
+% \begin{macrocode}
+ \efloat@patch\efloat@endtest{#3}% as
+ \efloat@patch\efloat@enddbltest{#3}% as
+ \efloat@patch\efloat@endtestX{#3}% as
+ \efloat@patch\efloat@enddbltestX{#3}% as
+% \end{macrocode}
+% We have read a |\begin{figure}| to get here. We need to write that
+% into the file. \par
+% 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.
+% \begin{macrocode}
+ \def\next{\efloat@xfloat{#1}}%
+ \next\string\begin{#3}}%
+% \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]\par
+% Note that this macro will not be used by the \pkg{endfloat} package
+% itself anymore, but we'll leave it here so extensions written for the
+% \pkg{endfloat} package which uses it will still work.
+% \begin{macrocode}
+\newcommand*\efloat@foundend[2]{%
+ \edef\efloat@enddbltest{\string\end{#2}}%
+ \efloat@found@end{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@found@end}
+% This is the new version of \cs{efloat@foundend}, actually used
+% by this package.
+% \changes{v2.5}{2011/11/26}{This variant of \cs{efloat@foundend} added by as}
+% \changes{v2.6}{2018/03/24}{Writing \cs{efloatseparator} delayed until next \cs{@efloat}. as}
+% \begin{macrocode}
+\newcommand*\efloat@found@end[1]{%
+% \end{macrocode}
+% Write |\end{figure}| into the file, followed by |\efloatseparator|.
+% \begin{macrocode}
+ \efloat@iwrite{#1}{\efloat@enddbltest}%
+ \global\@namedef{efloat@separator@#1}{%
+ \efloat@iwrite{#1}{\string\efloatseparator}%
+ \efloat@iwrite{#1}{ }}%
+% \end{macrocode}
+% Re-define |\next| so the current floating environment will be closed.
+% \begin{macrocode}
+ \def\next{\endgroup\end{efloat@float}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@xfloat}
+% |\efloat@xfloat| 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.1}{1994/06/25}{Modify documentation text. jpg}
+% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
+% \changes{v2.5}{2011/11/26}{universalized by as}
+% \changes{v2.5}{2011/11/26}{\cs{long} added. as}
+% \changes{v2.5c}{2011/12/22}{renamed from \cs{ef@xfigure} to \cs{efloat@xfloat} by as}
+% \changes{v2.6}{2018/03/18}{Actual test out-sourced to \cs{efloat@if@end}. as}
+% \begin{macrocode}
+{\catcode`\^^M=12 \endlinechar=-1 %
+ \long\gdef\efloat@xfloat#1#2^^M{%
+ \efloat@if@end{#2}{\efloat@found@end{#1}}{\efloat@iwrite{#1}{#2}}%
+ \next}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@if@end}
+% |\efloat@if@end| tests if the given argument marks the end of the current floating environment.
+% If yes, |\@firstoftwo| will be executed, |\secondoftwo| otherwise.
+% \changes{v2.6}{2018/03/18}{This macro added. as}
+% \changes{v2.6}{2018/03/18}{Tests \cs{efloat@endtestX} and \cs{efloat@enddbltestX}, too. as}
+% \begin{macrocode}
+\newcommand\efloat@if@end[1]{%
+ \def\test{#1}%
+ \let\efloat@next\@firstoftwo
+% \end{macrocode}
+% Test for |\end{figure}|
+% \begin{macrocode}
+ \ifx\test\efloat@endtest
+% \end{macrocode}
+% Test for |\end{figure*}|
+% \begin{macrocode}
+ \else\ifx\test\efloat@enddbltest
+% \end{macrocode}
+% Test for |\end{figure}%| and |\end{figure*}%|
+% \begin{macrocode}
+ \else\ifx\test\efloat@endtestX
+ \else\ifx\test\efloat@enddbltestX
+% \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.
+% \begin{macrocode}
+ \else
+ \let\efloat@next\@secondoftwo
+ \fi\fi\fi\fi \efloat@next}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@endtest}
+% \iffalse
+% 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.
+% \fi
+% I (as) have generalized this end\ldots{}test so it can be
+% used for user specific floating environments as well.
+% I did this by simply replacing |figure| with |X|, this will be patched
+% to the correct environment name in |\@efloat| by using |\efloat@patch|.
+% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
+% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
+% \changes{v2.5}{2011/11/26}{`figure' replaced by 'X' and documentation modified. as}
+% \changes{v2.6}{2018/03/18}{\cs{efloat@endtestX} and \cs{efloat@enddbltestX} are used for the test, too. as}
+% \begin{macrocode}
+{\escapechar=-1%
+ \catcode`\#=14 % hash mark is comment character
+ \catcode`\%=12 # percent sign is other character
+ \xdef\efloat@endtest{\string\\end\string\{X\string\}}
+ \xdef\efloat@enddbltest{\string\\end\string\{X\string\}}
+ \xdef\efloat@endtestX{\string\\end\string\{X\string\}%}
+ \xdef\efloat@enddbltestX{\string\\end\string\{X\string\}%}
+}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\efloat@patch[2]{%
+ \def\x##1X##2\@nil{\def#1{##1#2##2}}%
+ \expandafter\x#1\@nil}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ef@xfigure}
+% \changes{v2.5c}{2011/12/22}{Revived by as}
+% \begin{macro}{\ef@xtable}
+% \changes{v2.5c}{2011/12/22}{Revived by as}
+% \changes{v2.6}{2018/03/18}{Re-defines \cs{efloat@endtestX} and \cs{efloat@enddbltestX}, too. as}
+% Both, |\ef@xfigure| and |\ef@xtable|, are gone with version $2.5$ of the \pkg{endfloat}
+% package.
+% But unfortunately some old and unmaintained document classes and packages still
+% uses these internal macros, so we still provide them to stay compatible.
+% \begin{macrocode}
+\newcommand*\ef@xfigure{\ef@xfloat{fff}{figure}}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\ef@xtable{\ef@xfloat{ttt}{table}}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\ef@xfloat[2]{%
+ \efloat@patch\efloat@endtest{#2}%
+ \efloat@patch\efloat@enddbltest{#2*}%
+ \efloat@patch\efloat@endtestX{#2}%
+ \efloat@patch\efloat@enddbltestX{#2*}%
+% \end{macrocode}
+% \begin{macrocode}
+ \def\next{\efloat@xfloat{#1}}%
+ \next}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Processing Figures and Tables}
+%
+% \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*\processdelayedfloats@hook{}
+\def\AtBeginDelayedFloats{%
+ \g@addto@macro\processdelayedfloats@hook}
+\newcommand*\processotherdelayedfloats{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@process}
+% |\efloat@process|\marg{file extension}\marg{environment name}
+% \changes{v1.99}{1992/05/27}{extensive changes by bj}
+% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
+% \changes{v2.5}{2011/11/26}{universalized by as}
+% \changes{v2.5a}{2011/12/04}{\cs{ifnum} replaced by \cs{efloat@ifflag}. as}
+% \changes{v2.5a}{2011/12/04}{\cs{ef@setct} replaced by \cs{efloat@setflag}. as}
+% \changes{v2.5c}{2011/12/22}{\cs{efloat@setflag} replaced by \cs{ef@setct}. as}
+% \changes{v2.6}{2018/03/18}{Bugfix: Usage of \cs{makeatletter}\ldots\cs{makeatother} added. as}
+% \changes{v2.6}{2018/03/18}{Usage of \cs{markboth} replaced by \cs{efloatheading}. as}
+% \changes{v2.6}{2018/03/24}{\cs{efloat@type} replaced by \cs{efloattype}. as}
+% \changes{v2.6}{2018/03/24}{Usage of \cs{@input} replaced by \cs{efloat@input}. as}
+% \changes{v2.6}{2018/03/24}{Usage of \cs{efloatpreamble} and \cs{efloatpostamble} added. as}
+% \changes{v2.7}{2019/04/15}{Usage of \cs{efloatbegin}, \cs{efloatend}, \cs{efloatbeginlist}, and \cs{efloatendlist} added. as}
+% \begin{macrocode}
+\newcommand*\efloat@process[2]{%
+% \end{macrocode}
+% First test to see if there are any figures to process.
+% If so do it.
+% \begin{macrocode}
+ \ef@ifct{#1}{%
+% \end{macrocode}
+% Close the file for writing. Set a flag saying so.
+% \begin{macrocode}
+ \efloat@closepost{#1}%
+% \end{macrocode}
+% Define |\efloat|\x|type| which can be evaluated by user-defined variants of
+% |\efloat|\x|heading|, |\efloat|\x|preamble|, |\efloat|\x|separator|, and |\efloat|\x|postamble|.
+% \begin{macrocode}
+ \def\efloattype{#2}% % as
+% \end{macrocode}
+% \begin{macrocode}
+ \efloatbegin % bj
+% \end{macrocode}
+% Deal with headers and list of figures if necessary
+% \begin{macrocode}
+ \efloat@ifflag{#2list}{% % bj
+ \begingroup
+ \efloatbeginlist % bj
+ \efloat@listof{#2}% % bj
+ \efloatendlist % bj
+ \endgroup
+ }{}%
+ \efloat@ifflag{#2head}{%
+ \section*{\@nameuse{#2section}}% % bj
+% \end{macrocode}
+% See the discussion in \autoref{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
+ }{}%
+ \expandafter\expandafter\expandafter\efloatheading % bj
+ \expandafter\csname #2section\endcsname % bj
+% \end{macrocode}
+% Use any user defined hooks just before inputting the file.
+% \begin{macrocode}
+ \processdelayedfloat@hook
+ \@nameuse{process#2s@hook}%
+% \end{macrocode}
+% Input the file, surrounded by |\efloatpreamble| and |\efloatpostamble|.
+% \begin{macrocode}
+ \efloatpreamble
+ \efloat@input{\jobname.#1}%
+ \efloatpostamble
+% \end{macrocode}
+% \begin{macrocode}
+ \efloatend % as
+ }{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@input}
+% Input the file, surrounded by |\makeatletter| and |\makeatother|
+% so characters written as (internal) macros (for example UTF-8 characters)
+% will be processed without errors.
+% \changes{v2.6}{2018/03/18}{This macro added. as}
+% \begin{macrocode}
+\newcommand*\efloat@input[1]{%
+ \makeatletter
+ \@input{#1}%
+ \makeatother}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\processdelayedfloat@hook}
+% For generic changes document classes can use the hook
+% |\process|\x|delayed|\x|float@hook|. If the float type is needed,
+% it can be extracted from |\efloattype|.
+% \changes{v2.5d}{2011/12/25}{This hook added}
+% \begin{macrocode}
+\newcommand*\processdelayedfloat@hook{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\efloat@listof}
+% This one will do the ``List of Figures'' resp. ``List of Tables''.
+% \changes{v2.5}{2011/11/26}{This macro added}
+% \begin{macrocode}
+\newcommand*\efloat@listof[1]{%
+% \end{macrocode}
+% If no name is given for the list we set it to ``List of \textit{X}'' where
+% \textit{X} is the heading given as second mandatory argument
+% to |\Declare|\x|Delayed|\x|Float|.
+% \begin{macrocode}
+ \expandafter\providecommand\csname list#1name\endcsname
+ {List of \@nameuse{#1section}}%
+% \end{macrocode}
+% If |\listof|\textit{X}|s| is defined, we use it here.
+% Otherwise we try using |\listof| (defined by the \pkg{float} and \pkg{floatrow}
+% package) instead. If this will fail, too, we have to give up (and issue an error message).
+% \begin{macrocode}
+ \@ifundefined{listof#1s}%
+ {\@ifundefined{listof}%
+ {\PackageError{endfloat}%
+ {Don't know how to make List of `#1'}%
+ {You could try defining \protect\listof#1s on your own}}%
+ {\listof{#1}{\@nameuse{list#1name}}}}%
+ {\@nameuse{listof#1s}}}
+% \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}
+%
+% \begin{macro}{\processdelayedfloats}
+% 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{quote}
+% |\makeatletter|\\
+% |\g@addto@macro\processdelayedfloats{\efloat@restorefloats}|\\
+% |\makeatother|
+% \end{quote}
+% \changes{v2.5}{2011/11/26}{Process float list instead of |figure| and |table|. as}
+% \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 |\processtables| and |\processfigures|.
+% \begin{macrocode}
+ \def\baselinestretch{1}\normalsize
+ \efloat@restorefloats
+% \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}
+ \efloat@processfloats
+ \processotherdelayedfloats}}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\efloat@processfloats{%
+ \let\@tempa\@empty
+ \def\@elt##1{\g@addto@macro\@tempa{\@nameuse{process##1es}}}%
+ \efloat@list
+ \let\@elt\relax
+ \@tempa}
+% \end{macrocode}
+% \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}
+\efloat@AtEndDocument{% % jpg
+ \message{AED endfloat: Processing end Figures and Tables}% % jpg
+ \onecolumn
+ \processdelayedfloats }
+% \end{macrocode}
+% \end{macro}
+%
+% Use, or don't use, configuration file.
+% \begin{macrocode}
+\InputIfFileExists{endfloat.cfg}{%
+ \typeout{*** Using endfloat.cfg ***}}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \section{Extra macros -- HIGHLY Experimental} \label{sec:config}
+%
+% \subsection{Getting new delayed environments}
+%
+% This section used to offer a configuration file which was able
+% to integrate the environments |side|ways|figure| and |side|ways|table|
+% offered by the \pkg{rotating} package\cite{RahBar:rotating}
+% into the \pkg{endfloat} package.\par
+% For compatibility reasons we still do, so existing documents
+% including |efxmpl.cfg| will still work,~e.g.
+% \begin{quote}
+% \ldots\\
+% |\usepackage{endfloat}|\\
+% |\makeatletter|\\
+% |\input{efxmpl.cfg}|\\
+% |\makeatother|\\
+% \ldots
+% \end{quote}
+%
+% \begin{macrocode}
+%<*config>
+% \end{macrocode}
+%
+% We must, of course, have use of the rotating package.
+% \begin{macrocode}
+\RequirePackage{rotating}
+% \end{macrocode}
+%
+% We declare |side|\x|ways|\x|figure| and |side|\x|ways|\x|table| as
+% variants of the |figure| resp.~|table| environments.
+% \begin{macrocode}
+\DeclareDelayedFloatFlavor{sidewaysfigure}{figure}
+\DeclareDelayedFloatFlavor{sidewaystable}{table}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</config>
+% \end{macrocode}
+%
+% \emph{Note:}
+% If you would like to add support of given floating environments to
+% the \pkg{endfloat} package, please do not use configuration files
+% but |\Declare|\x|Delayed|\x|Float| and |\Declare|\x|Delayed|\x|Float|\x|Flavor|
+% instead.
+%
+% \Finale
+%
+\endinput