diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/floatflt/floatfge.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/floatflt/floatfge.tex | 317 |
1 files changed, 317 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/floatflt/floatfge.tex b/Master/texmf-dist/doc/latex/floatflt/floatfge.tex new file mode 100644 index 00000000000..97786326466 --- /dev/null +++ b/Master/texmf-dist/doc/latex/floatflt/floatfge.tex @@ -0,0 +1,317 @@ +%% +%% This is file `floatfge.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% floatflt.dtx (with options: `gammalkod') +%% +%% Copyright (c) 1994-1998 by Mats Dahlgren <matsd@sssk.se>. +%% All rights reserved. See the file `floatflt.ins' for information +%% on how you may (re-)distribute the `floatflt' package files. +%% You are not allowed to make any changes to this file without +%% explicit permission from the author. +%% + \documentclass[11pt]{article} + % + \textheight=1.1\textheight + \textwidth=1.15\textwidth + \oddsidemargin=0pt + \evensidemargin=0pt + % + \begin{document} + % + \title{\LaTeX-Paragraphs Floating around Figures} + \author{{\it Thomas Kneser}\\{\footnotesize + Gesellschaft f\"ur wissenschaftliche Datenverarbeitung + mbH G\"ottingen, FRG}} + \date{August 20, 1990} + \maketitle + % + \begin{abstract} + % + \noindent Frequently figures do not fill the full pagewidth. + If the width of such figures is only half of the + pagewidth or even less, + textlines should be set beside the figures, + or -- from another point of view -- figures should `float' + in paragraphs. + This article presents the \LaTeX{} style option {\tt FLOATFIG} + which can be used to set such Floating Figures as easily + as \LaTeX's standard figures. + \end{abstract} + % + \section{The name of the game} + The macros which make up the {\tt FLOATFIG} style option + are based on PLAIN-\TeX\ macros developed by Thomas Reid + (TUGBoat Vol. 8 \# 3 page 315), who pointed out + how to set figures + {\bf right justified} with paragraphs floating around them. + For such objects + Th. Reid has chosen the term `Floating Figures'. + + This choice might cause some confusion, + when we adapt these macros for \LaTeX, + since Leslie Lamport uses the term `float' for objects + which are realized as \TeX-\verb+\inserts+. + While L. Lamports floats are floating in `main vertical list', + floats introduced by Th. Reid + are floating in paragraphs. + For the following we adopt the latter meaning. + \section{How to use it} + The Floating Figures style option is fully compatible with + \LaTeX's standard figure facility: + \begin{enumerate} + \item Floating Figures and standard figures may be requested + in any sequence, + \item Floating Figures can be captioned like standard figures, + \item captioned Floating Figures are inserted in the list of figures + which may be printed by the standard + \verb+\listoffigures+ command. + \end{enumerate} + A Floating Figure may be requested as follows: + \begin{verbatim} + \documentstyle[floatfig]{article} + \begin{document} + \initfloatingfigs + . + . + \begin{floatingfigure}{5.6cm} + \vspace{6.cm} + \caption{Intermolecular potential K-Xe}% optional ! + \end{floatingfigure} + . + . + \end{document} + \end{verbatim} + where {\tt 5.6cm} specifies the width of the figure space. + A Floating Figure may only be requested in vertical mode, that is + between paragraphs. + + A Floating Figure will be set as soon as possible after its request + has be encountered by \TeX. + That means, + it will be tested if there is enough vertical space + on the current page; + otherwise the figure moves to the next page. + + Floating Figures are set {\bf alternating}, + that is on the right hand side on odd and + on the left hand side on even numbered pages. + % + \subsection{Restrictions} + \begin{enumerate} + \item The {\tt FLOATFIG} style option may not be combined with the + {\tt TWOCOLUMN} style option, + \item a Floating Figure will never appear in a paragraph + which begins on top of a page. + \end{enumerate} + % + \section{About the internals} + % + We have extended the macros designed by Th.~Reid with regard to: + \begin{enumerate} + \item implantation into the \LaTeX{} context, + \item alternating setting of Floating Figures as explained above, + \item generation of warning messages for `collisions' of + two Floating Figures. + \end{enumerate} + % + \subsection{Implantation into the \LaTeX{} context} + The PLAIN-\TeX{} implementation by Th.~Reid + is based on a redefined \verb+\output+ routine: + % + \begin{verbatim} + \edef\oldoutput{\the\output}% + \output={\the\outputpretest\ifoutput\oldoutput\fi} + \outputpretest={\outputtrue} + \end{verbatim} + % + If a Floating Figure is requested, + the content of the + \verb+\outputpretest+ token register is prepared to decide: + \begin{enumerate} + \item if there is enough vertical space to set the Floating Figure, + \item if setting of a Floating Figure is in progress or + \item if indeed the current page has to be sent to the DVI file. + \end{enumerate} + % + In general, \TeX{} has to deal with more than one paragraph until + a Floating Figure will be completely processed. + During this process + the redefined \verb+\output+ routine is + called at the begin of {\bf every} paragraph; + this is done indirectly + by expanding the control sequence \verb+\tryfig+. + Therefore, the \verb+\everypar+ token + list is prepared by the following command sequence: + \begin{verbatim} + \edef\oldeverypar{\the\everypar} + \everypar={\tryfig\oldeverypar} + \end{verbatim} + Now \verb+\tryfig+ triggers the (modified) + \verb+\output+ routine, which then does the decisions + and actions mentioned above. + + Adopting this concept when using the macros in the \LaTeX{} context, + we are faced with the following problems: + \begin{enumerate} + \item At the time \hbox{\tt FLOATFIG.STY} is read in, + the \verb+\output+ routine is still undefined; + its definition is retarded until + \verb+\begin{document}+ will be expanded; + so the redefinition of the \verb+\output+ routine has to be + done after \verb+\begin{document}+ + by the command \verb+\initfloatingfigs+ + (see section `Known Problems' below). + \item There are situations where + \LaTeX{} decides to redefine the \verb+\everypar+ token list + without saving of the former content; + this occurs for instance when expanding + a \verb+\section+ control sequence. + We overcome this by redefining \verb+\everypar+ whenever + the \verb+\floatingfigure+ environment is entered. + % + Hence to avoid problems, a Floating Figure should be requested + early enough before any sectioning control sequence + (see also subsection `Misleading collision warnings').\hfil\break + % + Furthermore, the concurrent definitions of + \verb+\everypar+ are the reason why + Floating Figures cannot move across section boundaries. + \end{enumerate} + % + \subsection{Alternating figure setting} + The problem to be solved + is to decide if a certain figure has to be set + left- or rightjustified. + This decision has to made according to + the value of the pagecount (left if even, right if odd). + That is we are dealing with the wellknown problem + to associate a certain part of input text with the number + of the page on which it will be set finally. + + As pointed out by D.E. Knuth in `The {\TeX}book' this association + is done not before \verb+\output+ routine time. + But the problem is not so hard to solve, + since in Th.~Reid's version there is already a modified + \verb+\output+ routine which decides if a certain figure will + fit on the current page. + As a by-product of this decision one easily gains + the information `odd' or `even' for the pagecount + of the current page. + So our problem reduces to the following simple decision: + \begin{verbatim} + \ifodd\count0 % + \hbox to \hsize{\hss\copy\figbox}% + \global\oddpagestrue + \else% leftsetting + \hbox to \hsize{\copy\figbox\hss}% + \global\oddpagesfalse + \fi% \ifodd\count0 + \end{verbatim} + % + \subsection{Collisions of Floating Figures} + We define a collision as a situation where: + \begin{enumerate} + \item a Floating Figure is requested before the predecessor + has been finished, + \item some sectioning is requested before a Floating Figure has been + finished. + \end{enumerate} + + While the {\tt FLOATFIG} style option cannot avoid such collisions, + it will recognize them. + For diagnostic purposes we have therefore defined + the switch \verb+\iffigprocessing+ and another count register called + \verb+\ffigcount+. + This count register is used to attach + a sequence number to each Floating Figure, + so they can be identified uniquely within collision warning messages. + These sequence numbers are not to be confused + with the figure count maintained by standard \LaTeX. + % + \section{Known Problems} + \subsection{Need of Initialization} + The present version of the style option needs to be initialized + by control sequence + {\tt\verb+\initfloatingfigs+} as mentioned above.\footnote{% + This is not needed with \LaTeXe{}. /MD} + + We hope a later version will initialize itself, + when the first request to a Floating Figure is encountered. + One problem with such an automatic initialization seems + to be, + that we are grouped down + since we are inside a \LaTeX{} environment. + Our first attempt failed + to make the respective settings \verb+\global+. + % + \subsection{Misleading collision warnings} + As mentioned above, Floating Figures do not move + across section boundaries. + If a Floating Figure is requested near a section end, + the figure will be truncated, + if it does not fit in the current section. + + If this occurs for instance with floating figure number~4, + a collision will be reported when the request for + floating figure number~5 is encountered; + so the respective warning message may be substantially retarded. + In fact, the message will tell us that there is a problem with figure~4, + but there will be no further hint. + So one has to analyze `by hand' that the problem is {\bf not} caused + by collision with figure~5 but with a section heading; + even worse: if there is no floating figure~5, one gets no warning message + at all. + + Furthermore, warning messages will be generated if a Floating Figure + ends in paragraph $n$ and the next one begins with paragraph $n+1$. + These warning messages are to be ignored; they are due to some retardation + caused by the \verb+\everypar+ mechanism. + % + \section{Conclusions} + Working on \texttt{FLOATFIG.STY} we had some unexpected problems + which were caused + by \LaTeX's somewhat unsafe assignments to the \verb+\everypar+ token list. + This is due to the fact that the use + of this token list is fundamental + to the algorithm designed by Th.~Reid. + On the other hand we did expect problems to couple + the Floating Figures with \LaTeX's figure caption adminstration, + that is to achieve a single figure caption numbering for + the standard figures and the Floating Figures and to get both types + listed by the \verb+\listoffigures+ control sequence. + % + But these problems could easily be solved + by the following local definiton within the {\tt FLOATFIG} environment: + \begin{verbatim} + \def\@captype{figure} + \end{verbatim} + Obviously this is due to the fact + that \LaTeX's caption apparatus is thoroughly parameterized. + + The \verb+FLOATFIG.STY+ file is stored in the + {\tt EARN/BITNET} listserver + in Heidelberg; \hfil\break + {\tt VM/CMS} users should enter the commands: + \begin{verbatim} + TELL LISTSERV AT DHDURZ1 GET LATEXSTY INDEX + TELL LISTSERV AT DHDURZ1 GET LATEXSTY README + TELL LISTSERV AT DHDURZ1 GET LATEXSTY FILELIST + TELL LISTSERV AT DHDURZ1 GET FLOATFIG ZOOUUE LATEXSTY + \end{verbatim} + to obtain information about how to obtain the style option file. +\subsection{Note by Mats Dahlgren} +Several features described in this document still apply to the +\LaTeXe\ \texttt{floatflt} package, whereas others do not. Please +run \LaTeX{} on \texttt{floatflt.dtx} twice and read the resulting +documentation before you use the package. +(This note was added on October 20, 1994; changed on December 27, +1994.) + + %\tableofcontents + \end{document} +\endinput +%% +%% End of file `floatfge.tex'. |