diff options
author | Karl Berry <karl@freefriends.org> | 2011-12-15 02:00:00 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-12-15 02:00:00 +0000 |
commit | 6743abd22bb9e36d2b76aced64c2e45d9fea450f (patch) | |
tree | 36710dabff9211ef4fd9cd25c200c41b418b0126 /Master/texmf-dist | |
parent | ca928612bb4637c1baa6889bf742d6708c216d3e (diff) |
endfloat (13dec11)
git-svn-id: svn://tug.org/texlive/trunk@24843 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/endfloat/README (renamed from Master/texmf-dist/doc/latex/endfloat/readme.enf) | 58 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/endfloat/endfloat.asc | 10 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/endfloat/endfloat.pdf | bin | 354077 -> 347763 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/endfloat/endfloat.drv | 56 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/endfloat/endfloat.dtx | 1611 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/endfloat/endfloat.ins | 26 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/endfloat/efxmpl.cfg | 64 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/endfloat/endfloat.sty | 429 |
8 files changed, 1310 insertions, 944 deletions
diff --git a/Master/texmf-dist/doc/latex/endfloat/readme.enf b/Master/texmf-dist/doc/latex/endfloat/README index 0c7634232dd..11665d484d1 100644 --- a/Master/texmf-dist/doc/latex/endfloat/readme.enf +++ b/Master/texmf-dist/doc/latex/endfloat/README @@ -1,28 +1,26 @@ ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -This is the readme file for the endfloat package v2.4i +This is the readme file for the endfloat package v2.5 This readme was modified on October 2, 1997 but without updated endfloat itself, instead to fix errors in this file and in endfloat.ins It was again modified on March 31, 2006, by Frank Küster -<frank@kuesterei.ch> to indicate the license clarification (see below). +<frank@kuesterei.ch> to indicate the license clarification (see below). + +It was again modified on December 4, 2011, by Axel Sommerfeldt +<axel.sommerfeldt@f-m.fm> to reflect the changes introduced +with version 2.5 of the endfloat package. Endfloat is a LaTeX package. Versions 2.1 and above require LaTeX2e. Accompanying files should be: - readme.txt (or readme.endfloat) This file + README This file endfloat.dtx Docstrip archive (essential) endfloat.ins (La)TeX batch file (if you don't know what it is then you DO need it) - endfloat.asc PGP separate signature for - endfloat.dtx (to check - authenticity) ============================================================ Overview: @@ -53,6 +51,11 @@ Then run LaTeX (at least) two more times to get the index in the table of contents. ========================================================= +Major changes in version 2.5 since 2.4: + New commands \DeclareDelayedFloat, \DeclareDelayedFloatVariant, + and \SetupDelayedFloat added. + New package options |tablesonly| and |figuresonly| added. + Major changes in version 2.4 since 2.3: Configuration file (with example of getting sidewaystable to work), Many new hooks for more user control. Internal changes. @@ -64,7 +67,7 @@ Major changes in version 2.3 and 2.2 since 2.1: generally. ================================================= -Maintainer: Jeff Goldberg (J.Goldberg@Cranfield.ac.uk) +Maintainer: Jeff Goldberg (jeffrey@goldmark.org) Original author: James Darrell McCauley Obtaining endfloat: The necessary files are kept on the Comprehensive @@ -75,18 +78,12 @@ find where endfloat lives. It is probably in macros/latex/contrib/supported/endfloat . Get the whole directory. -Experimental versions of the package may also be available at -ftp://ftp.cranfield.ac.uk/public/cc/cc047/TeX/sources . Note that -the experimental versions may have internal inconsistencies, may -fail to work altogether, and most certainly will have incorrect -documentation. - ================================================= License and copying: endfloat for LaTeX Copyright (C) 1992 Darrel McCauley - Copyright (C) 1994-1997 Jeffrey Goldberg <jeffrey@goldmark.org> + Copyright (C) 1994-2011 Jeffrey Goldberg <jeffrey@goldmark.org> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -104,16 +101,13 @@ License and copying: This distribution currently comprises the following files: -readme.enf +README COPYING -endfloat.asc endfloat.dtx endfloat.ins endfloat.pdf -license.e-mail -The license has been clarified by Jeffrey Goldberg in March 06, as -indicated in his GPG-signed e-mail included as license.e-mail +The license has been clarified by Jeffrey Goldberg in March 06 ================================================= No Warranty: @@ -123,23 +117,3 @@ some known bugs (see the documentation), there may very well be some unknown bugs. =================================================== -This is a PGP signed textfile. And the file endfloat.asc is a detached -signature for the file endfloat.dtx. - -For information about PGP try - http://www.pgp.net/pgp/ -or send mail with subject HELP PGP to - galactus@stack.urc.tue.nl - -My public key can be found on the key server (pgp-public-keys@keys.pgp.net) -and via my home page (http://www.cranfield.ac.uk/public/cc/cc047/) and -by finger (finger goldberg@csli.stanford.edu or goldberg@ny01.nytud.hu) - -Naturally, the 2006 version of this file is signed by me, Frank Küster. ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.1 (GNU/Linux) - -iD8DBQFELQT4+xs9YyJS+hoRAjLXAJ9vUgaspIksmBoi/n5r7LaPUxwpAwCdHc8L -uCJHAEuw7pnEsThYMvqV9cA= -=/898 ------END PGP SIGNATURE----- diff --git a/Master/texmf-dist/doc/latex/endfloat/endfloat.asc b/Master/texmf-dist/doc/latex/endfloat/endfloat.asc deleted file mode 100644 index 3c64cb2d6ab..00000000000 --- a/Master/texmf-dist/doc/latex/endfloat/endfloat.asc +++ /dev/null @@ -1,10 +0,0 @@ -PGP signature for endfloat.dtx version 2.4i ------BEGIN PGP MESSAGE----- -Version: 2.6.2i - -iQCVAwUBMHzBeRu6nIqxqP+5AQFlLgP/SPWWYcCBBJKla6PZO5+zrWFdzxHhc6eN -jYFOdqEgWNAXyXCpb5xgBWHgG/aFX+aLD0mI4yiuAC6BZz2NjvdF35nPg9i0+YYt -pYQVJ6q5arh8ZyuqOIolqSYehavvLFull7hmr2dPcFS88e9YYtuI+zhh/ey80QLp -zAE5b2i/+IQ= -=NBCW ------END PGP MESSAGE----- diff --git a/Master/texmf-dist/doc/latex/endfloat/endfloat.pdf b/Master/texmf-dist/doc/latex/endfloat/endfloat.pdf Binary files differindex 76b4add94bf..686aad9f704 100644 --- a/Master/texmf-dist/doc/latex/endfloat/endfloat.pdf +++ b/Master/texmf-dist/doc/latex/endfloat/endfloat.pdf diff --git a/Master/texmf-dist/source/latex/endfloat/endfloat.drv b/Master/texmf-dist/source/latex/endfloat/endfloat.drv deleted file mode 100644 index e051dcb680c..00000000000 --- a/Master/texmf-dist/source/latex/endfloat/endfloat.drv +++ /dev/null @@ -1,56 +0,0 @@ -%% -%% This is file `endfloat.drv', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% endfloat.dtx (with options: `driver') -%% -%% IMPORTANT NOTICE: -%% This is part of a set of tools (or better yet, experiments) written -%% by Jeff Goldberg (j.goldberg@Cranfield.ac.uk), who is writting this -%% not only for it utility value, but as part of the process of learning -%% LaTeX. These tools are far from perfect, and comments are welcome. -%% -%% The usual disclaimers apply: If it doesn't work right that's your -%% problem (but do let me know). -%% -%% The usual GNU-style conditions apply: If you change it, you take -%% the blame; if you pass it on, pass on all present condiditions; -%% -\def\filename{endfloat} -\def\fileversion{v2.4i} -\def\filedate{1995/10/11} -\def\docdate {1995/10/11} -%% \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 \~} -%% -%% Description: LaTeX style to put figures and tables at end of article -%% Keywords: LaTeX, style-option, float, figure, table -%% Authors: James Darrell McCauley <jdm5548@diamond.tamu.edu>, -%% Jeff Goldberg <j.goldberg@cranfield.ac.uk> -%% Maintainer: Jeff Goldberg <J.Goldberg@Cranfield.ac.uk> -%% Latest Version: Version 2.4i <October 1995> -\documentclass{ltxdoc} -\setlength\hfuzz{2pt} % ignore small overfulls -\CodelineIndex -\EnableCrossrefs -\begin{document} - \DocInput{endfloat.dtx} -\end{document} -\endinput -%% -%% End of file `endfloat.drv'. diff --git a/Master/texmf-dist/source/latex/endfloat/endfloat.dtx b/Master/texmf-dist/source/latex/endfloat/endfloat.dtx index a7ca418bf38..11f1d79f971 100644 --- a/Master/texmf-dist/source/latex/endfloat/endfloat.dtx +++ b/Master/texmf-dist/source/latex/endfloat/endfloat.dtx @@ -1,9 +1,9 @@ \def\filename{endfloat} -\def\fileversion{v2.4i} -\def\filedate{1995/10/11} -\def\docdate {1995/10/11} +\def\fileversion{v2.5b} +\def\filedate{2011/12/05} +\def\docdate{2011/12/05} % -% \CheckSum{596} +% \CheckSum{611} %% \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 @@ -25,9 +25,10 @@ %% Description: LaTeX style to put figures and tables at end of article %% Keywords: LaTeX, style-option, float, figure, table %% Authors: James Darrell McCauley <jdm5548@diamond.tamu.edu>, -%% Jeff Goldberg <j.goldberg@cranfield.ac.uk> -%% Maintainer: Jeff Goldberg <J.Goldberg@Cranfield.ac.uk> -%% Latest Version: Version 2.4i <October 1995> +%% Jeff Goldberg <jeffrey@goldmark.org>, +%% Axel Sommerfeldt <axel.sommerfeldt@f-m.fm> +%% Maintainer: Jeff Goldberg <jeffrey@goldmark.org> +%% Latest Version: Version 2.5 <November 2011> % \fi % % \DoNotIndex{\documentclass,\usepackage,\hfuzz,\small,\tt,\begin,\end} @@ -59,23 +60,28 @@ % \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 (J.Goldberg@Cranfield.ac.uk) +% \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. He is -% also the current maintainer.}} +% also the current maintainer.} +% \and Axel Sommerfeldt\thanks{Axel Sommerfeldt (axel.sommerfeldt@f-m.fm) +% is responsible for all modifications +% from version 2.5 upwards.} +% } % % \date{\docdate} % % \maketitle % % \begin{abstract} -% The purpose of this style is to put all figures on pages by themselves +% 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. @@ -106,6 +112,13 @@ % 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. 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 @@ -144,9 +157,9 @@ % \subsection{Loading} % \changes{v2.1}{1994/06/25}{Modify documentation text. jpg} % Just include the package in your preamble -% \begin{verbatim} -% \usepackage[...]{endfloat} -%\end{verbatim} +% \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 @@ -173,9 +186,9 @@ % The floats are processed using |\baselinestretch{1}| irrespective % of what is used in the document as a whole. This can be % reset to, say 1.4, by using -% \begin{verbatim} -% \AtBeginDelayedFloats{\renewcommand{\baselinestretch}{1.4}} -%\end{verbatim} +% \begin{quote} +% |\AtBeginDelayedFloats{\renewcommand{\baselinestretch}{1.4}}| +% \end{quote} % which is available from version 2.4. See section~\ref{sec:hooks} % for more discussion. % @@ -191,9 +204,11 @@ % 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.} +% \iffalse % commented out by Axel Sommerfeldt since not true for version >= 2.4 % However, it must be noted that what actually gets processed at the % end is always with the star, since in single column mode the % |*| is harmless. +% \fi % % \subsection{Options} \label{sec:options} % @@ -223,12 +238,14 @@ % |notabhead| & on & & no `Tables' section header\\ % |noheads| & & |nofighead|, |notabhead| & neither of the headers\\ % |fighead| & off & & `Figures' section header\\ -% |tabhead| & off & & `tables' 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| & & & Disregard figures\\ +% |figuresonly| & & & Disregard tables\\ % \hline % \end{tabular} % \end{table} @@ -255,18 +272,28 @@ % % Normally the figures at the end appear before the tables. % This can be changed by using the option \texttt{tablesfirst}. -% The default is \texttt{figuresfirst}.\footnote{It is hoped that +% The default is \texttt{figuresfirst}. +% \iffalse % Commented out by Axel Sommerfeldt +% \footnote{It is hoped that % future versions will allow new kinds of float or environment % to be delayed, in which case an entirely new mechanism will % need to be introduced for ordering their appearance.} +% \fi +% +% 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{verbatim} -%\documentclass[a4paper,12pt]{article} -%\usepackage[nolists,tablesfirst]{endfloat} -%... -%\begin{document} -%\end{verbatim} +% \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. @@ -280,19 +307,25 @@ % can be overruled by explicitly stating the |nofighead| option. % % \begin{enumerate} +% \iffalse % commented out by Axel Sommerfeldt % \item \label{rule:default} % When two entirely conflicting options are both specified % the one corresponding to the default wins. % (e.g., if both |markers| and |nomarkers| are specified then % |markers| will be in effect). Here the notion of default is % determined by inspecting the second column of table~\ref{tab:options}. +% \fi % \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 +% \iffalse % changed by Axel Sommerfeldt % The order in which the options appear is not relevant. +% \else +% The order in which the options appear is relevant. +% \fi % \item % If some of the obsolete commands for these options are used % all bets are off on these interactions. @@ -307,47 +340,45 @@ % R.Kappert@urc.kun.nl} % \DescribeMacro{\tableplace} % \DescribeMacro{\figureplace} +% \DescribeMacro{\floatplace} % Announcements in any language can be generated by -% using |\renewcommand| to redefine |\tableplace| and -% |\figureplace| +% 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{verbatim} -%\newcommand{\figureplace}{% -% \begin{center} -% [\figurename~\thepostfig\ about here.] -% \end{center}} -%\newcommand{\tableplace}{% -% \begin{center} -% [\tablename~\theposttbl\ about here.] -% \end{center}} -%\end{verbatim} +% \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 section~\ref{sec:extra} for more information). % -% WARNING! The name of the counters |posttbl| and |postfig| -% are very likely to change in future versions, possibly -% to |efloattttctr| and |efloatfffctr|, but whatever they -% change to, the names will be a function of either the -% file extension names |ttt| or |fff|, or the environment -% names |table| and |figure|. The purpose is so that the -% counters can be automatically created for new float types. +% 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{verbatim} -% \renewcommand{\figurename}{Abra} % if no babel -% \renewcommand{\figureplace}{% -% \begin{center} -% [A(z) \thepostfig.~\figurename itt legyen.] -% \end{center}} -%\end{verbatim} +% \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 to that in the usual way (via the \texttt{babel} -% package, or by redefining \verb"\figuresection" and \verb"tablesection" +% 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). % % \changes{v2.1}{1994/06/25}{Modify documentation text. jpg} @@ -362,18 +393,18 @@ % \DescribeMacro{\AtBeginTables} % \DescribeMacro{\AtBeginDelayedFloats} % If you wish to have some more control over how the tables and figures -% are processed, you can make use of the commands |\AtBeginDelayedFloats|, -% |\AtBeginFigures| and -% |\AtBeginTables|. If you wanted to ensure that the tables begin +% 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 -% |\AtBeginTables{\cleardoublepage}| in the preamble of your +% |\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 |\AtBeginTables| and |\AtBeginFigures| is processed after +% 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 @@ -399,9 +430,9 @@ % \item If you use the |lists| option you will get a list of all % tables and figures in the document. Not just the ones for % the current chapter. Using lists may have other odd consequences. -% \item It is your responsibility to set |\tableplace| and -% |\figureplace| correctly, as well as to possibly reset -% the counters |\theposttbl| and |\thepostfig| (section~\ref{sec:language}) +% \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| (section~\ref{sec:language}) % as you wish. If you do not reset them, they will continue to % increase throughout the document. % \end{enumerate} @@ -415,9 +446,9 @@ % \verb"\renewcommand" to redefine \verb"\efloatseparator" as you wish. % One possibility, suggested by a user, % is -% \begin{verbatim} -% \renewcommand{\efloatseparator}{\mbox{}} -%\end{verbatim} +% \begin{quote} +% |\renewcommand{\efloatseparator}{\mbox{}}| +% \end{quote} % It makes most sense to place such a redefinition in the configuration % file (see section~\ref{sec:extra}). % @@ -442,7 +473,7 @@ % is found, it will be included after \pkg{endfloat} is loaded. % The purpose of this configuration file is to allow the user to % include additional definitions related to \pkg{endfloat}. -% For example, any redefinition of \verb"\figureplace" can +% 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 @@ -458,47 +489,145 @@ % The configuration file can also provided % so that the user could specify environments other % than |figure| and |table| (and their |*|-ed counterparts) which can -% be delayed until the end of the document. At the moment that would +% be delayed until the end of the document. +% \iffalse % commented out by Axel Sommerfeldt +% At the moment that would % be very difficult to do with environments which are not processed with % tables of figures (ie, those environments that should have a different % ``list-of'', different counters, and different temporary files from % those used by tables and figures); but the plan is to make even that % ever more easier. +% \fi % % \subsection{Modified figures and tables} % % As stated in section~\ref{sec:envnames}, \pkg{endfloat} will % utterly fail if one does something like -% \begin{verbatim} -%\newenvironment{foo}{...\begin{table}...} -% {...\end{table}...} -%\end{verbatim} +% \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}|. % +% \iffalse % However, for those who know \LaTeX\ internals fairly well, it is % not impossible to tell \pkg{endfloat} to also treat the |foo| environment % as a delayed table. It is however, not easy, although my goal % is to make this easier in subsequent versions. It will take % a fair amount of understanding of the implementation to see how to % do this. And the best thing to do is to follow an example. +% \else +% 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. +% \fi % -% \subsection{Sideways figures and tables} +% \subsection{Environments based on figures and tables} % % The \pkg{rotating} package\cite{RahBar:rotating} % contains definitions of environments -% |sidewaysfigure| and |sidewaystable|,\footnote{These -% require support from the dvi driver, such as \texttt{dvips}.} +% |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}. Appropriate redefinitions of these so that -% they work with \pkg{endfloat} +% use \pkg{endfloat}. +% \iffalse % changed by Axel Sommerfeldt +% \par +% Appropriate redefinitions of these so that they work with \pkg{endfloat} % are given in the file \file{efxmpl.cfg}. If you wish to use % that file, you should include it as a package (possibly renamed) % \emph{after} you include \pkg{endfloat}. Or you could simple rename -% it to \file{endfloat.cfg} and \pkg{endfloat} will include it automatically. -% +% it to \file{endfloat.cfg} and \pkg{endfloat} will include it automatically.\par % For a description of those commands see section~\ref{sec:config}. +% \else +% 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 of |\Declare|\x|Delayed|\x|Float|\x|Flavor| +% here which only redefines |long|\x|table| but leaves the unnumbered +% |long|\x|table*| intact. +% \fi +% +% \subsection{Other floating environments} +% +% 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} @@ -520,11 +649,28 @@ % 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.2c$ 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} -% The simplest thing is to provide a simple redefinition of |\@makecaption|. -% You should model your redefinition after the one described in -% \file{classes.dtx} for your release of \LaTeX\ instead of blindly +% 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. @@ -536,26 +682,37 @@ % very narrow \texttt{\bs textwidth}, % then you will have to use a more complicated version.} % Your redefinition of |\@makecaption| may look like -% \begin{verbatim} -%\renewcommand{\@makecaption}[2]{% -% \vskip\abovecaptionskip -% \hbox to \hsize{\hfil #1\hfil}% -% \vskip\belowcaptionskip} -%\end{verbatim} +% \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{verse}\ttfamily -% \bs caption[\textit{short caption text}]\{\textit{full caption text}\} -%\end{verse} +% \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.2f$ 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: +% \iffalse % First save the original definition of |\caption| -% \begin{verbatim} -% \let\OrigCaption\caption -% \renewcommand{\caption}[2][X]{\OrigCaption[#2]{}} -%\end{verbatim} +% \fi +% \begin{quote} +% |\let\OrigCaption\caption|\\ +% |\renewcommand{\caption}[2][X]{\OrigCaption[#2]{}}| +% \end{quote} % % \subsubsection{Eliminating numbers from lists of tables and figures} % @@ -574,24 +731,24 @@ % The real only trick here is that |\l@figure| is defined to take % two arguments, but the second is never used. The way it will be % called will give it something like -% \begin{verbatim} -% {\numberline {3} Caption of that figure}{85} -%\end{verbatim} +% \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{verbatim} -%\renewcommand*{\l@figure}[2]{% -% \setlength\@tempdima{2.3em}% -% \noindent\hspace*{1.5em}#1\hfil\newline } -%\end{verbatim} +% \begin{quote} +% |\renewcommand*{\l@figure}[2]{%|\\ +% | \setlength\@tempdima{2.3em}%|\\ +% | \noindent\hspace*{1.5em}#1\hfil\newline }| +% \end{quote} % And for tables: -% \begin{verbatim} -%\let\l@table\l@figure -%\end{verbatim} +% \begin{quote} +% |\let\l@table\l@figure| +% \end{quote} % \end{macro} % \end{macro} % @@ -614,9 +771,9 @@ % % When floats are being read, \LaTeX\ is in verbatim mode. Among % other things, this means that the lines like -% \begin{verbatim} -%\end{figure} -%\end{verbatim} +% \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 @@ -634,9 +791,9 @@ % names be used. That is, you cannot simply define a new environment which % calls \texttt{figure} or \texttt{table} since the former must % look for the literal string -% \begin{verbatim} -% \end{figure} -%\end{verbatim} +% \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' @@ -652,6 +809,7 @@ % what I have done for \verb"\sidewaystable" in the sample configuration % file (section~\ref{sec:extra}). % +% \iffalse % commented out by Axel Sommerfeldt % Steps are slowly being taken to allow for new delayed environments % to be added. That will be version~3, but I (jpg) still have % a long way to go to get there. Each new minor release of @@ -665,6 +823,7 @@ % word ``float'' may not be the best expression, since there will % be no reason to expect that only floating environments are % delayed. +% \fi % % \subsection{The Environment's environment}\label{sec:envenv} % \changes{v2.1b}{1994/07/03}{Modify documentation -jpg} @@ -674,25 +833,25 @@ % processed at the end of the document, it will be the state of % \TeX\ at the end which will matter. For example, a document % with something like -% \begin{verbatim} -% \newcommand{\XXX}{YYY} -% ... -% \begin{table} -% ... -% ... \XXX ... -% ... -% \end{table} -% ... -% \renewcommand{\XXX}{ZZZ} -% ... -% \end{document} -%\end{verbatim} +% \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, |\AtBeginDelayedFloats|, |\AtBeginTables|, or -% |\AtBeginFigures|, which are discussed in section~\ref{sec:hooks}. +% 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 section~\ref{sec:hooks}. % % \subsection{Verbatim in delayed floats}\label{sec:verbatim} % @@ -733,6 +892,7 @@ % \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 @@ -743,11 +903,11 @@ % like |\ExecuteAtEndDocument| would be called by the user after % all such packages are loaded, with tags for each thing in the % packages, so something like -% \begin{verbatim} -% \usepackage{lastpage} -% \usepackage{endfloat,xyzzy} -% \ExecuteAtEndDocument{endfloat,xyzzy,lastpage} -%\end{verbatim} +% \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 @@ -759,7 +919,7 @@ % to comply with it. Until then % I will include a message % which begins with \texttt{AED} -% in every usage of |\AtEndDocument|, and try to minimize any side +% 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} % @@ -768,7 +928,7 @@ % \changes{v2.1b}{1994/07/03}{Modify documentation -jpg} % % One option is to not have packages like \pkg{endfloat} actually call -% |\AtEndDocument|, but merely define a user level command which +% |\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. % @@ -862,22 +1022,30 @@ % % \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. +% in class \cls{elsart}. But this is because Elsevier does +% not want those lists. Elsevier, bless them, does not want +% floats at the end for submissions to its journals. So +% there is no reason to use \pkg{endfloat} (with or without lists) +% with class \cls{elsart}. Let's hope that other publishers +% will follow Elsevier's lead in understanding that the +% submission rules which were created were created for a reason, +% and when those reasons no longer apply, the rules should be changed. +% +% I look forward to the day when \pkg{endfloat} will serve +% no purpose. % % \item The \pkg{float} package appears to work in my limited tests. -% Although, only tables and figures get moved to end. -% The success is due to the robustness with which \pkg{float} -% is written. +% \iffalse % commented out by Axel Sommerfeldt +% Although, only tables and figures get moved to end. +% The success is due to the robustness with which \pkg{float} +% is written. +% \fi +% +% \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} % @@ -890,7 +1058,7 @@ % do what you want. If something goes wrong look over % section~\ref{sec:caveats}. But if you need to get in touch % with the maintainer, you should send email to me at -% \texttt{J.Goldberg@Cranfield.ac.uk}. +% \texttt{jeffrey@goldmark.org}. % % \section{History}\label{sec:history} % \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg} @@ -918,11 +1086,50 @@ % guts are adapted from % \texttt{comment.sty} by Victor Eijkhout (eijkhout@csrd.uiuc.edu). % So, although Jeff -% Goldberg (J.Goldberg@Cranfield.ac.uk) now maintains this, he should not +% Goldberg (jeffrey@goldmark.org) now maintains this, he should not % be credited with writing the package, but only with extending and % maintaining it. He has contributed enough so that by version~2.4 % he claimed co-authorship. % +% \subsection{Version 2.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. +% 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. +% +% \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 @@ -932,9 +1139,9 @@ % % \item % This version adds various user hooks, both as commands: -% |\AtBeginFigures|, |\AtBeginTables|, and -% |\AtBeginDelayedFloats| (section~\ref{sec:hooks}), -% and |\efloatseparator| (section~\ref{sec:separator}). +% |\At|\x|Begin|\x|Figures|, |\At|\x|Begin|\x|Tables|, and +% |\At|\x|Begin|\x|Delayed|\x|Floats| (section~\ref{sec:hooks}), +% and |\efloat|\x|separator| (section~\ref{sec:separator}). % % \item % Most importantly, there is the addition of a configuration file @@ -1096,14 +1303,15 @@ % \section{Wish list} % % I doubt that I will really work on this wish list in the near future -% but in addition to solving the know bugs, there are two major sorts of -% changes that I (jpg) would like to see. -% \begin{enumerate} +% 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. +% \iffalse % commented out by Axel Sommerfeldt % \item % Integrate with the |float| package which (among other things) % enables the user to define new floating environments. @@ -1111,7 +1319,8 @@ % the end, not all types of potential floats. Nor does it allow % the user to specify which of the two types it does recognize % to be placed at the end. -% \end{enumerate} +% \fi +% \end{itemize} % % \begin{thebibliography}{1} % @@ -1134,7 +1343,19 @@ % \bibitem{Lingnau:float} % Anselm Lingnau. % \newblock An Improved Environment for Floats -% \newblock June 1994 (version~1.2) +% \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} @@ -1145,6 +1366,7 @@ % \end{thebibliography} % %\StopEventually{\PrintIndex\PrintChanges} +% \clearpage % % \section{The documentation driver file} % @@ -1159,9 +1381,9 @@ \setlength\hfuzz{2pt} % ignore small overfulls \CodelineIndex \EnableCrossrefs -%\DisableCrossrefs % Say \DisableCrossrefs if index is ready -%\RecordChanges % Gather update information -%\OnlyDescription % comment out for implementation details + %\DisableCrossrefs % Say \DisableCrossrefs if index is ready + %\RecordChanges % Gather update information + %\OnlyDescription % comment out for implementation details \begin{document} \DocInput{endfloat.dtx} \end{document} @@ -1171,6 +1393,7 @@ % % \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 @@ -1185,7 +1408,6 @@ % \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 @@ -1206,133 +1428,106 @@ % and Brian Junker (see change log below). \emph{Thanks guys!} % % \subsection{Define warning message} +% % Since I, JPG, am making the commands options, I want to warn users % to use the options, since these commands should be discontinued % in future versions. +% % \begin{macrocode} -\newcommand{\ef@OldCmd}[2]{\PackageWarning{endfloat} +\newcommand{\ef@OldCmd}[2]{\PackageWarning{endfloat}% {The command \protect#1 is obsolete and will be\MessageBreak omitted from future releases of the endfloat package.\MessageBreak Use the package option `#2' instead.}} % \end{macrocode} +% % \subsection{Flags} +% % Put all of the newifs for the user options and flags here. +% 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 % \end{macrocode} % % \subsubsection{Default values} -% Set default values of all of the flags here. +% +% Set default values of all of the (global) flags here. +% % \begin{macrocode} \@domarkerstrue -\@tablisttrue -\@figlisttrue -\@tabheadfalse +\@figlisttrue % bj \@figheadfalse \@tablesfirstfalse +\efloat@figurestrue % as +\efloat@tablestrue % as % \end{macrocode} % -% \begin{macro}{\markersintext} -% \begin{macro}{\nomarkersintext} -% First set up flags and defaults. First set for flagging -% whether markers appear in text. -% \changes{v1.99}{1992/05/27}{extensive changes by bj} -% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg} -% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg} -% \changes{v2.2a}{1994/10/07}{Create new options} +% \begin{macro}{\SetupDelayedFloat} +% \changes{v2.5}{2011/11/26}{This command added. as} +% While global flags will be set using package options, +% environment specific flags will be set with |\Setup|\x|Delayed|\x|Float|. % \begin{macrocode} -\DeclareOption{nomarkers}{\@domarkersfalse } -\DeclareOption{markers}{\@domarkerstrue } +\RequirePackage{keyval} % \end{macrocode} % \begin{macrocode} -\newcommand{\markersintext}{\@domarkerstrue - \ef@OldCmd{\markersintext}{markers}} -\newcommand{\nomarkersintext}{\@domarkersfalse - \ef@OldCmd{\nomarkersintext}{nomarkers}} +\newcommand*\SetupDelayedFloat[2]{% + \def\efloat@type{#1}% + \setkeys{endfloat}{#2}} % \end{macrocode} -% -% \end{macro} -% \end{macro} -% \begin{macro}{\dotablist} -% \begin{macro}{\notablist} -% Options for creating lists of Tables \ldots -% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg} -% \changes{v1.99}{1992/05/27}{extensive changes by bj} -% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg} -% % \begin{macrocode} -\newcommand{\dotablist}{\@tablisttrue \ef@OldCmd{\dotablist}{tablist}} -\newcommand{\notablist}{\@tablistfalse \@tabheadtrue - \ef@OldCmd{\notablist}{notablist}} +\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} -% \end{macro} -% \end{macro} -% \begin{macro}{\dofiglist} -% \begin{macro}{\nofiglist} -% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg} -% \changes{v1.99}{1992/05/27}{extensive changes by bj} -% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg} -% \ldots and Figures % \begin{macrocode} -\newcommand{\dofiglist}{\@figlisttrue \ef@OldCmd{\dofiglist}{figlist}} -\newcommand{\nofiglist}{\@figlistfalse \@figheadtrue - \ef@OldCmd{\nofiglist}{nofiglist}} +\newcommand*\efloat@setkey{% + \@expandtwoargs\efloat@@setkey\efloat@type} +\newcommand*\efloat@@setkey[3]{% + \@ifundefined{ef@ext@#1}% + {\PackageError{endfloat}% + {Unknown environment `#1'}% + {Only environments known to the `endfloat' package are allowed here.}}% + {\efloat@setflag{#1#2}{#3}}} % \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{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} -\DeclareOption{nolists}{\@tablistfalse \@figlistfalse } -\DeclareOption{lists}{\@tablisttrue \@figlisttrue } +\newcommand*\efloat@ifflag[1]{% + \@nameuse{ef@if@#1}} % \end{macrocode} -% Now the more specific ones, which must come after the more -% general options to get the right interactions between semi-conflicting -% options. -% \begin{macrocode} -\DeclareOption{notablist}{\@tablistfalse } -\DeclareOption{nofiglist}{\@figlistfalse } -\DeclareOption{tablist}{\@tablisttrue } -\DeclareOption{figlist}{\@figlisttrue } -% \end{macrocode} -% -% The \texttt{notablist} and \texttt{nofiglist} options still leave -% a section header at the beginning of the tables and figures. +% \end{macro} % -% Note again the role that order plays, by placing |fighead| after -% |noheads| it ensures that |fighead| will be in effect if both -% are specified. -% \begin{macrocode} -\DeclareOption{heads}{\@figheadtrue \@tabheadtrue } -\DeclareOption{noheads}{\@figheadfalse \@tabheadfalse } -\DeclareOption{fighead}{\@figheadtrue } -\DeclareOption{tabhead}{\@tabheadtrue } -\DeclareOption{nofighead}{\@figheadfalse } -\DeclareOption{notabhead}{\@tabheadfalse } -% \end{macrocode} -% Also need option for putting tables first +% \begin{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} -\DeclareOption{tablesfirst}{\@tablesfirsttrue } -\DeclareOption{figuresfirst}{\@tablesfirstfalse } -% \end{macrocode} -% Other option stuff -% \begin{macrocode} -\DeclareOption*{% - \PackageWarning{endfloat}{Unknown option `\CurrentOption'}} -\ProcessOptions +\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 @@ -1340,51 +1535,51 @@ % I have still a very long way to go, but common code created % for version 2.3 is here. % -% \begin{macro}{\efloat@openpost} +% 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} -\def\efloat@newwrite#1{% +\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{verbatim} -% \immediate\openout\efloat@postttt=\jobname.ttt\relax -%\end{verbatim} -% while also calling |\ef@setct{ttt}{1}| to set a flag +% \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} % \begin{macrocode} -\def\efloat@openpost#1{\expandafter\immediate\expandafter\openout +\newcommand*\efloat@openpost[1]{% + \expandafter\immediate\expandafter\openout \csname efloat@post#1\endcsname =\jobname.#1\relax - \ef@setct{#1}{1} + \efloat@setflag{#1open}{true}% \message{(\jobname.#1)}} % \end{macrocode} -% \begin{macro}{\ef@setct} -% \begin{macro}{\ef@newct} -% |\ef@newct{ttt}| will create a new counter called |\@ef@tttopen| -% and |\ef@setct{ttt}{1}| would set it to 1. -% \begin{macrocode} -\def\ef@newct#1{% - \expandafter \newcount \csname @ef@#1open\endcsname} -\def\ef@setct#1#2{\expandafter\global\csname @ef@#1open\endcsname=#2\relax} -% \end{macrocode} -% \end{macro} % \end{macro} +% +% \begin{macro}{\efloat@condopen} % Conditionally open a file +% \changes{v2.5a}{2011/12/04}{\cs{ifnum} replaced by \cs{efloat@ifflag}. as} % \begin{macrocode} -\def\efloat@condopen#1{% - \expandafter\ifnum \csname @ef@#1open\endcsname>0 \relax \else - \efloat@openpost{#1}\fi} +\newcommand*\efloat@condopen[1]{% + \efloat@ifflag{#1open}{}{\efloat@openpost{#1}}} % \end{macrocode} +% \end{macro} +% +% \begin{macro}{\efloat@iwrite} % Immediate write to one of these files. % \begin{macrocode} -\def\efloat@iwrite#1#2{% - \expandafter\immediate\expandafter\write\csname efloat@post#1\endcsname - {#2}} +\newcommand\efloat@iwrite[1]{% + \expandafter\immediate\expandafter\write\csname efloat@post#1\endcsname} % \end{macrocode} % \end{macro} % @@ -1399,78 +1594,392 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\postfig} -% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg} -% Counters -% \changes{v1.99}{1992/05/27}{extensive changes by bj} +% \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} -\newcounter{postfig} +\newcommand*{\ef@makeinnocent}[1]{\catcode`#1=12 } % \end{macrocode} % \end{macro} % -% Code for opening the |\jobname.fff| +% \begin{macro}{\figurename} +% \begin{macro}{\tablename} +% Make sure that |\tablename| and |\figurename| are defined. % \begin{macrocode} -\efloat@newwrite{fff} -\ef@newct{fff} +\providecommand{\figurename}{Figure} +\providecommand{\tablename}{Table} % \end{macrocode} -% \begin{macro}{\posttbl} +% \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.1b}{1994/07/03}{Modify documentation -jpg} -% \changes{v2.3c}{1995/03/08}{Remove some tbl specific stuff -jpg} -% Same stuff but for tables -% \begin{macrocode} -\newcounter{posttbl} +% \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} % -% Commands for opening |\jobname.ttt| -% This sets up new write for tables +% \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} % \begin{macrocode} -\efloat@newwrite{ttt} -\ef@newct{ttt} +\newcommand*\DeclareDelayedFloat{% + \@ifstar{\efloat@declare{*}}{\efloat@declare{}}} +\@onlypreamble\DeclareDelayedFloat % \end{macrocode} -% \begin{macro}{\ef@makeinnocent} +% \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} +% Flags: Set default values of all of the flags here. +% \begin{macrocode} + \efloat@setflag{#2list}{@figlist}% + \efloat@setflag{#2head}{@fighead}% +% \end{macrocode} +% Counters +% \changes{v1.99}{1992/05/27}{extensive changes by bj} % \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 } + \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}% + \efloat@setflag{#3open}{false}% +% \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}}}{}% + \@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} + \@namedef{efloat@#2@hook}{}% + \edef\@tempb{\def\noexpand\@tempa{\@car#2\@nil}}% + \uppercase\expandafter{\@tempb}% + \edef\@tempb{% + \noexpand\g@addto@macro\noexpand\@tempa{\@cdr#2\@nil}}% + \@tempb + \@namedef{AtBegin\@tempa s}{% + \expandafter\g@addto@macro\csname efloat@#2@hook\endcsname}% + \@namedef{AtBegin\@tempa es}{% + \expandafter\g@addto@macro\csname efloat@#2@hook\endcsname}% +% \end{macrocode} +% \begin{macrocode} + \@namedef{process#2s}{\efloat@process{#3}{#2}}% + \@namedef{process#2es}{\@nameuse{process#2s}}% +% \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}{\figureplace} -% \begin{macro}{\tableplace} -% Place markers. -% \changes{v1.0b}{1992/03/10}{adaptation for LaTeX 2.09 and -% international namegiving by Ronald Kappert -% R.Kappert@urc.kun.nl} +% +% \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} +% \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]{% + \@ifundefined{ef@ext@#3}% + {\PackageError{endfloat}% + {Unknown environment `#3'}% + {Only environments known to the `endfloat' package are allowed here.}}% + {\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@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} -% -% \begin{macro}{\figurename} -% \begin{macro}{\tablename} -% Make sure that |\tablename| and |\figurename| are defined. +% \changes{v2.2a}{1994/10/07}{Create new options} % \begin{macrocode} -\providecommand{\figurename}{Figure} -\providecommand{\tablename}{Table} +\DeclareOption{nomarkers}{\@domarkersfalse} +\DeclareOption{markers}{\@domarkerstrue} +% \end{macrocode} +% \begin{macrocode} +\newcommand{\markersintext}{\@domarkerstrue + \ef@OldCmd{\markersintext}{markers}} +\newcommand{\nomarkersintext}{\@domarkersfalse + \ef@OldCmd{\nomarkersintext}{nomarkers}} % \end{macrocode} % \end{macro} % \end{macro} +% +% \begin{macro}{\dotablist} +% \begin{macro}{\notablist} +% Options for creating lists of Tables \ldots +% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg} % \changes{v1.99}{1992/05/27}{extensive changes by bj} +% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg} +% \changes{v2.5}{2011/11/26}{We use \cs{SetupDelayedFloat} now. as} % \begin{macrocode} -\newcommand{\figureplace}{% - \begin{center} - [\figurename~\thepostfig\ about here.] - \end{center}} -\newcommand{\tableplace}{% - \begin{center} - [\tablename~\theposttbl\ about here.] - \end{center}} +\newcommand{\dotablist}{% + \SetupDelayedFloat{table}{list=true}% + \ef@OldCmd{\dotablist}{tablist}} +\newcommand{\notablist}{% + \SetupDelayedFloat{table}{list=false,head=true}% + \ef@OldCmd{\notablist}{notablist}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\dofiglist} +% \begin{macro}{\nofiglist} +% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg} +% \changes{v1.99}{1992/05/27}{extensive changes by bj} +% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg} +% \changes{v2.5}{2011/11/26}{We use \cs{SetupDelayedFloat} now. as} +% \ldots and Figures +% \begin{macrocode} +\newcommand{\dofiglist}{% + \SetupDelayedFloat{figure}{list=true}% + \ef@OldCmd{\dofiglist}{figlist}} +\newcommand{\nofiglist}{% + \SetupDelayedFloat{figure}{list=false,head=true}% + \ef@OldCmd{\nofiglist}{nofiglist}} % \end{macrocode} % \end{macro} % \end{macro} +% +% Now we make options |tablist| and |notablist| and |figlist| and +% |nofiglist|. Note that options will be processed in order of +% the |\DeclareOption| commands in this file. So by placing +% |list| after |nolist| we ensure that if both are specified, |list| +% is in effect. +% +% First two new options +% \begin{macrocode} +\DeclareOption{nolists}{\@figlistfalse \efloat@SetOption{list=false}} +\DeclareOption{lists}{\@figlisttrue \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}{\@figheadtrue \efloat@SetOption{head=true}} +\DeclareOption{noheads}{\@figheadfalse \efloat@SetOption{head=false}} +% \end{macrocode} +% \begin{macrocode} +\DeclareOption{fighead}{\efloat@Setup{figure}{head=true}} +\DeclareOption{tabhead}{\efloat@Setup{table}{head=false}} +\DeclareOption{nofighead}{\efloat@Setup{figure}{head=true}} +\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} +% Other option stuff +% \begin{macrocode} +\DeclareOption*{% + \PackageWarning{endfloat}{Unknown option `\CurrentOption'}} +% \end{macrocode} +% Process (global) options +% \begin{macrocode} +\ProcessOptions* +% \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} % @@ -1478,22 +1987,14 @@ % get unmodified code into files. % \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg} % \begin{macrocode} -%\def\@gobbleuntilnext[#1]{} % Not used (jpg) -\let\@bfig\figure % bj -\let\@btab\table % bj \let\efloat@float\relax % \end{macrocode} % -% \begin{macro}{\figure} +% \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 -% \changes{v2.0}{1992/06/02}{Corrected problem of extra blank spaces in -% the output when nomarkersintext was in effect -% (bug reported by schultz@unixg.ubc.ca). -% jdm} % -% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg} % As mentioned by the jdm above, the following is based % on \texttt{comment.sty}. It appears that the idea is to % turn off all control sequence processing and read in from @@ -1501,269 +2002,248 @@ % |\end{figure}|. Thus the actual name of the environment % is hardcoded into the use of the macros % (see section~\ref{sec:envnames}). ---jpg] -% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg} % -% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg} -% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg} % \changes{v1.1}{1992/03/13}{verified that floats were % used before a section was % created for them. jdm} % \changes{v1.2}{1992/03/14}{corrected typo that may have caused figures not % to be printed. jdm} -% % \changes{v1.99}{1992/05/27}{extensive changes by bj} +% \changes{v2.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} % \begin{macrocode} -\def\figure{% +\newcommand*\@efloat[1]{% + \expandafter\@@efloat\expandafter{\csname ef@ext@#1\endcsname}{#1}} % \end{macrocode} -% If we have already done one table then the file we write to -% is already open, and there is nothing to do, else open it up. % \begin{macrocode} - \efloat@condopen{fff} +\newcommand*\@@efloat[3]{% % \end{macrocode} -% -% We have read a |\begin{figure}| to get here. We need to write that -% into the file. -% -% -% I (jpg) would add the |[htb]| parameters to what -% gets written, but that leaves any float specifiers that had -% been employed by the user wandering around in the floated material. -% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg} % \begin{macrocode} - \efloat@iwrite{fff}{\string\begin{figure*}}% +% 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} % Since the figures are not actually processed until much later, we don't % use \LaTeX's figure numbering mechanism, but we use our own. Also % put marker in text (if option set). In the future, I may combine % the counter for the markers and the counter used as a flag for % whether the file is open into one thing. -% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg} % \begin{macrocode} - \if@domarkers% - \addtocounter{postfig}{1}% % bj - \figureplace% % bj - \fi% + \if@domarkers + \stepcounter{post#2}% % bj + \@nameuse{#2place}% % bj + \fi % \end{macrocode} -% \begin{macro}{\@currenvir} % |\@currenvir| (current environment) it set to fool % latex into expecting the end of this environment % to match the environment name. It will be used more extensively % when dealing with % the problem discussed in section~\ref{sec:envnames}. -% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg} % \begin{macrocode} - \def\@currenvir{efloat@float}% + \def\@currenvir{efloat@float}% % \end{macrocode} -% \end{macro} % Now we set up catcodes for reading in text without processing % things. But need to make |^^M| special since we want to read % line by line. -% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg} % \begin{macrocode} - \begingroup% - \let\do\ef@makeinnocent \dospecials% - \ef@makeinnocent\^^L% and whatever other special cases - \endlinechar`\^^M \catcode`\^^M=12 \ef@xfigure}% + \begingroup + \let\do\ef@makeinnocent \dospecials + \ef@makeinnocent\^^L% and whatever other special cases + \endlinechar`\^^M \catcode`\^^M=12 % +% \end{macrocode} +% Patch |\ef@endfiguretest| so it contains the actual environment name. +% \begin{macrocode} + \efloat@patch\ef@endfiguretest{#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{\ef@xfigure{#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] +% |\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} -\def\efloat@foundend#1#2{\def\next{\endgroup\end{efloat@float}% - \efloat@iwrite{#1}{\string\end{#2}}% - \efloat@iwrite{#1}{\string\efloatseparator}% - \efloat@iwrite{#1}{ }}}% +\newcommand*\efloat@foundend[2]{% + \efloat@iwrite{#1}{\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} +% \begin{macrocode} +\newcommand*\efloat@found@end[1]{% + \def\next{\endgroup\end{efloat@float}% + \efloat@iwrite{#1}{\string\efloatseparator}% + \efloat@iwrite{#1}{ }}}% +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\ef@xfigure} % |\ef@xfigure| reads line by line, checking whether each line % is the |\end{figure}|. If it is, then write out end stuff % to the file. Otherwise write out read in line to the % file and do the |\next| line. -% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg} % \changes{v2.1}{1994/06/25}{Modify documentation text. jpg} +% \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} % \begin{macrocode} {\catcode`\^^M=12 \endlinechar=-1 % - \gdef\ef@xfigure#1^^M{\def\test{#1}% + \long\gdef\ef@xfigure#1#2^^M{\def\test{#2}% % \end{macrocode} -% Test for |\end{figure}| +% We have a line of text in the +% body of the figure which should be written to the file. % \begin{macrocode} - \ifx\test\ef@endfiguretest - \efloat@foundend{fff}{figure*} + \efloat@iwrite{#1}{#2}% % \end{macrocode} -% Test for |\end{figure*}| -% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg} +% Test for |\end{figure}| % \begin{macrocode} - \else\ifx\test\ef@enddblfiguretest - \efloat@foundend{fff}{figure*} + \ifx\test\ef@endfiguretest + \efloat@found@end{#1}% % \end{macrocode} -% Finally, if none of the above, we have a line of text in the -% body of the figure which should be written to the file. -% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg} % \begin{macrocode} - \else% - \efloat@iwrite{fff}{#1}% - \let\next\ef@xfigure% - \fi \fi \next}% -}% + \fi \next}} % \end{macrocode} -% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg} +% \end{macro} +% % \begin{macro}{\ef@endfiguretest} -% \begin{macro}{\ef@enddblfiguretest} +% \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} % \begin{macrocode} {\escapechar=-1% - \xdef\ef@endfiguretest{\string\\end\string\{figure\string\}}% - \xdef\ef@enddblfiguretest{\string\\end\string\{figure*\string\}}% -}% -% \end{macrocode} -% \end{macro} -% \end{macro} -% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg} -% \end{macro} -% \begin{macro}{\table} -% |\table| is the same as |\figure|. But I am not going to -% document it as much. -% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg} -% \changes{v1.99}{1992/05/27}{extensive changes by bj} -% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg} -% \begin{macrocode} -\def\table{\efloat@condopen{ttt} - \efloat@iwrite{ttt}{\string\begin{table*}}% - \if@domarkers - \addtocounter{posttbl}{1} % bj - \tableplace % bj - \fi - \def\@currenvir{efloat@float}% - \begingroup - \let\do\ef@makeinnocent \dospecials - \ef@makeinnocent\^^L% and whatever other special cases - \endlinechar`\^^M \catcode`\^^M=12 \ef@xtable} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\ef@xtable} -% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg} -% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg} -% \begin{macrocode} -{\catcode`\^^M=12 \endlinechar=-1 % - \gdef\ef@xtable#1^^M{\def\test{#1} - \ifx\test\ef@enddbltabletest - \efloat@foundend{ttt}{table*} - \else\ifx\test\ef@endtabletest - \efloat@foundend{ttt}{table*} - \else - \efloat@iwrite{ttt}{#1}% - \let\next\ef@xtable - \fi \fi \next} + \xdef\ef@endfiguretest{\string\\end\string\{X\string\}} } % \end{macrocode} -% \end{macro} -% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg} % \begin{macrocode} -{\escapechar=-1 - \xdef\ef@enddbltabletest{\string\\end\string\{table*\string\}} - \xdef\ef@endtabletest{\string\\end\string\{table\string\}} -} -% \end{macrocode} -% Define starred floats. -% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg} -% \begin{macrocode} -\@namedef{figure*}{\figure} -\@namedef{table*}{\table} +\newcommand*\efloat@patch[2]{% + \def\x##1X##2\@nil{\def#1{##1#2##2}}% + \expandafter\x#1\@nil} % \end{macrocode} +% \end{macro} +% % \subsection{Processing Figures and Tables} -% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg} -% \begin{macrocode} -\providecommand{\figuresection}{Figures} -\providecommand{\tablesection}{Tables} -% \end{macrocode} -% \begin{macro}{\AtBeginFigures} -% \begin{macro}{\AtBeginTables} +% % \begin{macro}{\AtBeginDelayedFloats} % Here we set-up the hooks for getting stuff into |\process...| % commands easily. The command |\g@addto@macro| is defined % in \file{classes.dtx}. I was about to write it myself, when I realized that % it must already exist for things like |\AtBeginDocument|. % \begin{macrocode} -\newcommand{\processfigures@hook}{\@empty} -\def\AtBeginFigures{\g@addto@macro\processfigures@hook} -\newcommand{\processtables@hook}{\@empty} -\def\AtBeginTables{\g@addto@macro\processtables@hook} -\newcommand{\processdelayedfloats@hook}{\@empty} +\newcommand{\processdelayedfloats@hook}{} \def\AtBeginDelayedFloats{% \g@addto@macro\processdelayedfloats@hook} -\newcommand{\processotherdelayedfloats}{\@empty} +\newcommand{\processotherdelayedfloats}{} % \end{macrocode} -% \end{macro}\end{macro}\end{macro} -% \begin{macro}{\processfigures} +% \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} % \begin{macrocode} -\def\processfigures{% +\newcommand*\efloat@process[2]{% % \end{macrocode} -% First test to see if there are any figures to process. If so -% do it. +% First test to see if there are any figures to process. +% If so do it. % \begin{macrocode} - \expandafter\ifnum \csname @ef@fffopen\endcsname>0 + \efloat@ifflag{#1open}{% % \end{macrocode} % Close the file for writing. Set a flag saying so. % \begin{macrocode} - \immediate\closeout\efloat@postfff \ef@setct{fff}{0} + \expandafter\immediate\expandafter\closeout\csname efloat@post#1\endcsname + \efloat@setflag{#1open}{false}% % \end{macrocode} % Deal with headers and list of figures if necessary % \begin{macrocode} - \clearpage % bj - \if@figlist % bj - {\normalsize\listoffigures} % bj - \clearpage % bj - \fi - \if@fighead - \section*{\figuresection} % bj + \clearpage % bj + \efloat@ifflag{#2list}{% % bj + {\normalsize\efloat@listof{#2}}% % bj + \clearpage % bj + }{}% + \efloat@ifflag{#2head}{% + \section*{\@nameuse{#2section}}% % bj % \end{macrocode} % See the discussion in section~\ref{sec:place} for what problem % the |suppressfloats[t]| is here to solve. If I understand the % \textit{Companion} correctly (page 144), this was not available % in previous versions of \LaTeX. % \begin{macrocode} - \suppressfloats[t] % jpg - \fi - \markboth{\uppercase{\figuresection}}{\uppercase{\figuresection}}% bj + \suppressfloats[t]% % jpg + }{}% + \markboth % bj + {\expandafter\uppercase\expandafter{\csname #2section\endcsname}}% bj + {\expandafter\uppercase\expandafter{\csname #2section\endcsname}}% bj % \end{macrocode} % Use any user defined hooks just before inputting the file. % \begin{macrocode} - \processfigures@hook \@input{\jobname.fff} - \fi} + \@nameuse{efloat@#2@hook}% + \@input{\jobname.#1}% + }{}} % \end{macrocode} % \end{macro} -% \begin{macro}{\processtables} -% \changes{v1.99}{1992/05/27}{extensive changes by bj} -% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg} -% Just like |\processfigures|, only not so well documented. -% \begin{macrocode} -\def\processtables{% - \expandafter\ifnum \csname @ef@tttopen\endcsname>0 - \immediate\closeout\efloat@postttt \ef@setct{ttt}{0} - \clearpage % bj - \if@tablist % bj - {\normalsize\listoftables} % bj - \clearpage % bj - \fi - \if@tabhead - \section*{\tablesection} % bj - \suppressfloats[t] % jpg - \fi - \markboth{\uppercase{\tablesection}}{\uppercase{\tablesection}}% bj - \processtables@hook \@input{\jobname.ttt} - \fi} +% +% \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} % @@ -1788,37 +2268,44 @@ % \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{verbatim} -% \makeatletter -% \AtBeginDelayedFloats{\global\let\table\@btab \global\let\figure\@bfig} -% \makeatother -%\end{verbatim} -% \begin{macro}{\processdelayedfloats} +% \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 |\processtablels| and |\processfigures|. +% Prior to version 2.4, these were in |\processtables| and |\processfigures|. % \begin{macrocode} \def\baselinestretch{1}\normalsize - \let\figure\@bfig - \let\table\@btab + \efloat@restorefloats % \end{macrocode} % The hook comes after those settings so as to override them if desired. % \begin{macrocode} - \processdelayedfloats@hook + \processdelayedfloats@hook % \end{macrocode} % Process tables, figures, and others (or figures, tables, others) % \begin{macrocode} - \if@tablesfirst \processtables\processfigures - \else \processfigures\processtables \fi - \processotherdelayedfloats}} + \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} -% \end{macro} % \changes{v1.99}{1992/05/27}{extensive changes by bj} % \changes{v2.1}{1994/06/25}{Modify documentation text. jpg} % \changes{v2.1}{1994/06/25}{Use AtEndDocument. jpg} @@ -1828,10 +2315,15 @@ \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} % @@ -1839,6 +2331,7 @@ % % \subsection{Getting new delayed environments} % +% \iffalse % changed by Axel Sommerfeldt % I have been promising to make it easy to define new sorts % of environments which can be delayed. I don't expect to deliver % on that promise any time soon; so until I do, I will provide a @@ -1849,121 +2342,49 @@ % among other things provides environments |sidewaystable| and % |sidewaysfigure|. With the following definitions, these should % also work properly with \pkg{endfloat}. +% \else +% 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} +% \fi % % \begin{macrocode} %<*config> -% Warning! This configuration file is experimental and -% will probably only work with the version of endfloat.sty -% with which it is distributed. It is fully expected that the -% mechanism by which the stuff here is done will change radically -% in future versions. For detailed comments on this code see -% endfloat.dtx. % \end{macrocode} % -% Setting up sidewaystable and sidewaysfigure is fairly easy since they -% will use the same counters as table and figure, and more importantly -% the same temporary files. So, no special |\processsideways...| needs -% to be created. -% % We must, of course, have use of the rotating package. % \begin{macrocode} \RequirePackage{rotating} % \end{macrocode} -% First save the definitions from |rotating| of the environments -% in question, since they will need to be restored when they are -% processed at the end. -% \begin{macrocode} -\let\efsaved@sidewaysfigure\sidewaysfigure -\let\efsaved@sidewaystable\sidewaystable -% \end{macrocode} % -% And to restore them when the time comes. These hooks are called by -% |\processtables| and |\processfigures|. We use the hooks to -% restore the original definitions of |sideways...|. -% \begin{macrocode} -\AtBeginTables{\let\sidewaystable=\efsaved@sidewaystable\relax} -\AtBeginFigures{\let\sidewaysfigure=\efsaved@sidewaysfigure\relax} -% \end{macrocode} -% \begin{macro}{\sidewaystable} -% This redefinition of |sidewaystable| is very similar to the redefinition -% of |\table| in |endfloat| proper. When a |\begin{sidewaystable}| is -% expanded, it will write |\begin{sidewaystable}| to |\jobname.ttt| and -% otherwise do what it does for a |\begin{table}|, except of course that -% it is looking for an |\end{sidewaystable}|. +% We declare |side|\x|ways|\x|figure| and |side|\x|ways|\x|table| as +% variants of the |figure| resp.~|table| environments. % \begin{macrocode} -\def\sidewaystable{\efloat@condopen{ttt} - \efloat@iwrite{ttt}{\string\begin{sidewaystable}}% - \if@domarkers - \addtocounter{posttbl}{1} - \tableplace - \fi - \def\@currenvir{efloat@float}% - \begingroup - \let\do\ef@makeinnocent \dospecials - \ef@makeinnocent\^^L% and whatever other special cases - \endlinechar`\^^M \catcode`\^^M=12 \ef@xsidetable} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\ef@xsidetable} -% The definition of |\ef@xsidetable| is similar to the definition of -% |\ef@xtable| in |endfloat| proper. It is a little bit simpler, since -% there is no need to worry about the |*|-ed versions. Note that it -% writes out verbatim the environment to the |.ttt| file. When -% it finds a line that satisfies the |\ef@endsidetabletest| it -% will call a macro that will write |\end{sidewaystable}| to the -% |\jobname.ttt| file. -% \begin{macrocode} -{\catcode`\^^M=12 \endlinechar=-1 % - \gdef\ef@xsidetable#1^^M{\def\test{#1} - \ifx\test\ef@endsidetabletest - \efloat@foundend{ttt}{sidewaystable} - \else - \efloat@iwrite{ttt}{#1}% - \let\next\ef@xsidetable - \fi \next} -} -% \end{macrocode} -% \end{macro} -% -% Now figures -% \begin{macro}{\sidewaysfigure} -% \begin{macrocode} -\def\sidewaysfigure{\efloat@condopen{fff} - \efloat@iwrite{fff}{\string\begin{sidewaysfigure}}% - \if@domarkers - \addtocounter{postfig}{1} - \figureplace - \fi - \def\@currenvir{efloat@float}% - \begingroup - \let\do\ef@makeinnocent \dospecials - \ef@makeinnocent\^^L% and whatever other special cases - \endlinechar`\^^M \catcode`\^^M=12 \ef@xsidefigure} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\ef@xsidefigure} -% \begin{macrocode} -{\catcode`\^^M=12 \endlinechar=-1 % - \gdef\ef@xsidefigure#1^^M{\def\test{#1} - \ifx\test\ef@endsidefiguretest - \efloat@foundend{fff}{sidewaysfigure} - \else - \efloat@iwrite{fff}{#1}% - \let\next\ef@xsidefigure - \fi \next} -} -% \end{macrocode} -% \end{macro} -% We need the strings to test for ends of the sideways things. -% \begin{macrocode} -{\escapechar=-1% - \xdef\ef@endsidefiguretest{\string\\end\string\{sidewaysfigure\string\}}% - \xdef\ef@endsidetabletest{\string\\end\string\{sidewaystable\string\}}}% +\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 diff --git a/Master/texmf-dist/source/latex/endfloat/endfloat.ins b/Master/texmf-dist/source/latex/endfloat/endfloat.ins index 58462da56bb..26aba9bfef4 100644 --- a/Master/texmf-dist/source/latex/endfloat/endfloat.ins +++ b/Master/texmf-dist/source/latex/endfloat/endfloat.ins @@ -1,18 +1,6 @@ -\def\fildedate{1995/06/01} +\def\filedate{2011/12/12} \def\batchfile{endfloat.ins} -\input docstrip.tex - -\def\SimplePackage#1{% - \generateFile{#1.sty}{t}{\from{#1.dtx}{package}}} - -\def\SimpleConfig#1{% - \generateFile{#1.cfg}{t}{\from{#1.dtx}{config}}} - -\def\SimpleDriver#1{% - \generateFile{#1.drv}{t}{\from{#1.dtx}{driver}}} - -\def\SimpleClass#1{% - \generateFile{#1.cls}{t}{\from{#1.dtx}{class}}} +\input docstrip \keepsilent @@ -20,7 +8,7 @@ IMPORTANT NOTICE: This is part of a set of tools (or better yet, experiments) written -by Jeff Goldberg (j.goldberg@Cranfield.ac.uk), who is writting this +by Jeff Goldberg (jeffrey@goldmark.org), who is writting this not only for it utility value, but as part of the process of learning LaTeX. These tools are far from perfect, and comments are welcome. @@ -32,7 +20,7 @@ the blame; if you pass it on, pass on all present condiditions; \endpreamble -\SimplePackage{endfloat} -\SimpleDriver{endfloat} -%\SimpleConfig{endfloat} -\generateFile{efxmpl.cfg}{t}{\from{endfloat.dtx}{config}} +\generate{\file{endfloat.sty}{\from{endfloat.dtx}{package}}} +\generate{\file{endfloat.drv}{\from{endfloat.dtx}{driver}}} + +\generate{\file{efxmpl.cfg}{\from{endfloat.dtx}{config}}} diff --git a/Master/texmf-dist/tex/latex/endfloat/efxmpl.cfg b/Master/texmf-dist/tex/latex/endfloat/efxmpl.cfg index 73516617815..124b1e48446 100644 --- a/Master/texmf-dist/tex/latex/endfloat/efxmpl.cfg +++ b/Master/texmf-dist/tex/latex/endfloat/efxmpl.cfg @@ -8,7 +8,7 @@ %% %% IMPORTANT NOTICE: %% This is part of a set of tools (or better yet, experiments) written -%% by Jeff Goldberg (j.goldberg@Cranfield.ac.uk), who is writting this +%% by Jeff Goldberg (jeffrey@goldmark.org), who is writting this %% not only for it utility value, but as part of the process of learning %% LaTeX. These tools are far from perfect, and comments are welcome. %% @@ -19,9 +19,9 @@ %% the blame; if you pass it on, pass on all present condiditions; %% \def\filename{endfloat} -\def\fileversion{v2.4i} -\def\filedate{1995/10/11} -\def\docdate {1995/10/11} +\def\fileversion{v2.5b} +\def\filedate{2011/12/05} +\def\docdate{2011/12/05} %% \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 @@ -41,57 +41,13 @@ %% Description: LaTeX style to put figures and tables at end of article %% Keywords: LaTeX, style-option, float, figure, table %% Authors: James Darrell McCauley <jdm5548@diamond.tamu.edu>, -%% Jeff Goldberg <j.goldberg@cranfield.ac.uk> -%% Maintainer: Jeff Goldberg <J.Goldberg@Cranfield.ac.uk> -%% Latest Version: Version 2.4i <October 1995> +%% Jeff Goldberg <jeffrey@goldmark.org>, +%% Axel Sommerfeldt <axel.sommerfeldt@f-m.fm> +%% Maintainer: Jeff Goldberg <jeffrey@goldmark.org> +%% Latest Version: Version 2.5 <November 2011> \RequirePackage{rotating} -\let\efsaved@sidewaysfigure\sidewaysfigure -\let\efsaved@sidewaystable\sidewaystable -\AtBeginTables{\let\sidewaystable=\efsaved@sidewaystable\relax} -\AtBeginFigures{\let\sidewaysfigure=\efsaved@sidewaysfigure\relax} -\def\sidewaystable{\efloat@condopen{ttt} - \efloat@iwrite{ttt}{\string\begin{sidewaystable}}% - \if@domarkers - \addtocounter{posttbl}{1} - \tableplace - \fi - \def\@currenvir{efloat@float}% - \begingroup - \let\do\ef@makeinnocent \dospecials - \ef@makeinnocent\^^L% and whatever other special cases - \endlinechar`\^^M \catcode`\^^M=12 \ef@xsidetable} -{\catcode`\^^M=12 \endlinechar=-1 % - \gdef\ef@xsidetable#1^^M{\def\test{#1} - \ifx\test\ef@endsidetabletest - \efloat@foundend{ttt}{sidewaystable} - \else - \efloat@iwrite{ttt}{#1}% - \let\next\ef@xsidetable - \fi \next} -} -\def\sidewaysfigure{\efloat@condopen{fff} - \efloat@iwrite{fff}{\string\begin{sidewaysfigure}}% - \if@domarkers - \addtocounter{postfig}{1} - \figureplace - \fi - \def\@currenvir{efloat@float}% - \begingroup - \let\do\ef@makeinnocent \dospecials - \ef@makeinnocent\^^L% and whatever other special cases - \endlinechar`\^^M \catcode`\^^M=12 \ef@xsidefigure} -{\catcode`\^^M=12 \endlinechar=-1 % - \gdef\ef@xsidefigure#1^^M{\def\test{#1} - \ifx\test\ef@endsidefiguretest - \efloat@foundend{fff}{sidewaysfigure} - \else - \efloat@iwrite{fff}{#1}% - \let\next\ef@xsidefigure - \fi \next} -} -{\escapechar=-1% - \xdef\ef@endsidefiguretest{\string\\end\string\{sidewaysfigure\string\}}% - \xdef\ef@endsidetabletest{\string\\end\string\{sidewaystable\string\}}}% +\DeclareDelayedFloatFlavor{sidewaysfigure}{figure} +\DeclareDelayedFloatFlavor{sidewaystable}{table} \endinput %% %% End of file `efxmpl.cfg'. diff --git a/Master/texmf-dist/tex/latex/endfloat/endfloat.sty b/Master/texmf-dist/tex/latex/endfloat/endfloat.sty index 4d93295204c..171a8a99ccf 100644 --- a/Master/texmf-dist/tex/latex/endfloat/endfloat.sty +++ b/Master/texmf-dist/tex/latex/endfloat/endfloat.sty @@ -8,7 +8,7 @@ %% %% IMPORTANT NOTICE: %% This is part of a set of tools (or better yet, experiments) written -%% by Jeff Goldberg (j.goldberg@Cranfield.ac.uk), who is writting this +%% by Jeff Goldberg (jeffrey@goldmark.org), who is writting this %% not only for it utility value, but as part of the process of learning %% LaTeX. These tools are far from perfect, and comments are welcome. %% @@ -19,9 +19,9 @@ %% the blame; if you pass it on, pass on all present condiditions; %% \def\filename{endfloat} -\def\fileversion{v2.4i} -\def\filedate{1995/10/11} -\def\docdate {1995/10/11} +\def\fileversion{v2.5b} +\def\filedate{2011/12/05} +\def\docdate{2011/12/05} %% \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 @@ -41,203 +41,296 @@ %% Description: LaTeX style to put figures and tables at end of article %% Keywords: LaTeX, style-option, float, figure, table %% Authors: James Darrell McCauley <jdm5548@diamond.tamu.edu>, -%% Jeff Goldberg <j.goldberg@cranfield.ac.uk> -%% Maintainer: Jeff Goldberg <J.Goldberg@Cranfield.ac.uk> -%% Latest Version: Version 2.4i <October 1995> +%% Jeff Goldberg <jeffrey@goldmark.org>, +%% Axel Sommerfeldt <axel.sommerfeldt@f-m.fm> +%% Maintainer: Jeff Goldberg <jeffrey@goldmark.org> +%% Latest Version: Version 2.5 <November 2011> \NeedsTeXFormat{LaTeX2e}[1994/06/01] \ProvidesPackage{endfloat}[\filedate\space\fileversion\space LaTeX2e package puts figures and tables at end (jdm)] -\newcommand{\ef@OldCmd}[2]{\PackageWarning{endfloat} +\newcommand{\ef@OldCmd}[2]{\PackageWarning{endfloat}% {The command \protect#1 is obsolete and will be\MessageBreak omitted from future releases of the endfloat package.\MessageBreak Use the package option `#2' instead.}} \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 \@domarkerstrue -\@tablisttrue -\@figlisttrue -\@tabheadfalse +\@figlisttrue % bj \@figheadfalse \@tablesfirstfalse -\DeclareOption{nomarkers}{\@domarkersfalse } -\DeclareOption{markers}{\@domarkerstrue } -\newcommand{\markersintext}{\@domarkerstrue - \ef@OldCmd{\markersintext}{markers}} -\newcommand{\nomarkersintext}{\@domarkersfalse - \ef@OldCmd{\nomarkersintext}{nomarkers}} -\newcommand{\dotablist}{\@tablisttrue \ef@OldCmd{\dotablist}{tablist}} -\newcommand{\notablist}{\@tablistfalse \@tabheadtrue - \ef@OldCmd{\notablist}{notablist}} -\newcommand{\dofiglist}{\@figlisttrue \ef@OldCmd{\dofiglist}{figlist}} -\newcommand{\nofiglist}{\@figlistfalse \@figheadtrue - \ef@OldCmd{\nofiglist}{nofiglist}} -\DeclareOption{nolists}{\@tablistfalse \@figlistfalse } -\DeclareOption{lists}{\@tablisttrue \@figlisttrue } -\DeclareOption{notablist}{\@tablistfalse } -\DeclareOption{nofiglist}{\@figlistfalse } -\DeclareOption{tablist}{\@tablisttrue } -\DeclareOption{figlist}{\@figlisttrue } -\DeclareOption{heads}{\@figheadtrue \@tabheadtrue } -\DeclareOption{noheads}{\@figheadfalse \@tabheadfalse } -\DeclareOption{fighead}{\@figheadtrue } -\DeclareOption{tabhead}{\@tabheadtrue } -\DeclareOption{nofighead}{\@figheadfalse } -\DeclareOption{notabhead}{\@tabheadfalse } -\DeclareOption{tablesfirst}{\@tablesfirsttrue } -\DeclareOption{figuresfirst}{\@tablesfirstfalse } -\DeclareOption*{% - \PackageWarning{endfloat}{Unknown option `\CurrentOption'}} -\ProcessOptions -\def\efloat@newwrite#1{% +\efloat@figurestrue % as +\efloat@tablestrue % as +\RequirePackage{keyval} +\newcommand*\SetupDelayedFloat[2]{% + \def\efloat@type{#1}% + \setkeys{endfloat}{#2}} +\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}} +\newcommand*\efloat@setkey{% + \@expandtwoargs\efloat@@setkey\efloat@type} +\newcommand*\efloat@@setkey[3]{% + \@ifundefined{ef@ext@#1}% + {\PackageError{endfloat}% + {Unknown environment `#1'}% + {Only environments known to the `endfloat' package are allowed here.}}% + {\efloat@setflag{#1#2}{#3}}} +\newcommand*\efloat@ifflag[1]{% + \@nameuse{ef@if@#1}} +\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}% +\newcommand*\efloat@newwrite[1]{% \expandafter\newwrite\csname efloat@post#1\endcsname} -\def\efloat@openpost#1{\expandafter\immediate\expandafter\openout +\newcommand*\efloat@openpost[1]{% + \expandafter\immediate\expandafter\openout \csname efloat@post#1\endcsname =\jobname.#1\relax - \ef@setct{#1}{1} + \efloat@setflag{#1open}{true}% \message{(\jobname.#1)}} -\def\ef@newct#1{% - \expandafter \newcount \csname @ef@#1open\endcsname} -\def\ef@setct#1#2{\expandafter\global\csname @ef@#1open\endcsname=#2\relax} -\def\efloat@condopen#1{% - \expandafter\ifnum \csname @ef@#1open\endcsname>0 \relax \else - \efloat@openpost{#1}\fi} -\def\efloat@iwrite#1#2{% - \expandafter\immediate\expandafter\write\csname efloat@post#1\endcsname - {#2}} +\newcommand*\efloat@condopen[1]{% + \efloat@ifflag{#1open}{}{\efloat@openpost{#1}}} +\newcommand\efloat@iwrite[1]{% + \expandafter\immediate\expandafter\write\csname efloat@post#1\endcsname} \newcommand{\efloatseparator}{\clearpage} -\newcounter{postfig} -\efloat@newwrite{fff} -\ef@newct{fff} -\newcounter{posttbl} -\efloat@newwrite{ttt} -\ef@newct{ttt} \newcommand*{\ef@makeinnocent}[1]{\catcode`#1=12 } \providecommand{\figurename}{Figure} \providecommand{\tablename}{Table} -\newcommand{\figureplace}{% +\newcommand{\floatplace}[1]{% \begin{center} - [\figurename~\thepostfig\ about here.] + [\csname #1name\endcsname~\csname thepost#1\endcsname\ about here.] \end{center}} -\newcommand{\tableplace}{% - \begin{center} - [\tablename~\theposttbl\ about here.] - \end{center}} -\let\@bfig\figure % bj -\let\@btab\table % bj +\newcommand*\DeclareDelayedFloat{% + \@ifstar{\efloat@declare{*}}{\efloat@declare{}}} +\@onlypreamble\DeclareDelayedFloat +\newcommand*\efloat@declare[2]{% + \@testopt{\efloat@@declare{#1}{#2}}{ef#2}} +\@onlypreamble\efloat@declare +\def\efloat@@declare#1#2[#3]#4{% + \efloat@setflag{#2list}{@figlist}% + \efloat@setflag{#2head}{@fighead}% + \newcounter{post#2}% + \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 + \efloat@newwrite{#3}% + \efloat@setflag{#3open}{false}% + \@ifundefined{#2name}{\@namedef{#2name}{\@nameuse{fname@#2}}}{}% + \@namedef{#2place}{\floatplace{#2}}% + \DeclareDelayedFloatFlavor#1{#2}{#2}% + \expandafter\providecommand\csname #2section\endcsname{#4}% + \@namedef{efloat@#2@hook}{}% + \edef\@tempb{\def\noexpand\@tempa{\@car#2\@nil}}% + \uppercase\expandafter{\@tempb}% + \edef\@tempb{% + \noexpand\g@addto@macro\noexpand\@tempa{\@cdr#2\@nil}}% + \@tempb + \@namedef{AtBegin\@tempa s}{% + \expandafter\g@addto@macro\csname efloat@#2@hook\endcsname}% + \@namedef{AtBegin\@tempa es}{% + \expandafter\g@addto@macro\csname efloat@#2@hook\endcsname}% + \@namedef{process#2s}{\efloat@process{#3}{#2}}% + \@namedef{process#2es}{\@nameuse{process#2s}}% + \@cons\efloat@list{{#2}}} +\@onlypreamble\efloat@@declare +\newcommand*\efloat@list{} +\newcommand*\DeclareDelayedFloatFlavor{% + \@ifstar{\efloat@declareflavor\@gobble}% + {\efloat@declareflavor\@iden}} +\@onlypreamble\DeclareDelayedFloatFlavor +\let\DeclareDelayedFloatFlavour\DeclareDelayedFloatFlavor +\@onlypreamble\DeclareDelayedFloatFlavour +\newcommand*\efloat@declareflavor[3]{% + \@ifundefined{ef@ext@#3}% + {\PackageError{endfloat}% + {Unknown environment `#3'}% + {Only environments known to the `endfloat' package are allowed here.}}% + {\AtBeginDocument{% + \efloat@@declareflavor{#2}{#3}% + #1{\efloat@@declareflavor{#2*}{#3}}}}} +\@onlypreamble\efloat@declareflavor +\newcommand*\efloat@@declareflavor[2]{% + \def\@tempa{\@efloat{#2}{#1}}% + \@ifundefined{efloat@#1@ORI}% + {\expandafter\expandafter\expandafter\let\expandafter + \csname efloat@#1@ORI\expandafter\endcsname + \csname #1\endcsname + \expandafter\g@addto@macro\expandafter\efloat@restorefloats\expandafter{% + \expandafter\let + \csname #1\expandafter\endcsname + \csname efloat@#1@ORI\endcsname}% + \expandafter\let\csname#1\endcsname\@tempa}% + {\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 +\newcommand*\efloat@restorefloats{} +\newcommand*\efloat@SetOption[1]{% + \def\@elt##1{\efloat@Setup{##1}{#1}}% + \efloat@list + \let\@elt\relax} +\newcommand\efloat@Setup[2]{% + \g@addto@macro\efloat@ProcessOptions{\SetupDelayedFloat{#1}{#2}}} +\newcommand\efloat@ProcessOptions{% + \let\efloat@SetOption\@undefined + \let\efloat@Setup\@undefined + \let\efloat@ProcessOptions\@undefined} +\DeclareOption{nomarkers}{\@domarkersfalse} +\DeclareOption{markers}{\@domarkerstrue} +\newcommand{\markersintext}{\@domarkerstrue + \ef@OldCmd{\markersintext}{markers}} +\newcommand{\nomarkersintext}{\@domarkersfalse + \ef@OldCmd{\nomarkersintext}{nomarkers}} +\newcommand{\dotablist}{% + \SetupDelayedFloat{table}{list=true}% + \ef@OldCmd{\dotablist}{tablist}} +\newcommand{\notablist}{% + \SetupDelayedFloat{table}{list=false,head=true}% + \ef@OldCmd{\notablist}{notablist}} +\newcommand{\dofiglist}{% + \SetupDelayedFloat{figure}{list=true}% + \ef@OldCmd{\dofiglist}{figlist}} +\newcommand{\nofiglist}{% + \SetupDelayedFloat{figure}{list=false,head=true}% + \ef@OldCmd{\nofiglist}{nofiglist}} +\DeclareOption{nolists}{\@figlistfalse \efloat@SetOption{list=false}} +\DeclareOption{lists}{\@figlisttrue \efloat@SetOption{list=true}} +\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}} +\DeclareOption{heads}{\@figheadtrue \efloat@SetOption{head=true}} +\DeclareOption{noheads}{\@figheadfalse \efloat@SetOption{head=false}} +\DeclareOption{fighead}{\efloat@Setup{figure}{head=true}} +\DeclareOption{tabhead}{\efloat@Setup{table}{head=false}} +\DeclareOption{nofighead}{\efloat@Setup{figure}{head=true}} +\DeclareOption{notabhead}{\efloat@Setup{table}{head=false}} +\DeclareOption{tablesfirst}{\@tablesfirsttrue} +\DeclareOption{figuresfirst}{\@tablesfirstfalse} +\DeclareOption{tablesonly}{\efloat@figuresfalse \efloat@tablestrue} +\DeclareOption{figuresonly}{\efloat@figurestrue \efloat@tablesfalse} +\DeclareOption*{% + \PackageWarning{endfloat}{Unknown option `\CurrentOption'}} +\ProcessOptions* +\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 +\efloat@ProcessOptions +\let\c@postfig\c@postfigure +\let\c@posttbl\c@posttable +\newcommand\thepostfig{\thepostfigure} +\newcommand\theposttbl{\theposttable} \let\efloat@float\relax -\def\figure{% - \efloat@condopen{fff} - \efloat@iwrite{fff}{\string\begin{figure*}}% - \if@domarkers% - \addtocounter{postfig}{1}% % bj - \figureplace% % bj - \fi% - \def\@currenvir{efloat@float}% - \begingroup% - \let\do\ef@makeinnocent \dospecials% - \ef@makeinnocent\^^L% and whatever other special cases - \endlinechar`\^^M \catcode`\^^M=12 \ef@xfigure}% -\def\efloat@foundend#1#2{\def\next{\endgroup\end{efloat@float}% - \efloat@iwrite{#1}{\string\end{#2}}% - \efloat@iwrite{#1}{\string\efloatseparator}% - \efloat@iwrite{#1}{ }}}% +\newcommand*\@efloat[1]{% + \expandafter\@@efloat\expandafter{\csname ef@ext@#1\endcsname}{#1}} +\newcommand*\@@efloat[3]{% + \efloat@condopen{#1}% + \if@domarkers + \stepcounter{post#2}% % bj + \@nameuse{#2place}% % bj + \fi + \def\@currenvir{efloat@float}% + \begingroup + \let\do\ef@makeinnocent \dospecials + \ef@makeinnocent\^^L% and whatever other special cases + \endlinechar`\^^M \catcode`\^^M=12 % + \efloat@patch\ef@endfiguretest{#3}% as + \def\next{\ef@xfigure{#1}}% + \next\string\begin{#3}}% +\newcommand*\efloat@foundend[2]{% + \efloat@iwrite{#1}{\string\end{#2}}% + \efloat@found@end{#1}} +\newcommand*\efloat@found@end[1]{% + \def\next{\endgroup\end{efloat@float}% + \efloat@iwrite{#1}{\string\efloatseparator}% + \efloat@iwrite{#1}{ }}}% {\catcode`\^^M=12 \endlinechar=-1 % - \gdef\ef@xfigure#1^^M{\def\test{#1}% - \ifx\test\ef@endfiguretest - \efloat@foundend{fff}{figure*} - \else\ifx\test\ef@enddblfiguretest - \efloat@foundend{fff}{figure*} - \else% - \efloat@iwrite{fff}{#1}% - \let\next\ef@xfigure% - \fi \fi \next}% -}% + \long\gdef\ef@xfigure#1#2^^M{\def\test{#2}% + \efloat@iwrite{#1}{#2}% + \ifx\test\ef@endfiguretest + \efloat@found@end{#1}% + \fi \next}} {\escapechar=-1% - \xdef\ef@endfiguretest{\string\\end\string\{figure\string\}}% - \xdef\ef@enddblfiguretest{\string\\end\string\{figure*\string\}}% -}% -\def\table{\efloat@condopen{ttt} - \efloat@iwrite{ttt}{\string\begin{table*}}% - \if@domarkers - \addtocounter{posttbl}{1} % bj - \tableplace % bj - \fi - \def\@currenvir{efloat@float}% - \begingroup - \let\do\ef@makeinnocent \dospecials - \ef@makeinnocent\^^L% and whatever other special cases - \endlinechar`\^^M \catcode`\^^M=12 \ef@xtable} -{\catcode`\^^M=12 \endlinechar=-1 % - \gdef\ef@xtable#1^^M{\def\test{#1} - \ifx\test\ef@enddbltabletest - \efloat@foundend{ttt}{table*} - \else\ifx\test\ef@endtabletest - \efloat@foundend{ttt}{table*} - \else - \efloat@iwrite{ttt}{#1}% - \let\next\ef@xtable - \fi \fi \next} -} -{\escapechar=-1 - \xdef\ef@enddbltabletest{\string\\end\string\{table*\string\}} - \xdef\ef@endtabletest{\string\\end\string\{table\string\}} + \xdef\ef@endfiguretest{\string\\end\string\{X\string\}} } -\@namedef{figure*}{\figure} -\@namedef{table*}{\table} -\providecommand{\figuresection}{Figures} -\providecommand{\tablesection}{Tables} -\newcommand{\processfigures@hook}{\@empty} -\def\AtBeginFigures{\g@addto@macro\processfigures@hook} -\newcommand{\processtables@hook}{\@empty} -\def\AtBeginTables{\g@addto@macro\processtables@hook} -\newcommand{\processdelayedfloats@hook}{\@empty} +\newcommand*\efloat@patch[2]{% + \def\x##1X##2\@nil{\def#1{##1#2##2}}% + \expandafter\x#1\@nil} +\newcommand{\processdelayedfloats@hook}{} \def\AtBeginDelayedFloats{% \g@addto@macro\processdelayedfloats@hook} -\newcommand{\processotherdelayedfloats}{\@empty} -\def\processfigures{% - \expandafter\ifnum \csname @ef@fffopen\endcsname>0 - \immediate\closeout\efloat@postfff \ef@setct{fff}{0} - \clearpage % bj - \if@figlist % bj - {\normalsize\listoffigures} % bj - \clearpage % bj - \fi - \if@fighead - \section*{\figuresection} % bj - \suppressfloats[t] % jpg - \fi - \markboth{\uppercase{\figuresection}}{\uppercase{\figuresection}}% bj - \processfigures@hook \@input{\jobname.fff} - \fi} -\def\processtables{% - \expandafter\ifnum \csname @ef@tttopen\endcsname>0 - \immediate\closeout\efloat@postttt \ef@setct{ttt}{0} - \clearpage % bj - \if@tablist % bj - {\normalsize\listoftables} % bj - \clearpage % bj - \fi - \if@tabhead - \section*{\tablesection} % bj - \suppressfloats[t] % jpg - \fi - \markboth{\uppercase{\tablesection}}{\uppercase{\tablesection}}% bj - \processtables@hook \@input{\jobname.ttt} - \fi} +\newcommand{\processotherdelayedfloats}{} +\newcommand*\efloat@process[2]{% + \efloat@ifflag{#1open}{% + \expandafter\immediate\expandafter\closeout\csname efloat@post#1\endcsname + \efloat@setflag{#1open}{false}% + \clearpage % bj + \efloat@ifflag{#2list}{% % bj + {\normalsize\efloat@listof{#2}}% % bj + \clearpage % bj + }{}% + \efloat@ifflag{#2head}{% + \section*{\@nameuse{#2section}}% % bj + \suppressfloats[t]% % jpg + }{}% + \markboth % bj + {\expandafter\uppercase\expandafter{\csname #2section\endcsname}}% bj + {\expandafter\uppercase\expandafter{\csname #2section\endcsname}}% bj + \@nameuse{efloat@#2@hook}% + \@input{\jobname.#1}% + }{}} +\newcommand*\efloat@listof[1]{% + \expandafter\providecommand\csname list#1name\endcsname + {List of \@nameuse{#1section}}% + \@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}}} \renewcommand{\bottomfraction}{1.0} \renewcommand{\topfraction}{1.0} \renewcommand{\textfraction}{0.0} \newcommand{\processdelayedfloats}{{% \def\baselinestretch{1}\normalsize - \let\figure\@bfig - \let\table\@btab - \processdelayedfloats@hook - \if@tablesfirst \processtables\processfigures - \else \processfigures\processtables \fi - \processotherdelayedfloats}} + \efloat@restorefloats + \processdelayedfloats@hook + \efloat@processfloats + \processotherdelayedfloats}} +\newcommand*\efloat@processfloats{% + \let\@tempa\@empty + \def\@elt##1{\g@addto@macro\@tempa{\@nameuse{process##1es}}}% + \efloat@list + \let\@elt\relax + \@tempa} \AtEndDocument{% % jpg \message{AED endfloat: Processing end Figures and Tables}% % jpg \onecolumn |