% \iffalse % floatrow.dtx - The float row package (extension of float package) % (c) 2004-2005 Olga Lapko (Lapko.O@g23.relcom.ru) % % This package borrowed code (core parts) from: % float package 2001/11/08 v1.3d, % Copyright (C) 1991-2000 Anselm Lingnau % rotfloat package, 2002/02/02 v1.1, % Copyright (c) 1995-2002 Axel Sommerfeldt % % During creation of floatsetup stuff there was borrowed code structure % from caption package v3.x ((c) 1994-2005 by Axel Sommerfeldt) % % This program is provided under the terms of the % LaTeX Project Public License distributed from CTAN % archives in directory macros/latex/base/lppl.txt. % %<*dtx> \ProvidesFile{floatrow.dtx} % %\NeedsTeXFormat{LaTeX2e}[1995/06/01] %\ProvidesPackage{floatrow} %\ProvidesPackage{fr-fancy} %\ProvidesPackage{floatpagestyle} % % \ProvidesFile{floatrow.dtx} % [2005/07/15 v0.1g floatrow package: the float package extension] % [2005/07/15 v0.1g floatrow: fancy boxes] % [2005/07/15 v0.1g floating page style] % %<*driver> \input pictures \listfiles \documentclass[twoside]{ltxdoc} \usepackage{calc} \usepackage{tabularx,array} \IfFileExists{titlesec.sty}{\usepackage[raggedright]{titlesec}}{} \IfFileExists{footmisc.sty}{\usepackage[perpage]{footmisc}}{} \usepackage{floatpagestyle} \usepackage[font=small,labelfont=bf,labelsep=period,justification=centerlast]% {caption}[2004/11/28] \usepackage[format=default,justification=centerlast,labelfont=up]{subfig}[2005/06/28] \IfFileExists{rotating.sty}{\usepackage[figuresright]{rotating}}{} \usepackage{wrapfig} \usepackage[vflt]{floatflt} \usepackage{picins} %^^A\RequirePackage[writefile]{listings}[2004/09/07] \usepackage[style=plain,font=small,footskip=.5\skip\footins, footnoterule=fullsize,margins=centering,objectset=centering,floatrowsep=qquad, captionskip=5pt,capbesidesep=quad,facing=yes,capbesideposition=inside]{floatrow} \usepackage{fr-fancy} \IfFileExists{hyperref.sty}{\usepackage{hyperref} \IfFileExists{hypcap.sty}{\usepackage{hypcap}}{} }{} \ifx\pdftexversion\undefined \IfFileExists{pstricks.sty}{\usepackage{pstricks}}{} \fi \IfFileExists{makecell.sty}{\usepackage{makecell}}{} \makeatletter \@ifundefined{thead}% {\newcommand\thead[1]{\footnotesize \raisebox{0pt}[\height+\jot][\depth+\jot]{\begin{tabular}{@{}c@{}} #1\end{tabular}}} %^^A For this documentation only \def\multirowthead#1[#2]#3{\raisebox{-1.5ex}{\thead{#3}}}}{} \makeatother \IfFileExists{multirow.sty}{\usepackage{multirow}}{} \IfFileExists{lscape.sty}{\usepackage{lscape}}{} \floatsetup[table]{style=Plaintop,footnoterule=none} \floatstyle{ruled} \newfloat{Program}{tbp}{lop}[section] \DeclareFloatStyle{MyBoxed}{style=Boxed,captionskip=5pt,frameset={\fboxrule1pt\fboxsep12pt}} \DeclareFloatVCode{lowthickrule}{\kern2pt\hrule height.8ptdepth0pt} \DeclareNewFloatType{Example}% {placement=tb,within=section,fileext=lox} %^^A for Appendix----------- \DeclareFloatSeparators{none}{} \DeclareFloatSeparators{cicero}{\hskip1cc} \DeclareFloatSeparators{enskip}{\hskip.5em} \DeclareFloatSeparators{mcapwidth}{\hskip-\FCwidth} \newfloatcommand{fcapsideleft}{figure}[{\capbeside \captionsetup[capbesidefigure]{format=break,labelsep=none, justification=raggedleft}\thisfloatsetup{capbesideposition=left}}][\FBwidth] \newfloatcommand{fcapsideright}{figure}[{\capbeside \captionsetup[capbesidefigure]{format=break,labelsep=none, justification=raggedright}\thisfloatsetup{capbesideposition=right}}][\FBwidth] %^^A ----------------------- \def\rightlast{\leftskip0ptplus1fil \rightskip0ptplus-1fil\parfillskip0ptplus1fil} \def\leftlast{\leftskip0pt\rightskip0pt\parfillskip0ptplus1fil} %^^A for all versions of caption 3.x? \DeclareCaptionFormat{flushrightlabel}{\leavevmode\rightline{#1}#2\par#3\par} \DeclareCaptionJustification{togglelast} {\floatfacing*\rightlast\leftlast} \DeclareCaptionStyle{capbesidefigure}{justification=togglelast} \captionsetup[table]% {format=flushrightlabel,textfont=bf,labelsep=none,labelfont=sl,captionskip=5pt} \captionsetup[capbesidefigure]{justification=togglelast} \captionsetup[floatfoot]{format=default} %^^A for Appendix----------- \DeclareCaptionFormat{break}{#1#2\par#3\par} %^^A ----------------------- \makeatletter \evensidemargin\oddsidemargin \@mparswitchfalse \widowpenalty10000 \clubpenalty10000 \@beginparpenalty10000 \@itempenalty1000 \@endparpenalty0 \tolerance2000 \hbadness8000 \vbadness5000 \def\l@subsection{\@dottedtocline {2}{1.5em}{2.7em}} \def\l@subsubsection{\@dottedtocline {3}{4.2em}{3.6em}} \newcommand\Resizebox[5]{\setbox0\hbox{\setlength\unitlength{#1/#3}%^^A \ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi{#5}}%^^A \@tempdima\ht0\advance\@tempdima\dp0%^^A \ifdim\@tempdima>#2\setlength\unitlength{#2/#4}\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi {#5}\else\box0\fi} \providecommand*{\file}[1]{\texttt{#1}} \providecommand*{\pkg}[1]{\textsf{#1}} \providecommand*{\cls}[1]{\textsf{#1}} \providecommand*{\env}[1]{\texttt{#1}} \providecommand*{\meta}[1]{$\langle$\textit{#1}$\rangle$} \newenvironment{Options}[1]% {\list{}{\renewcommand{\makelabel}[1]{\texttt{##1}\hfil}% \settowidth{\labelwidth}{\texttt{#1\space}}% \setlength{\leftmargin}{\labelwidth}% \addtolength{\leftmargin}{\labelsep}% \setlength{\itemsep}{0pt}% \setlength{\parsep}{0pt}% }}% {\endlist} \def\OptionLabel{RaggedRight} \DeclareRobustCommand\La{L\kern-.36em% {\sbox\z@ T% \vbox to\ht\z@{\hbox{\check@mathfonts \fontsize\sf@size\z@ \math@fontsfalse\selectfont A}% \vss}% }% } \makeatother \OnlyDescription \let\PrintChanges\relax \EnableCrossrefs \RecordChanges \begin{document} \DocInput{floatrow.dtx} \PrintChanges \end{document} % % \fi % % \CheckSum{4182} % % % \changes{v0.1e}{2005/03/22}{The user documentation loaded inside \file{floatrow.dtx}.} % % \GetFileInfo{floatrow.dtx} % % \ifx\pspicture\undefined\else\psset{unit=1pt}\fi % % \def\fileversion{v0.1g} % \def\filedate{2005/07/15} % \title{The \pkg{floatrow} package\thanks{This % file has version number \fileversion, last revised % \filedate.}} % % \author{% % Olga Lapko\\ % {\tt Lapko.O@g23.relcom.ru} } % \date{\filedate} % \maketitle % % \begin{abstract} % This package was created like extension or addition of \pkg{float} % package. The \pkg{floatrow} borrows core code from \pkg{float}\footnote{\pkg{float} % package, version v1.3d dated 2001/11/08, \copyright{} 1991-2000 % Anselm Lingnau.} and \pkg{rotfloat}\footnote{\pkg{rotfloat} package, % version v1.2 dated 2004/01/04, \copyright{} 1995--2004 Axel % Sommerfeldt.} packages, so you must not load these packages. % % The \pkg{float} package has good mechanism for creation (and easy % modification) of common layout for all floats without % adding any repeated code in document; unfortunately it deals only % with alone (plain) object---caption combinations. % % Current package extends this mechanism and allows: % \begin{itemize}\itemsep0pt\parskip0pt % \item% % to change width of float box; % \item% % to set width for float box, which equals to the width of object; % \item% % to put caption beside object; % \item% % to put a few floats side by side on the row; % \item% % to put footnotes inside float box (using \env{minipage}-like mode); % and also put legend-like text; % \item% % to create or modify special layout for each type of float and for different % positioning of float and its components (two-column or rotated float). % \end{itemize} % % The \pkg{floatrow} package is cooperated with \pkg{caption} package % (version 3.0 and later). Also the \pkg{floatrow} package (like % \pkg{caption} one) uses \pkg{keyval} package mechanism for layout settings. % \medskip % % \begingroup % \slshape % I think I did my best to follow this idea and I hope that someone likes this idea: % helps to maintain this idea anyway, or finds bugs and absurdities in this package % or documentation. % \endgroup % \medskip % % {Document terminology}: % \begin{description}\itemsep0pt\parskip0pt % \item[float] could include \emph{object}, \emph{caption}, and \emph{foot material}; % \emph{float} is created by \env{figure} or \env{table} environments (\emph{plain float}), % or in |\floatbox| command; % % \item[object]\env{tabular} or graphics, as contents % of table (\env{figure}) or figure (\env{table}) or other type of float; % % \item[caption]text in |\caption|; % % \item[foot material]explications, legends and/or footnotes inside \emph{float} box (|\footnote|/|\mpfootnotemark|/|\footnotetext|, and |\floatfoot| macros). % \end{description} % \end{abstract} % % \clearpage % \begingroup % \small % \tableofcontents % \listoffigures % \listoftables % \endgroup % \clearpage % \suppressfloats[t] % % \section{Introduction} % % One of the first macros of package, created for float contents, is a macro which % builds contents of table environment with caption above. The width of % caption equals to the width of contents, e.g. of tabular (see table~\ref{intro:table}). %\begin{verbatim} %\begin{table} %\ttabbox % {\caption{A table ...}\label{...}} % {\begin{tabular}...\end{tabular}} %\end{table} %\end{verbatim} % \begin{table}[h] % \ttabbox % {\caption{A table with caption above}\label{intro:table}} % {\begin{tabular}{|c|c|c|} % \hline % \thead{First data} & \thead{Second data} & \thead{Third data} \\ % \hline % A & B & C \\ % D & E & F \\ % \hline % \end{tabular}} % \end{table}%^^A % % The pair of this command, which creates figures---|\ffigbox|---puts % caption below contents and default width of caption equals % to the width of main text. The default % layout of |\ffigbox| is similar to plain \env{figure} environment; % this macro will be useful for creation of beside floats (see % example with figures~\ref{intro:leftfig} and~\ref{intro:rightfig}) % % The third macro---|\fcapside| (figure~\ref{intro:beside})---puts % caption beside: % %\begin{verbatim} %\begin{figure} %\fcapside % {\caption[Beside caption]{Beside caption ...}\label{...}} % {...} %\end{figure} %\end{verbatim} % \begin{figure}[h] % \fcapside % {\caption[Beside caption (`one-column' width)]{Beside caption % (width of caption equals to the width of object) and more text % and some more text and a bit more text and % a little more text and a little peace of text to fill % space}\label{intro:beside}} % {{\setlength\unitlength{4cm/58}\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{Mouse.picture}}} % \end{figure} % % These three commands abbreviate |\floatbox| command, which creates % float boxes (see section~\ref{sec:floatbox}). % % The \env{floatrow} environment allows to put floats side by side, like % figures~\ref{intro:leftfig} and~\ref{intro:rightfig}. By default \env{floatrow} % creates necessary number of ``columns'' (usually two) where floats are placed: %\begin{verbatim} %\begin{figure} % \begin{floatrow} % \ffigbox % {...}{\caption{...}\label{...}} % % \ffigbox % {...}{\caption{...}\label{...}} % \end{floatrow} %\end{figure} %\end{verbatim} % \begin{figure}[h] % \begin{floatrow} % \ffigbox % {\input{BlackDog.picture}} % {\caption{Left beside figure of simple row}% % \label{intro:leftfig}}% % % \ffigbox % {\caption{Beside figure at the right side of simple figure row}\label{fig:rotrow:FcatI}} % {\input{TheCat.picture}\label{intro:rightfig}} % \end{floatrow} % \end{figure}%^^A % Please note that inside \env{floatrow} you must use |\ffigbox| or |\ttabbox| macros for % each float box. (See also sections~\ref{sec:floatbox} for % more information about commands used in introduction and |\floatbox| command; % and \ref{sec:floatrow} about \env{floatrow} environment.) % % \subsection{Do not write that with \pkg{floatrow} package} % % The \pkg{floatrow} package creates some features or limitations % of float layout building. If you'll write something like %\begin{verbatim} %\begin{figure} %\caption{A figure caption} %\centering \input{Mouse.picture} %\end{figure} %\end{verbatim} % please do not expect that caption appears at the top of figure. % If you want, e.g. to put figure captions above its contents, you must write in preamble % |\floatsetup[figure]{style=plaintop}| (see also section~\ref{sec:floatsetup} % about |\floatsetup| mechanism). % %^^A \begin{figure} %^^A \caption{A figure caption}\label{Wrong:expect} %^^A \centering \input{Mouse.picture} %^^A \end{figure} % % Another example. If you put beside floats by following way: %\begin{verbatim} %\begin{figure} %\begin{minipage}{0.5\textwidth} %\centering \input{Mouse.picture} %\caption{A figure caption} %\end{minipage} %\begin{minipage}{0.5\textwidth} %\captionof{table}{A table caption} %\centering \begin{tabular}{cc} A & B \\ C & D \end{tabular} %\end{minipage} %\end{figure} %\end{verbatim} % you also won't get expected result. Use \env{floatrow}, like in example with % figures~\ref{intro:leftfig} and~\ref{intro:rightfig} to get correct result\footnote{See also % the page~\pageref{mixrow} about mixed float rows}. % % \section{Float Layout Settings}\label{sec:floatsetup} % % The idea of \pkg{floatrow} package is to avoid a lot of repeated code % inside document for creation of desired layout for floats (which also % lowers readability of document), and make layout modification easier % if you ought to change book layout. In this case you could think only % about \emph{markup} of floats and their contents. % % The easy modification of common layout of all float of for one type of % float is possible because of the borrowed code from the \pkg{float} % package, which allows to modify layout of float boxes as a whole. % % The common layout and its modification for captions and special settings for each type % of float supported by \pkg{caption} package, version~3.x. % % The layout settings of \pkg{floatrow} package are built similarly % to \pkg{caption} ones and use |\floatsetup|\footnote{Some key and % option names were changed from version 0.1d, the reason was % to arrange and make names more memorable, and, sometimes, reduction % of their names (see section~\ref{sec:changed}).} mechanism which is % analog to |\captionsetup| one\footnote{Look also at \pkg{caption} % documentation (version 3.0 and later)}. % % \DescribeMacro{\floatsetup} % You may use layout settings stuff as \pkg{floatrow} option in |\usepackage| % line. % \begin{quote} % |\usepackage[|\meta{options}|]{floatrow}| % \end{quote} % You may write % \begin{quote} % |\usepackage[style=boxed,font=small]{floatrow}| % \end{quote} % The same result you get with % \begin{quote} % |\floatsetup{style=boxed,font=small}| % \end{quote} % The lines above declare \texttt{boxed} style and |\small| font for float % contents. These settings were loaded for \emph{all} float types. % % The |\floatsetup| command has following form: % \begin{quote} % |\floatsetup|\oarg{float type}\marg{options} % \end{quote} % % For defining of a special style for float of one type use optional % argument with name of necessary float type. The following command % \begin{quote} % |\floatsetup[table]{style=Plaintop}| % \end{quote} % sets a special float style for tables (captions are placed above % float objects; in the case of beside floats inside \env{floatrow} environment % captions aligned by top line)\footnote{The keys, used in special settings for float % of one type, are always ``stronger'' than synonym keys in common setting. In other % words, if you want after example above to redefine float style for all floats with % \cmd{\floatsetup\{style={\normalfont \meta{option}}\}} you won't change tables---use % \cmd{\floatsetup[table]}\allowbreak\texttt{\{style={\normalfont \meta{option}}\}} % again.}. % % There are also special options of |\floatsetup| for settings for floats % in different positioning: two-column floats (starred environment, like \env{figure*}, you may also use, % for example, for wide floats) rotated floats etc. % The ``strength'' of options in the lists below decreases from % previous item to next one (examples based on \env{figure} environment): % \begin{itemize}\label{stsetorder}\itemsep0pt\parskip0pt % \item Wide or two-column floats (e.g. \env{figure*}, you may load special settings % for starred environments even in one-column document): % \begin{itemize} % \item |\floatsetup[widefigure]|---the ``strongest'' settings; if they absent, % package uses settings from next item; % \item |\floatsetup[widefloat]|---these settings ``stronger'' than settings % from next item (|\floatsetup[figure]|); if they absent, package uses % settings from next item; % \item |\floatsetup[figure]|; if they absent, package uses settings from % optional argument in |\usepackage| line or |\floatsetup{...}| command; % if they absent---default package settings (see page~\pageref{sec:default}); % \end{itemize} % \item Wrapped floats (\env{wrapfigure}): % \begin{itemize}\itemsep0pt\parskip.5\parskip % \item |\floatsetup[wrapfigure]|; % \item |\floatsetup[wrapfloat]|; % \item |\floatsetup[figure]|; % \end{itemize} % \item Rotated floats (in environments, like \env{sidewaysfigure}): % \begin{itemize}\itemsep0pt\parskip.5\parskip % \item |\floatsetup[rotfigure]|; % \item |\floatsetup[rotfloat]|; % \item |\floatsetup[figure]|; % \end{itemize} % \item Wide rotated floats (\env{sidewaysfigure*})\footnote{The settings for wide float % (\texttt{widefloat}, \texttt{widefigure}) removed---use settings % for \texttt{widerotfloat} and---here---\texttt{widerotfigure}}: % \begin{itemize}\itemsep0pt\parskip.5\parskip % \item |\floatsetup[widerotfigure]|; % \item |\floatsetup[widerotfloat]|; % \item |\floatsetup[rotfigure]|; % \item |\floatsetup[rotfloat]|; % \item |\floatsetup[figure]|; % \end{itemize} % \item Floats with beside captions: % \begin{itemize}\itemsep0pt % \item |\floatsetup[capbesidefigure]|; % \item |\floatsetup[capbesidefloat]|; % \item setting of outer environments from previous items: % \env{sidewaysfigure*}, \env{sidewaysfigure}, and \env{figure*}. % \end{itemize} % Please note, that usage if \texttt{style=} key (see beginning of next section) % cancels settings for beside position of caption. % \end{itemize} % You can also create and change special settings for captions, using the % same \meta{float~type} options in |\captionsetup| stuff. % % The next few sections describe keys of |\floatsetup| macro. % % \subsection{Floatsetup Keys}\label{sec:floatsetup} % % \subsubsection{Float Style} % % \DescribeMacro{style=} % The \emph{float style} is specified by % following way: % \begin{quote} % |style=|\meta{float style name}\quad , % \end{quote} % the \meta{float style name} you may take from % table~\ref{tab:floatlayouts}. % % % The caption's \texttt{ruled} style is the only one from \pkg{float} % package, which was predefined in \pkg{caption} package. To use it, % write % \begin{quote} % |\captionsetup[figure]{style=ruled}|\quad . % \end{quote} % % \begin{sidewaystable}%[p]% % \extrarowheight1pt\tabcolsep.5\tabcolsep % \newcommand\leftcell[2][16.5mm]{\extrarowheight0pt\def\arraystretch{.75} % \hspace*{-\tabcolsep}\begin{tabular}[t]{>{\footnotesize % \ttfamily\noindent\vphantom{\small()\mpfootnotemark[1]}}p{#1}}#2\end{tabular}% % \hspace*{-\tabcolsep}\ignorespaces} % \emptyfloatpage % \begin{tabularx}\hsize{|@{}l@{}|@{}l@{}|X|} % \hline % \hfil\thead{Style} & % \hfil\thead{\cmd{\floatsetup} keys} & % \hfil\thead{Description} \\ % \hline % \multicolumn{3}{|c|}{Offered by \pkg{floatrow} package}\\ % \hline \leftcell{\texttt{plain}{\mpfootnotemark[1]}} % & \leftcell{\meta{none}} % &Standard \LaTeX's layout % \\\hline % \leftcell{\texttt{plaintop}{\mpfootnotemark[1]} % \\\hline\texttt{Plaintop}{\mpfootnotemark[2]}} % & \leftcell[50mm]{capposition=top\\\hline % capposition=TOP} % &The same as \texttt{plain} but puts caption at the top---analog of % \pkg{float} package style. Capitalized form aligns captions above % object by top line in \env{floatrow} environment % \\\hline % \leftcell{\texttt{ruled}{\mpfootnotemark[1]} % \\ \\ \\\hline\texttt{Ruled}} % & \leftcell[50mm]{capposition=top,precode=thickrule,\\ % midcode=rule,postcode=lowrule,\\ % heightadjust=all\\\hline % style=ruled,capposition=TOP} % &The first one emulates \pkg{float} package's co-named style. % Capitalized form aligns captions above object by top line in % \env{floatrow} environment % \\\hline % \leftcell{\texttt{boxed}\smash{\mpfootnotemark[1]\mpfootnotemark[2]} % \\ \\ \\\hline\texttt{Boxed} % \\\hline\texttt{BOXED}} % & \leftcell[50mm]{captionskip=2pt,framestyle=fbox,\\ % heightadjust=object,\\framearound=object\\\hline % style=boxed,framefit=yes\\\hline % framestyle=fbox,framefit=yes,\\ % heightadjust=all,framearound=all} % &The first one emulates \pkg{float} package's style: % object's width equals to \cmd{\hsize} or % predefined width of float box; frame climbs out to the right and % left sides. In capitalized form frame fits the % \cmd{\hsize} or predefined width; width of % object reduced to fit inside frame. Uppercase form % draws frame which fits to current \cmd{\hsize} or predefined width, % but around full float: caption, object and foot material. % \\\hline % \multicolumn{3}{|c|}{Offered by \pkg{fr-fancy} package. % They also need \pkg{fancybox} package.}\\ % \hline \leftcell{\texttt{shadowbox}\smash{\mpfootnotemark[2]} % \\\hline\texttt{Shadowbox} % \\\hline\texttt{SHADOWBOX}} % & \leftcell[50mm]{style=boxed,framestyle=shadowbox\\ \hline % style=Boxed,framestyle=shadowbox\\ \hline % style=BOXED,framestyle=shadowbox} % &The same as \texttt{boxed}, \texttt{Boxed} and \texttt{BOXED} % consequently. The \cmd{\fbox} frame changed to \cmd{\shadowbox} % from \pkg{fancybox} package. % \\\hline % \leftcell{\texttt{doublebox}\smash{\mpfootnotemark[2]} % \\\hline\texttt{Doublebox}\\\hline\texttt{DOUBLEBOX}} % & \leftcell[50mm]{style=boxed,framestyle=doublebox\\\hline % style=Boxed,framestyle=doublebox\\\hline % style=BOXED,framestyle=doublebox} % &The same as \texttt{boxed}, \texttt{Boxed} and \texttt{BOXED} % consequently. The \cmd{\fbox} frame changed to \cmd{\doublebox} % from \pkg{fancybox} package. % \\\hline % \multicolumn{3}{|c|}{Additional float style. It also needs % \pkg{fancybox} package.}\\\hline % \leftcell{\texttt{wshadowbox}\smash{\mpfootnotemark[2]} % \\\hline\texttt{Wshadowbox} % \\\hline\texttt{WSHADOWBOX}} % & \leftcell[50mm]{style=boxed,framestyle=wshadowbox\\\hline % style=Boxed,framestyle=wshadowbox\\\hline % style=BOXED,framestyle=wshadowbox} % &The same as \texttt{boxed}, \texttt{Boxed} and \texttt{BOXED} % consequently. The \cmd{\fbox} frame changed to \cmd{\wshadowbox}, % based on \cmd{\shadowbox} (but drops white shade from frame, or % draws edges of ``second copy'') from \pkg{fancybox} package. % \\\hline % \end{tabularx} % % \caption{Float layout styles}\label{tab:floatlayouts}% % % \floatfoot{When there is set float style with frame around object of % fitted to the text width (like \texttt{Boxed}, etc.), and \cmd{\floatbox} % macro uses \cmd{\FBwidth} command as \meta{width} option, which sets box % width equal to float object's width (see page~\pageref{sec:floatbox}), % the width of all float other elements in this case enlarged to get width % of framed object.} % % \footnotetext[1]{The styles analogous to \pkg{float} package style.} % \footnotetext[2]{During usage of these styles in \env{floatrow} environment % you ought to enlarge space between floats, using key \texttt{floatrowsep}).} % \end{sidewaystable} % \label{setup:start} % %^^A\pagebreak[4] % % \subsubsection{Font settings} % % \DescribeMacro{font=} % Defines font for float object contents. Option % analogous to |font| key in |\captionsetup| stuff.\nopagebreak % % Available font setting options: % % \begin{Options}{\OptionLabel} % \item[scriptsize] {\scriptsize Very small size} % \item[footnotesize] {\footnotesize The size usually used for footnotes} % \item[small] {\small Small size} % \item[normalsize] {\normalsize Normal size} % \item[large] {\large Large size} % \item[Large] {\Large Even larger size} % % \item[up] {\upshape Upright shape} % \item[it] {\itshape Italic shape} % \item[sl] {\slshape Slanted shape} % \item[sc] {\scshape Small Caps shape} % % \item[md] {\mdseries Medium series} % \item[bf] {\bfseries Bold series} % % \item[rm] {\rmfamily Roman family} % \item[sf] {\sffamily Sans Serif family} % \item[tt] {\ttfamily Typewriter family} % \end{Options} % % You may set font for float object like % \begin{quote} % |font=small| % \end{quote} % or % \begin{quote} % |font={small,sf}|\quad . % \end{quote} % % \DescribeMacro{footfont=}\label{sec:setfloatfoot}%^^A % Defines font for legends or % explications. This macro uses |\captionsetup| mechanism (because % |\floatfoot| macro uses \pkg{caption} mechanism). By default the font size of float % foot text equals to footnote text: |footfont=footnotesize|. % % \subsubsection{Position of Caption and of Other Elements} % % \DescribeMacro{capposition=} % Defines position of captions. It is % similar to \texttt{position=} key in \pkg{caption} package, but it % has two additional options\footnote{The option \texttt{auto} isn't used by % \texttt{capposition=}.}: \texttt{TOP}, if you prefer to align % captions above objects, in the case of beside floats (in \env{floatrow} environment), % by the top line; and \texttt{beside} to put caption beside object (this option could % be more preferable in settings for one environment, see about % |\thisfloatsetup| on the page~\pageref{thisfloatsetup}): % \begin{Options}{\OptionLabel} % \item[top] caption above object (equals to |\captop| command); % \item[TOP] caption above object and also aligned by top line in float % row (equals to |\CAPTOP| command). % For example the \texttt{Plaintop} style is the variant of \texttt{plaintop} % where used |capposition=TOP| settings, % see tables~\ref{tab:row:tabIII}--\ref{tab:row:tabIV}; % \item[bottom] caption below object (equals to |\capbot| command); % \item[beside] caption beside object (equals to |\capbeside| command). % \end{Options} % % \DeleteShortVerb{\|}% % \begin{table}[h] % \begin{floatrow} % \extrarowheight1pt % \ttabbox % {\caption[Beside table~I long header]%^^A % {Beside table~I with long long long top aligned caption}\label{tab:row:tabIII}}%^^A % {\begin{tabular}{|l|>{\phantom0}c|>{\phantom0}c|} % \hline % \multirowthead{2}[-1ex]{Left Column Head} % & \multicolumn{2}{c|}{\thead{Data}} \\ % \cline{2-3} % & \multicolumn{1}{c|}{\thead{I}} % & \multicolumn{1}{c|}{\thead{II}} % \\\hline % First row & 1 & 2 \\ % Second row & 3 & 4 \\ % Third row & 6 & 8 \\ % Fourth row & \llap{1}0 & \llap{1}6 \\ % \hline % \end{tabular}} % % \ttabbox % {\caption{Beside table~II with top aligned % caption}\label{tab:row:tabIV}}%^^A % {\begin{tabular}{|l|c|c|c|} % \hline % \multirowthead{2}[-1ex]{Column Head} % & \multicolumn{3}{c|}{\thead{Data}} \\ % \cline{2-4} % & \thead{I} & \thead{II} & \thead{III} \\ % \hline % First row & 1 & 2 & \phantom01 \\ % Second row & 3 & 4 & \phantom06 \\ % Third row & 6 & 8 & 28 \\ % \hline % \end{tabular}} % \end{floatrow} % \end{table} % \MakeShortVerb{\|}% % % \emph{Note}. The option \texttt{TOP} uses |\label|---|\ref| % mechanism, so to get necessary result with it you must run \LaTeX{} % twice (when you make changes in contents which could change number % of lines you get correct result also on the second run). % % \DescribeMacro{capbesideposition=} % Defines position of beside captions: vertical and horizontal. % For horizontal position there are defined four options: % \begin{Options}{\OptionLabel} % \item[left] % caption is printed to the left side of object; % \item[right] % caption is printed to the right side of object; % \item[inside] % caption is printed in binding side of page if |twoside| option switched on % in document class; % \item[outside] % least popular option: caption printed in % outer side of page if |twoside| option switched on % in document class. % \end{Options} % % For vertical position there are defined three options % \begin{Options}{\OptionLabel}\samepage % \item[top] % caption aligned to the top of object; % \item[bottom] % caption aligned to the bottom of object; % \item[center] % caption aligned to the center of float contents. % \end{Options} % You may define position of beside caption by following: % \begin{quote} % |capbesideposition={top,outside}|\quad. % \end{quote} % % \noindent % \DescribeMacro{capbesidewidth=} % Defines width of beside caption (this option could be more preferable in settings % for one environment, see about |\thisfloatsetup| on the % page~\pageref{thisfloatsetup}). You may set: % \begin{quote} % |capbesidewidth=4cm|\quad. % \end{quote} % If you'll write \texttt{capbesidewidth=none} or \texttt{capbesidewidth=sidefill} % (this is default key setting), the width of caption will be counted by usual way, % accordingly to float width (i.e. occupies the rest width of float % box, see figure~\ref{fig:beside:mouse} on the % page~\pageref{fig:beside:mouse}). % % \noindent % \DescribeMacro{capbesideframe=} % This boolean key declares whether beside caption stays % near framed object (\texttt{capbesideframe=yes}) in this case caption lines % aligned by top or bottom of frame; otherwise caption lines will be aligned with % top or bottom of framed object's \emph{contents} (\texttt{capbesideframe=no}). % % \penalty-5000 % \subsubsection{Defining Float Foot Position (Legends and Footnotes)}\label{sec:footposition} % % \DescribeMacro{footposition=}\label{foot:pos}%^^A % Defines position of |\footnote|'s and |\floatfoot|'s in float box % with above/below captions. % \begin{Options}{\OptionLabel} % \item[default] % if caption above float object foot material is placed below float object % otherwise---below caption; % \item[caption] % always placed below caption; % \item[bottom] % always placed at the bottom of float box. % \end{Options} % See examples in file \file{frsample01.tex}. In the case of caption % beside float object, footnotes and foot text always placed below % caption. % % \subsubsection{Defining Vertical Alignment}\label{sec:heightadjust} % % \DescribeMacro{heightadjust=} % Defines whether the common maximum height of objects % or/and captions in \env{floatrow} will be used. It has % following options % \begin{Options}{\OptionLabel}\samepage % \item[all] % adjust both caption and object heights (e.g. for styles \texttt{Ruled} and \texttt{BOXED}); % \item[caption] % adjust caption heights (e.g. for styles \texttt{Plaintop}); % \item[object] % adjust object heights (e.g. for styles \texttt{Boxed}); % \item[none] % nothing to be adjusted; % \item[nocaption] % no adjusting for captions; % \item[noobject] % no adjusting for objects; % \end{Options} % You may define height adjustment even as followed: % \begin{quote} % |heightadjust={caption,noobject}|\quad. % \end{quote} % % \noindent % \DescribeMacro{valign=} % Defines vertical alignment of % float objects in \env{floatrow} if |heightadjust=all| or % |heightadjust=object|, or |\floatbox| stuff uses \meta{height} argument with % value, larger than height of object. The options of this key analogous to % vertical alignment option in \env{minipage} environment and |\parbox| command. Default option is |c| % (centered vertical alignment). % \begin{Options}{\OptionLabel}\samepage % \item[t] % aligns objects by top line; % \item[c] % aligns objects by center line; % \item[b] % aligns objects by bottom line; % \item[s] % stretches objects by full height (if it is possible). % \end{Options} % % \subsubsection{Facing Layout} % % \DescribeMacro{facing=} This key defines whether facing layout used % for floats. This key works if |twoside| option switched on in % document class. % % \subsubsection{Defining Float Margins and Object Settings}\label{sec:set:box} % % \DescribeMacro{margins=} % Defines margins of alone float boxes with % captions above/below, of float boxes with beside captions, and of % \env{floatrow} environments. It has following three predefined % options: % \begin{Options}{\OptionLabel} % \item[centering] % float box centered; % \item[raggedright] % float flushed to the left; % \item[raggedleft] % float flushed to the right. % \end{Options} % You may create your own alignment settings, see % page~\pageref{ssec:decl:marg}. % % \noindent % \DescribeMacro{objectset=}\DescribeMacro{justification=} % Defines justification of float object % (float contents). Predefined options are similar to % \texttt{justification=} key in |\captionsetup|. % \begin{Options}{\OptionLabel} % \item[justified] % Typesets the object text as a normal paragraph. (This is the default.) % % \item[centering] % Each line of the object text will be centered. % % \item[raggedright] % Each line of the object text will be moved to the left margin. % % \item[RaggedRight] % Each line of the object text will be moved to the left margin, too. % But this time the command |\RaggedRight| of the \pkg{ragged2e} package % will be used to achieve this. This difference is that this time the word % breaking algorithm of \TeX\ will work inside the object text. % % \item[raggedleft] % Each line of the object text will be moved to the right margin. % % \item[RaggedLeft] % Analogous to |RaggedRight|. % % \end{Options} % You may also create your own settings (see % page~\pageref{ssec:decl:rule}) % % \noindent % \DescribeMacro{floatwidth=} % You may use this key for redefinition of width of floats below. You may use % \begin{quote} % |floatwidth=.6\hsize| % \end{quote} % or % \begin{quote} % |floatwidth=7cm| % \end{quote} % This key could be useful in settings % for one float environment (see about |\thisfloatsetup| on the page % \pageref{thisfloatsetup}). % % If you use option \texttt{floatwidth=sidefill} for objects with beside captions % (in the case of key \texttt{capbesidewidth=} uses absolute value, like \texttt{4cm}) the % object (instead of caption) occupies the rest space of float box % (see appendix, figure~\ref{fig:capbeside:trick} on the % page~\pageref{fig:capbeside:trick}) % % \subsubsection{Defining Float Separators}\label{sec:set:sep} % % \noindent % \DescribeMacro{floatrowsep=} % Sets separation material between beside float boxes (defined % by |\floatbox| macro etc., see page~\pageref{sec:floatbox}) inside \env{floatrow} % environment (see page~\pageref{sec:floatrow}). % % \noindent % \DescribeMacro{capbesidesep=} % Sets separation material between object and beside caption. % % Both key settings work similarly to |labelsep=| key % from |\captionsetup|. % % They use following predefined options: % \begin{Options}{\OptionLabel} % \item[columnsep] % horizontal skip${}={}$|\columnsep|; % \item[quad] % horizontal skip${}={}1$\,em; % \item[qquad] % horizontal skip${}={}2$\,em; % \item[hfil] % horizontal skip${}={}1$\,fil (like |\hfil|); % \item[hfill] % horizontal skip${}={}1$\,fill (like |\hfill|); % \item[none] % empty separator. % \end{Options} % % \subsubsection{Defining Float Rules/Skips}\label{sec:set:rule} % % \DescribeMacro{precode=} % Defines skip, rule or other analogous code above float box. % % \noindent % \DescribeMacro{rowprecode=} % Defines skip, rule or other analogous code above alone float box, or, in the case of beside floats % inside \env{floatrow} environment, above float row (see page~\pageref{fig:rotrow:WcatI}). % % \noindent % \DescribeMacro{midcode=} % Defines skip, rule or other analogous code between % caption above/below and float object. % % \noindent % \DescribeMacro{postcode=} % Defines skip, rule or other analogous code below float box. % % \noindent % \DescribeMacro{rowpostcode=} % Defines skip, rule or other analogous code below alone float box, or, in the case of beside floats % inside \env{floatrow} environment, below float row (see page~\pageref{fig:rotrow:WcatI}). % % For all these keys there are predefined following options (settings % were taken from styles created in \pkg{float} package): % \begin{Options}{\OptionLabel}\makeatletter\@itempenalty10000\makeatother % \item[none] % absent code; % \item[thickrule] % thick rule (.8pt) with 2pt vertical skip below---rule above float box in \texttt{ruled} style; % \item[rule] % rule of default thickness (.4pt), with 2pt vertical skips above and below---middle rule in \texttt{ruled} style; % \item[lowrule] % rule of default thickness (.4pt), with 2pt vertical skip above---rule below float box in \texttt{ruled} style; % \item[captionskip] % vertical skip equal to value, defined in |captionskip=| key. % \end{Options} % You may create your own options, see page~\pageref{ssec:decl:rule}. % % \subsubsection{Defining Float Frames} % % \DescribeMacro{framestyle=} % Defines type of frame; the % \pkg{floatrow} package offers only one type of frame: % \begin{Options}{\OptionLabel} % \item[fbox] % Standard frame. % \end{Options} % There are options for additional frames, offered by \pkg{fr-fancy} % package, installed with \env{floatrow}: % \begin{Options}{\OptionLabel} % \item[colorbox] % colored frame, needs also \pkg{color} package; % if not defined, there is used |\fbox|; % \item[doublebox] % double frame, needs also \pkg{fancybox} package; % \item[shadowbox] % frame with shadow, needs also \pkg{fancybox} package; % \item[wshadowbox] % modified \texttt{shadowbox} frame (frame with ``white shadow''), needs also \pkg{fancybox} package; % \end{Options} % % \noindent % \DescribeMacro{framearound=} % Declares element of float box to be framed: % \begin{Options}{\OptionLabel} % \item[object] % float object contents; % \item[all] % full float box including object, caption, and any foot text. % \end{Options} % % \noindent % \DescribeMacro{framefit=} % Boolean which sets whether the \textit{frame width} will % be equal to current |\hsize| or predefined width of % float box (\texttt{framefit=yes}), in this case object size reduced; % or the frame climbs out in the left and % right sides, and \textit{width of object} has current % |\hsize| or predefined width of float box (\texttt{framefit=no}). % % \noindent % \DescribeMacro{frameset=} % The parameters for chosen frame; there are no options % for this key, just write something like: % \begin{quote} % |frameset={\fboxrule1pt\fboxsep12pt}|\quad. % \end{quote} % % \noindent % \DescribeMacro{colorframeset=} % Offered by \pkg{fr-fancy} package: defines % concrete color box (default is standard |\fbox|). % In current version you may use only |\fcolorbox| as color box. You % may define your color box like % \begin{quote} % |colorframeset={\fcolorbox{white}{yellow}}|\quad. % \end{quote} % % \subsubsection{Defining Float Skips} % % \DescribeMacro{captionskip=} % Defines vertical space between caption % and float object in case of |midcode| key defined as % |midcode=captionskip|; or in case of usage of float styles (\texttt{style=} key) % \texttt{plain}, \texttt{plaintop} or \texttt{Plaintop}: % \begin{quote} % |captionskip=10pt|\quad. % \end{quote} % % \noindent % \DescribeMacro{footskip=} % Defines vertical space before foot material and footnotes. % \begin{quote} % |footskip=4pt|\quad, % \end{quote} % or % \begin{quote} % |footskip=\skip\footins|\quad. % \end{quote} % % \subsubsection{Defining Float Footnote Rule's Style}\label{sec:footnotestyle} % % \DescribeMacro{footnoterule=} % Defines type of footnote rule for footnotes inside float environment. % \begin{Options}{\OptionLabel} % \item[normal] % standard \LaTeX{} definition, used in \env{minipage} environments, the width of it equals % to 0.4 of current with of text (|\columnwidth|); % \item[limited] % like previous one but max width of footnote rule equals to the value % defined by |\frulemax| command, like: % \begin{quote} % |\newcommand\frulemax{1in}| % \end{quote} % \item[fullsize] % rule to full current text width. % \item[none] % Absent rule. % \end{Options} % % \label{setup:end} % % %^^A ???needed? % \subsubsection{Loading Style for Fancy Boxes} % % \DescribeMacro{fancyboxes=} % This boolean key loads \pkg{fr-fancy} package. This key you may use % only in optional argument in |\usepackage| line. % % \subsection{Settings for One Float} % % \DescribeMacro{\thisfloatsetup}\label{thisfloatsetup}%^^A % You may define some settings only for one float just % before necessary environment. Command |\thisfloatsetup| could % contain the same keys and options as in |\floatsetup|. It has % only mandatory argument\footnote{The \cmd{\thisfloatsetup} defined % as abbreviation of \cmd{\floatsetup[tmpset]} command.}.\par\strut\par\kern-\baselineskip % %^^A Please note that |\thisfloatsetup| doesn't overwrite co-named key %^^A declarations from settings like |\floatsetup[|\meta{options}|]|---this command %^^A created e.g for temporary change of float or caption widths: keys \texttt{captionwidth=} %^^A \texttt{floatwidth} do not used usually in |\floatsetup| stuff. % % % \subsection{Clearing of Previous Float Type Settings} % % \DescribeMacro{\clearfloatsetup} % If you want to get rid of parameters marked % for an automatic use within a particular environment % you can use the command\footnote{See also documentation % of \pkg{caption} package about \cmd{\clearcaptionsetup} command}: % \begin{quote} % |\clearfloatsetup|\marg{Typ}\quad. % \end{quote} % % %^^A !!!for footnotes! % %^^A \newpage % % \subsection{The Default Float Type Settings}\label{sec:default} % % The following keys and options are switched on when \pkg{floatrow} % package loaded. They equal to \texttt{plain} style: % \begin{Options}{\OptionLabel} % \item[font=normalsize] % \item[footfont=footnotesize] % \item[capposition=bottom] % \item[capbesideposition=inside] % \item[capbesideframe=no] % \item[footposition=default] % \item[heightadjust=none] % \item[facing=no] % \item[margins=centering] % \item[objectset=centering] ($\equiv$\texttt{justification=centering}) % \item[floatrowsep=columnsep] % \item[capbesidesep=columnsep] % \item[precode=none] % \item[rawprecode=none] % \item[postcode=none] % \item[rawpostcode=none] % \item[midcode=captionskip] % \item[captionskip=10pt] % \end{Options} % % % \subsection{Defining new options} % % In the next few sections goes a small list of commands, which define key % options for |\floatsetup|. The examples of option definitions were taken % mainly from \pkg{floatrow} definitions. % % \subsubsection{Float Style} % % \DescribeMacro{\DeclareFloatStyle} % Defines new float style. Example shows definition of new float % style \texttt{MyBoxed}. The figures~\ref{fig:plain:MyBoxed}, and % some others in current documentation show result. %\begin{verbatim} %\DeclareFloatStyle{MyBoxed}{style=Boxed,captionskip=5pt, % frameset={\fboxrule1pt\fboxsep12pt}} %\floatsetup[figure]{style=MyBoxed} %\end{verbatim} % % \begingroup % % \floatsetup[figure]{style=MyBoxed} % \begin{figure}[!t] % {\input{BlackCat.picture}}% % \caption{%^^A % Plain figure in \texttt{MyBoxed} style}% % \label{fig:plain:MyBoxed}% % \floatfoot{Much more, more and more and more and more and more and more and % more and more text inside macro \cmd{\floatfoot}}% % \end{figure} % % The same result you get with: %\begin{verbatim} %\floatsetup[figure]{style=Boxed,captionskip=5pt, % frameset={\fboxsep12pt\fboxrule1pt}} %\end{verbatim} % \endgroup % % \subsubsection{Defining Float Rules/Skips}\label{ssec:decl:rule} % % \DescribeMacro{\DeclareFloatVCode} % This command defines the skip, rule or other analogous code above and below full float % box and between caption above/below and % object. The defined option you may use in \texttt{rowprecode}, % \texttt{precode}, \texttt{midcode}, \texttt{postcode}, and % \texttt{rowpostcode} keys. % \begin{quote} % |\DeclareFloatVCode{thickrule}{\hrule height.8ptdepth0pt%|\\ % \strut\qquad|\kern2pt}| % \end{quote} % % \subsubsection{Float Object Justification}\label{ssec:decl:marg} % % \DescribeMacro{\DeclareObjectSet} % You may define justification for \texttt{objectset=} key like\nopagebreak: % \begin{quote} % |\DeclareObjectSet{centering}{\centering}| % \end{quote} % In option's definition you may try to include any regular commands % which you need to put before each object contents in float % environment\footnote{You may also use key options declared by % \cmd{\DeclareCaptionJustification} command of \pkg{caption} package % as options for \texttt{objectset=} key.}.\par\strut\par\kern-\baselineskip % % \subsubsection{Float Box Alignment (and Some Other Settings)}\label{ssec:decl:marg} % % \DescribeMacro{\DeclareMarginSet}\label{fsetup:besmarg}%^^A % You may define box alignment for float box (\texttt{margins=} key) like: % \begin{quote} % |\DeclareMarginSet{center}{%|\\ % | \setfloatmargins{\hfil}{\hfil}}| % \end{quote} % or like (see also sample files) % \begin{quote} % |\DeclareMarginSet{outside}{%|\\ % | \setfloatmargins*{\hfil}{}}| % \end{quote} % % Non-starred form of |\setfloatmargins| defines left and right % margin. % \begin{quote} % |\setfloatmargins{|\meta{left margin}|}{|\meta{right margin}|}| % \end{quote} % % Starred form, |\setfloatmargins*|, defines facing layout: inside and % outside margin. % \begin{quote} % |\setfloatmargins*{|\meta{inside margin}|}{|\meta{outside margin}|}| % \end{quote} % % You may set even much more complex definition: % \begin{quote}\leftmargin0pt % |\DeclareObjectSet{facingrule}{%| % |\setfloatmargins*{%|\\ % | \floatfacing{\hskip-12pt\vrule width4pt\hskip8pt\hfill}%|\\ % | {\hfill\hskip8pt\vrule width4pt\hskip-12pt}}{}}| % \end{quote} % the |\floatfacing| defines following % \begin{quote} % |\floatfacing{|\meta{odd page definition}|}{|\meta{even page definition}|}| % \end{quote} % This macro has also starred form |\floatfacing*|, % which you can use in key options for |\captionsetup| stuff. % % The |\setfloatmargins| consists of three macros which set margins % for three main variants of float positions: % \begin{Options}{\OptionLabel} % \item[\cmd{\floatboxmargins}]sets left/right margins around alone float box; % \item[\cmd{\floatrowmargins}]sets left/right margins around \env{floatrow} environment; % \item[\cmd{\floatcapbesidemargins}]sets left/right margins around % alone float box with beside caption. % \end{Options} % The grammar for using three mentioned commands is similar to % |\setfloatmargins|. The settings which use |\floatfacing| command % work only in the case when key \texttt{facing=yes} used. % % \emph{Note}. The \pkg{floatrow} expands some settings of table layout to the \env{longtable} % environment, so you may set |\LTleft| and |\LTright| parameters inside |\setfloatmargins| % command. For example, \texttt{centering} option was defined like: % \begin{quote} % |\DeclareMarginSet{centering}{\setfloatmargins{\hfill}{\hfill}%|\\ % | \LTleft=\fill \LTright=\fill}| % \end{quote} % % \subsubsection{Defining Float Separators} % % \DescribeMacro{\DeclareFloatSeparators}\label{decl:sep}%^^A % You may to define separator % between float boxes, or float object and beside caption, for example: % \begin{quote} % |\DeclareFloatSeparators{columnsep}{\hskip\columnsep}| % \end{quote} % or more complex, using \pkg{color} package, and |\floatfacing| macro % (do not forget the \texttt{facing=yes} key): % \begin{quote} % |\DeclareFloatSeparators{colorsep}%|\\ % | {\begingroup\color{blue}%|\\ % | \floatfacing{\hskip14pt\vrule width1.8pt\hskip2pt}%|\\ % | {\hskip2pt\vrule width1.8pt\hskip14pt}%|\\ % | \endgroup}| % \end{quote} % % You may use defined option by both \texttt{floatrowsep=} and \texttt{capbesidesep=} % keys\footnote{You may use key options declared by % \cmd{\DeclareCaptionLabelSeparator} command.}.\par\strut\par\kern-\baselineskip % % \subsubsection{Float font} % % \DescribeMacro{\DeclareFloatFont} % With this macro you may define new % option for font (\texttt{font=} key) of float contents. This macro works like % |\DeclareCaptionFont| in \pkg{caption} package. (You may also use % key options declared by |\DeclareCaptionFont| command.)\par\strut\par\kern-\baselineskip % % \subsubsection{Defining Float Footnote Rule's Style} % % \DescribeMacro{\DeclareFloatFootnoterule} % You may define new footnoterule (\texttt{footnoterule=} key) like: % \begin{quote} % |\DeclareFloatFootnoterule{fullsize}{%|\\ % | \kern-3\p@|\\ % | \hrule \@width\hsize\kern 2.6\p@}| % \end{quote} % Remember, that summary vertical height for footnote rule must be % equal to~0pt. %\newpage % \section{Creation of New Float Type} % % \DescribeMacro{\DeclareNewFloatType} % For creation of new float type there was created % |\DeclareNewFloatType| command which also uses % \meta{key}${}=\nobreak {}$\meta{value} mechanism: % \begin{quote} % |\DeclareNewFloatType{|\meta{type}|}{|\meta{options}|}| % \end{quote} % The \meta{type} argument includes the new float environment name.\\ % The \meta{options} could include following keys: % % \noindent % \DescribeMacro{placement=} % The option of this key could have any combination of letters % \texttt{t}, \texttt{b}, \texttt{h}, and \texttt{p}, which % define placement of current float type on the page in % the case float environment has no any option argument. % (As default is declared \texttt{placement=tbp}.) % % \noindent % \DescribeMacro{name=} % Defines the name of environment in the caption % label. (As default for caption label is declared the % name of environment.) % % \noindent % \DescribeMacro{fileext=} % Defines the file extension from which % gathered list of floats. (As default, captions % are gathered in \texttt{lox}-file). % % \noindent % \DescribeMacro{within=} % Declares the section head of document, by which % current float resets its numbering to zero. If this key absent, float % increases during whole documentation. % % \noindent % \DescribeMacro{relatedcapstyle=} % In \pkg{float} package the non-starred % \cmd{\newfloat}/\cmd{\restylefloat} macros attach % related caption style for float styles (see section % \ref{sec:floatst}). If you use |\DeclareNewFloatType| mechanism and exists (you created % it by |\captionsetup|) co-named, i.e. related, caption style you may attach this % style with key \texttt{relatedcapstyle=yes}. % %^^A \begin{quote} % %^^A |\captionsetup[figure]{style=ruled}| % %^^A \end{quote} % % The |\DeclareNewFloatType| was used for defining of \env{Example} % environment (see page \pageref{exa1.1}). It consists of following % code: % \begin{quote} % |\DeclareNewFloatType{Example}%|\\ % | {placement=t,within=section,fileext=lox}| % \end{quote} % % \section{Borrowed code} % % \subsection{\pkg{float} Package: Compatibility}\label{sec:floatst} % % The \pkg{floatrow} package includes some macros of \pkg{float} (version % v1.3d, dated 2001/11/08) % with necessary modifications. In the case of loaded \pkg{float} % package before \pkg{floatrow} you'll get error message. % % \emph{Note}. % In the case of some packages % could call \pkg{float} package\footnote{I'm aware about \pkg{algorithm} % package.} the \pkg{floatrow} package loads code which emulates % already loaded \pkg{float} package v1.3, so next requests for \pkg{float} are ignored. % This will help to avoid strange error messages % in the case of these packages loaded \emph{after} \pkg{floatrow}. % Please note that packages, which load \pkg{float} must be loaded % \emph{after} \pkg{floatrow}. % % I hope that old documents could work with \pkg{floatrow}. The first % limitation or feature is---if you didn't use any |\restylefloat| % command---all figures and tables appear in \texttt{plain} float style with % bottomed captions. Another limitation---you ought to put all % |\newfloat| and |\floatstyle| and |\restylefloat| commands in % preamble, before |\begin{document}|. The commands |\restylefloat|, % |\newfloat| and |\floatstyle| are obsolete but supported\footnote{The better way is to use % \cmd{\floatsetup} macros. The \pkg{floatrow} package supports obsolete macros but there % is no guarantee.}. See also % section~\ref{float-obs} about translation of these commands % into |\floatsetup| command. % % Sections, signed with ``[\pkg{float}]'' were borrowed from % \pkg{float}'s documentation. % % \subsubsection{The User Interface---New Floats [\pkg{float}]}\label{sec:floatborrowI} % % \DescribeMacro{\newfloat} % The most important command in \pkg{float} % is the |\newfloat| command\footnote{It doubles the \cmd{\DeclareNewFloatType} % command.}. It is patterned on % |\newtheorem|. The |\newfloat| command takes three required and one % optional argument; it is of the form % \begin{quote} % \hspace*{\MacroIndent}|\newfloat{|\meta{type}|}{|^^A % \meta{placement}|}{|\meta{ext}|}[|\meta{within}{\tt]} % \end{quote} % \begin{itemize} % \item \marg{type} is the `type' of the new class of floats, like % \texttt{program} or \texttt{algorithm}. After the appropriate % |\newfloat|, commands like |\begin{program}| or |\end{algorithm*}| % will be available. % \item \marg{placement} gives the default placement % parameters for this class of floats. The placement parameters are % the same as in standard \LaTeX, i.e., \texttt{t}, \texttt{b}, % \texttt{p} and \texttt{h} for `top', `bottom', `page' and `here', % respectively. % \item \marg{ext} When \LaTeX\ writes the captions to an auxiliary file % for the list of figures (or whatever), it'll use the job name % followed by \marg{ext} as a file name. % \item \oarg{within} Finally, the optional % argument \meta{within} determines whether floats of this class will % be numbered within some sectional unit of the document. For example, % if \oarg{within}${}={}$\texttt{chapter}, the floats will be numbered % within chapters. (In standard \LaTeX, this happens with figures and % tables in the \cls{report} and \cls{book} document styles.) As an % example, Program~\ref{prog1.1} was created by a command sequence % similar to that shown in the following % Example\footnote{Settings for Example float % environment were created by \cmd{\DeclareNewFloatType} macro stuff.}. % \end{itemize} % \emph{Floatrow note.} % There is also created a |\newfloat*| pair, which works similar to % |\restylefloat*| command (see below). % \begin{Program} %\begin{verbatim} %#include % %int main(int argc, char **argv) { % int i; % for (i = 0; i < argc; ++i) % printf("argv[%d] = %s\n", i, argv[i]); % return 0; %} %\end{verbatim} % \caption{The first program. This hasn't got anything to do with the % package but is included as an example. % Note the \texttt{ruled} float style.% % \label{prog1.1}} % \end{Program} % \begin{Example}[H] % \begin{verse} % |\floatstyle{ruled}|\\ % |\newfloat{Program}{tbp}{lop}[section]|\\ % \dots\ loads o' stuff \dots\\ % |\begin{Program}|\\ % |\begin{verbatim}|\\ % \dots\ program text \dots\\ % |\end{verbatim}|\\ % |\caption{|\dots\ caption \dots|}|\\ % |\end{Program}| % \end{verse} % \caption{This is another silly floating Example. Except % that this one doesn't actually float % because it uses the {\tt[H]} optional parameter % to appear \textbf{Here}. (Gotcha.)}\label{exa1.1} % \end{Example} % % \DescribeMacro{\floatstyle} % The |\floatstyle| command sets a default % float style. This float style will be used for all the floats that % are subsequently defined using |\newfloat|, until another % |\floatstyle| command appears. The |\floatstyle| command takes one % argument, the name of a float style. For instance, % |\floatstyle{ruled}|. Specifying a string that does not name a valid % float style is an error. % % \DescribeMacro{\floatname} % The |\floatname| command lets you define % the \emph{float name} that \LaTeX\ uses in the caption of a float, % i.e., `Figure' for a figure and so on. For example, % |\floatname{program}{Program}|. The |\newfloat| command sets the % float name to its argument \meta{type} if no other name has been % specified before. % % \DescribeMacro{\floatplacement} % The |\floatplacement| command resets % the default placement specifier of a class of floats. E.g., % |\floatplacement{figure}{tp}|. % % \DescribeMacro{\restylefloat}\nopagebreak % The |\restylefloat| command is necessary % to change styles for the standard float types % \texttt{figure} and \texttt{table}. Since these aren't usually % defined via |\newfloat|, they don't have a style associated with % them. Thus you have to say, for example, % \begin{quote} % \hspace*{\MacroIndent}|\floatstyle{ruled}|\\ % \hspace*{\MacroIndent}|\restylefloat{table}| % \end{quote} % to have tables come out \texttt{ruled}. The command also lets you % change style for floats that you define via |\newfloat|, although % this is, typographically speaking, not a good idea. See % table~\ref{table1} for an example\footnote{The \pkg{float} package % created special caption style with bold label for \texttt{boxed} % style. Please note that \texttt{plain} and \texttt{boxed} float % styles have not any special settings in \pkg{caption} 3.x package. % To emulate \texttt{boxed} style from \pkg{float} documentation there % were: cleared all special caption settings for tables, and restored default % colon separator after label.}. There is a |\restylefloat*| command % which will restyle an existing float type but will keep the new % float style from taking over the |\caption| command. In this case % the user is responsible for handling their own captions. % \DeleteShortVerb{\|} % %^^AEmulation of float's documentation settings % %^^A\floatstyle{boxed} % %^^A\restylefloat{table} % \begingroup % \clearcaptionsetup{table} % \captionsetup{labelsep=default,labelfont=bf} % \floatsetup[table]{style=boxed} % \begin{table} \def\B#1{$\displaystyle{n\choose#1}$} % \begin{center} \begin{tabular}{c|cccccccc} % $n$&\B0&\B1&\B2&\B3&\B4&\B5&\B6&\B7\\ \hline % 0 & 1\\ % 1 & 1&1\\ % 2 & 1&2&1\\ % 3 & 1&3&3&1\\ % 4 & 1&4&6&4&1\\ % 5 & 1&5&10&10&5&1\\ % 6 & 1&6&15&20&15&6&1\\ % 7 & 1&7&21&35&35&21&7&1 % \end{tabular} \end{center} % \caption{Pascal's triangle. This is a re-styled \LaTeX\ \texttt{table}.% % \label{table1}} % \end{table} % \endgroup % \MakeShortVerb{\|} % % \subsubsection{How macros from \pkg{float} package % work in \pkg{floatrow}}\label{float-obs} % % The combination of |\floatstyle|\marg{style} and any of % \cmd{\newfloat}\marg{float} or % \cmd{\restylefloat}\marg{float} commands in \pkg{floatrow} package % set float layout in the way: % \begin{quote} % |\floatsetup|\oarg{float}|{style=|\meta{style}|}| % \end{quote} % Please note that co-named keys from |\floatsetup|\oarg{float}|{...}| % will overwrite the |\floatsetup{...}| settings. That means that if you % set float layout with these obsolete commands, the next layout tuning you % ought to do with |\floatsetup|\oarg{float}|{...}| stuff only. % % \subsubsection{Printing of Float List [\pkg{float}]}\label{sec:floatborrowIa} % % \nobreak\DescribeMacro{\listof} % \nopagebreak % The |\listof| command produces a list of all the floats % of a given class. Its syntax~is\\[2pt] % \hspace*{\MacroIndent}|\listof{|\meta{type}|}{|\meta{title}^^A % |}|\\[2pt] % \meta{type} is the float type given in the |\newfloat| command. % \meta{title} is used for the title of the list as well as the % headings if the current page style includes them. Otherwise, the % |\listof| command is analogous to the built-in \LaTeX\ commands % |\listoffigures| and |\listoftables|. % % \subsubsection{The User Interface---\texttt{[H]} % Placement Specifier [\pkg{float}]}\label{sec:floatborrowII} % % Many people find \LaTeX's float placement specifiers too % restrictive. A Commonly Uttered Complaint (CUC) calls for a way to % place a float exactly at the spot where it occurs in the input file, % i.e., to \emph{not} have it float at all. It seems that the % \texttt{[h]} specifier should do that, but in fact it only suggests % to \LaTeX\ something along the lines of ``put the float here if it's % OK with you''. As it turns out, \LaTeX\ hardly ever feels inclined % to actually do that. This situation can be improved by judicious % manipulation of float style parameters. % % The same effect can be achieved by changing the actual method of % placing floats. David Carlisle's \pkg{here} option introduces a new % float placement specifier, namely \texttt{[H]}, which, when added to % a float, tells \LaTeX\ to ``put it HERE, period''. If there isn't % enough space left on the page, the float is carried over to the next % page together with whatever follows, even though there might still % be room left for some of that. This style option provides the % \texttt{[H]} specifier for newly defined classes of floats as well % as the predefined \texttt{figure}s and \texttt{table}s, thereby % superseding \pkg{here}. David suggests that the \pkg{here} option be % withdrawn from the archives in due course. % % The {\tt[H]} specifier may simply be added to the float as an % optional argument, like all the other specifiers. It may \emph{not} % be used in conjunction with any other placement specifiers, so % {\tt[Hhtbp]} is illegal. Neither may it be used as the default % placement specifier for a whole class of floats. The following table % is defined like this: % \begin{verse} % |\begin{table}[H]| \\* % |\begin{tabular}{cl}|\\ % |\tt t & Top of the page\\|\\* % \dots\ more stuff \dots\\ % |\end{tabular}| % \end{verse} % (It seems that I have to add some extraneous chatter here just so % that the float actually comes out right in the middle of a printed % page. When I \LaTeX ed the documentation\footnote{For \pkg{float} % package.} just now it turned out that there was a page break that % fell exactly between the ``So now'' line and the float. This % wouldn't Prove Anything. Bother.) So now we have the following float % placement specifiers: % \begin{table}[H] % \begin{tabular}{cl} % \tt t & Top of the page\\ % \tt b & Bottom of the page\\ % \tt p & Page of floats\\ % \tt h & Here, if possible\\ % \tt H & Here, definitely % \end{tabular} % ^^A\caption{Could it be that this just needs a caption?} % \end{table} % % \subsection{\pkg{rotfloat} Package} % % Code of \pkg{rotfloat} package was also borrowed by \pkg{floatrow} % package. In the case of loaded \pkg{rotfloat} package before \pkg{floatrow} you will get % error message. % % The \pkg{floatrow} package loads code which pretends that % \pkg{rotfloat} already loaded, so next loads are ignored. % The \pkg{rotfloat} allowed in the |\usepackage| % line with \pkg{rotating} package, which could have options. It is necessary % to delete \pkg{rotfloat} package from |\usepackage| line % where also \pkg{rotating} package loaded with options: otherwise % you may get `option clash' error message. % % \section{Macros for Building Floats} % % \subsection{The Floatbox Macro}\label{sec:floatbox} % % This package offers macro, which creates necessary layout of float % object contents and caption (see also the introduction). % The main macro looks like: % \begin{quote} % |\floatbox[|\meta{preamble}|]{|\meta{captype}|}[|^^A % \meta{width}|][|\meta{height}|][|\meta{vert pos}|]|\\ % | {|\meta{caption}|}{|\meta{object}|}|\footnote{The % order of mandatory arguments and their contents makes not % difference during building of float box. This macro % historically needs two mandatory arguments, but they could % be filled freely.} % \end{quote} % where\label{floatboxsets}: % \begin{description}\itemsep0pt % \item[\meta{preamble}]there could be |\capbeside| command which % places caption beside float contents; |\nocapbeside| % (to put caption above/below, accordingly % to float type's style); or another systematic command % (even with usage of |\captionsetup| and |\thisfloatsetup|---see % examples in documentation and appendix). % \item[\meta{captype}]the type of float this command created for; % \item[\meta{width}]the width of object---caption box % (in case of caption above or below object), % or width of object box (if caption stays beside object). % The command |\FBwidth| in the \meta{width} argument % allows usage of natural width of float contents.\par % \emph{Note}. If you use \verb|\FBwidth| in \meta{width} % argument be sure that object contents can be placed in |\hbox| % (you only allowed to use |\vspace| command at the very % beginning and very end of object contents for fine tuning % of vertical spaces); % \item[\meta{height}]the height of object---caption box % (in case of caption above or below object), % or height of object box (if caption stays beside object); % \item[\meta{vert pos}]vertical alignment of object contents in object's % box in case of \meta{height} argument has larger value than height of object contents, % float placed inside \env{floatrow}. % \item[\meta{caption}]text of caption and legends (you may use |\floatfoot| % command (see page~\pageref{subsec:floatfoot}); you may also use % |\footnote|/|\mpfootnotemark|/|\footnotetext| stuff for footnotes inside float, or |\floatfoot| command; % \item[\meta{object}]Contents of float; you may use % |\footnote|/|\mpfootnotemark|/|\footnotetext| stuff or |\floatfoot| command. % \end{description} % % \begingroup % First simplest example: %\begin{verbatim} %\begin{figure} %\floatbox{figure}[4cm] %{\caption{The simple example ...}% %\label{fig:WcatI}} %{\input{TheCat.picture}} %\end{figure} %\end{verbatim} % created the picture in the figure~\ref{fig:WcatI}.\pagebreak[3] % \begin{figure} % \floatbox{figure}[4cm] % {\caption{The simple example of \cmd{\floatbox}}% % \label{fig:WcatI}} % {\unitlength1.28\unitlength\input{TheCat.picture}} % \end{figure}% % \endgroup % % The more preferable way for usage of |\floatbox| is to put table caption \emph{above} table % contents and set caption width equal to table width. Caption % position was defined in document preamble by command % |\floatsetup[table]{style=Plaintop}| %\begin{verbatim} %\begin{table} %\floatbox{table}[\FBwidth] {\caption{Simple tabular in %\cmd{\floatbox} % with caption above}\label{tab:tabII}} %{\begin{tabular}{|l|c|c|} % \hline % Column head & Data I & Data II \\ % \hline % First row & 1 & 2 \\ %... % \hline %\end{tabular}} %\end{table} %\end{verbatim} % \DeleteShortVerb{\|}% % \begin{table} % \floatbox{table}[\FBwidth] % {\caption{Simple tabular with caption % above}\label{tab:tabII}} % {\begin{tabular}{|l|c|c|} % \hline % \thead{Column head} & \thead{Data I} & \thead{Data II} \\ % \hline % First row & 1 & 2 \\ % Second row & 3 & 4 \\ % Third row & 6 & 8 \\ % Fourth row & \llap{1}0 & \llap{1}6 \\ % \hline % \end{tabular}} % \end{table}% % \MakeShortVerb{\|}% % as shown in table~\ref{tab:tabII}. To fit size of caption (i.e full % float box) to size of \env{tabular} environment there was used |\FBwidth| % command in \meta{width} argument. % % The next example shows \env{figure} environment with beside caption. % In this example only |\capbeside| command used in \meta{preamble} % argument, and |\FBwidth| in \meta{width} argument. The % caption occupies the rest space of float box's width, |\hsize| (in current % example the width float box equals to main text width---|\textwidth|). % %\begin{verbatim} %\begin{figure} %\floatbox[\capbeside]{figure}[\FBwidth] % {\caption[Beside caption]{Beside caption ...}\label{...}} % {...} %\end{figure} %\end{verbatim} % \begin{figure}[h] % \floatbox[\capbeside]{figure}[\FBwidth] % {\caption[Beside caption]{Beside caption and more text % and some more text and a bit more text and % a little more text and a little peace of text to fill % space}\label{fig:beside:mouse}} % {{\setlength\unitlength{4cm/58}\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{Mouse.picture}}} % \end{figure} % % The default width of beside object and caption are equal to one % ``column'' width, i.e. half of current |\hsize| (figure~\ref{intro:beside}) width excluding float % margins and separation material between float and caption. (See more % examples with float and beside captions in appendix, % page~\pageref{fig:Idog:w}.) % % % \subsubsection{User Commands for Float Boxes} % % The usage of plain |\floatbox| command sometimes is rather complex. % You may define commands-abbreviations for your own purposes and % define there some additional style settings. % % The definition of new float abbreviation looks like: % \begin{quote} % |\newfloatcommand|\marg{command}%^^A\\\strut\qquad % \marg{captype}\oarg{preamble}\oarg{default width} % \end{quote} % where: % \begin{description} % \item[\meta{command}]the user's command name (without backslash); % \item[\meta{captype}]the name of float environment % this command is created for; % \item[\meta{preamble}] % you may use commands, mentioned in page~\pageref{floatboxsets} % and other layout commands, like was shown in examples; % you may try to add any other regular command (e.g. |\captionsetup| % or |\thisfloatsetup| stuff); % \item[\meta{default width}]here you put any dimension like |6cm| % or |.75\textwidth|\footnote{There is also exists possibility to set % common width for current float type of float using \texttt{floatwidth} % key in \cmd{\floatsetup} stuff.}; if you put |\FBwidth| % command the width of object---caption box (in case of % caption above or below object---there could be defined % |\nocapbeside| in \meta{preamble}) or width of object box (if caption % stays beside object---|\capbeside| in \meta{preamble}) will be equal % to width of object. % \end{description} % % There are three already defined commands-abbreviations:\label{abbrcom} % \begin{quote} % |\newfloatcommand{ffigbox}{figure}[\nocapbeside]|\\* % |\newfloatcommand{fcapside}{figure}[\capbeside]|\\* % |\newfloatcommand{ttabbox}{table}[\captop][\FBwidth]| % \end{quote} % First two defined for figures and last one---for table. You may % redefine existing macros using |\renewfloatcommand| command (it uses the same % arguments as |\newfloatcommand| one). % % % \subsection{Building Float Row}\label{sec:floatrow} % % If you need to put two or more floats of one type side by side, you % may use \env{floatrow} environment. % % This environment looks like: % \begin{quote} % |\begin{floatrow}[|\meta{number of beside floats}|]|\\ % |\floatbox...|\\ % |...|\\ % |\floatbox...|\\ % |...|\\ % |\end{floatrow}| % \end{quote} % % And here is example. The first float (used |\ffigbox|) has default width equal to % ``column'' width, the next uses width of included graphic (uses command % |\FBwidth| in optional argument \meta{width}), third one occupies the rest % horizontal space of page which was counted with command |\Xhsize|. % % \emph{Note}. Usually the command |\Xhsize| is used for the last float box. But % if you use \pkg{calc} package you may try to use |\Xhsize| earlier, % if the \emph{absolute} value of the width of float boxes to the % right in float row is known, or set something in \meta{width} % argument like |\Xhsize/2| and then |\Xhsize| for two last % |\floatbox|'es, see sample files~\file{frsample10}--\file{frsample12}, % and also sample file \file{fr-sample.tex}. %\begin{verbatim} %\begin{floatrow}[3] %\ffigbox %{\caption{Beside figure~I...}...} %{...} % %\ffigbox[\FBwidth] %{\caption{Beside figure~II...}...} %{...} % %\ffigbox[\Xhsize] %{\caption{Beside figure~III...}...} %{...} %\end{floatrow} %\end{figure} %\end{verbatim} % \begin{figure} % \begin{floatrow}[3] % \ffigbox % {\caption{Beside figure~I, ``column'' width}% % \label{fig:row:WcatI}} % {\unitlength1.25\unitlength\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{TheCat.picture}} % % \ffigbox[\FBwidth] % {\caption{Beside figure~II in \env{floatrow}, float box has the width of graphic}% % \label{fig:row:BcatI}} % {\unitlength1.25\unitlength\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{TheBlackCat.picture}} % % \ffigbox[\Xhsize] % {\caption{Beside figure~III in \env{floatrow}, % occupies the rest of row}% % \label{fig:row:mouseI}} % {{\setlength\unitlength{\hsize/58}\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{Mouse.picture}}} % \end{floatrow} % \end{figure}% % The result you see in the row of % figures~\ref{fig:row:WcatI}--\ref{fig:row:mouseI}. The vertical % alignment of floats lays on the bottom of upper part (here: objects) of float and % the top of lower part (captions). % % \subsection{Usage of Footnotes Inside Float Environment}\label{sec:floatfootnote} % % Sometimes table or figure contents have material, which authors mark % and then write some explanation like footnotes. Current package has mechanism % which allows to put footnotes inside float environment, in the same way as % is in \env{minipage} environment. % % In the case of few elements have the same footnote, we cannot % use standard |\footnotemark|---|\footnotetext| combination, because of % |\footnotemark| creates the sign of main text footnote. % For these cases current package offers |\mpfootnotemark| macro % instead of |\footnotemark|% % \footnote{The same macro also is defined in \pkg{footmisc} package, % version 4.10, dated 2003/01/20.}. % % The |\floatbox| macro uses special own definition of footnote rule % (the |\FBfootnoterule| command) and skip before footnotes and % explications or legends (|footskip=|). (See also % page~\pageref{sec:footnotestyle} for variants of footnote rule.) % % \subsubsection{The Legend-Like Macro}\label{subsec:floatfoot} % % In the case of table or figure have some additional explanations % which could not put in caption contents and they are definitely not % a footnote you may use |\floatfoot| command. The |\floatfoot| is % build by usage of |\caption| stuff and uses caption's justification, % but star form (|\floatfoot*|) prints its contents as plain unindented paragraph % (see table~\ref{tab:floatfoot}). % % For defining of explication font use \texttt{footfont=} key % (page~\pageref{sec:setfloatfoot}) in |\floatsetup|. You may try to % define special settings for float foot using % \cmd{\captionsetup[floatfoot]} setup. %\begin{verbatim} %\begin{table} %\ttabbox %{\caption{Table with additional foot material}% %\label{tab:floatfoot}} %{\extrarowheight1pt % \tabcolsep2\tabcolsep % \begin{tabular}{|l|c|c|} % \hline % ... % \end{tabular}% % \floatfoot*{`Data I' column ...}} %\end{table} %\end{verbatim} % \DeleteShortVerb{\|}% % \begin{table} % \ttabbox % {\caption{Table with additional foot material}%^^A % \label{tab:floatfoot}}%^^A % {\extrarowheight1pt\tabcolsep2\tabcolsep % \begin{tabular}{|l|c|c|} % \hline % \thead{Column head} & \thead{Data I} & \thead{Data II} \\ % \hline % First row & \phantom01 & 2 \\ % Second row & \phantom06 & 4 \\ % Third row & 28 & 8 \\ % \hline % \end{tabular}%^^A % \floatfoot*{`Data I' column---numbers which equal to sum of all % their divisors; `Data II' column---$2^n$ values}} % \end{table}% % \MakeShortVerb{\|}% % % \emph{Notes.} 1)\enskip The \pkg{float} package defines additional % optional argument after main caption text. Since this possibility % didn't declared in user part of documentation the current version of % \pkg{caption} (3.0 and later), and also \pkg{float\-row} package, % doesn't support this possibility. You may use |\floatfoot| and % |\footnotemark|/|\footnotetext| stuffs instead. % % 2)\enskip If you use both |\floatfoot| command and |\footnote| % inside one float box, the |\floatfoot| appears above |\footnote| % contents. % % 3)\enskip Foot material (footnotes and text in floatfoot) can be placed in % several variants: at the very bottom of float box, below caption % (even if caption is above float object). See page \pageref{foot:pos} % and sample file \file{frsample01.tex}. In case of caption beside % float object, footnotes and foot text always placed below caption. % % % \subsection{Fine Tuning of Vertical Spaces of Float}\label{sec:FBabskips} % % At the final variant of document you may need to correct vertical % spaces between float and main text, between float object and % caption. % % To change space between float box and main text there you may use % two simple commands |\FBaskip| and |\FBbskip|. For example define % \begin{verse} % |\renewcommand\FBaskip{-4pt}| % \end{verse} % to move up float box up (or reduce space above) by 4pt. In current document % the |\FBaskip| command was necessary for moving up some of wrapped figures. % % Use |\vspace| command for vertical space correction around float % object\footnote{The plain float environment allows usage of % \cmd{\vskip} command. But \cmd{\floatbox} stuff % (\cmd{\floatbox} itself, \cmd{\ffigbox} etc.) in case % of usage of the \cmd{\FBwidth} option, gets error message % when \cmd{\vskip} appears.}. % % \subsection{Running Raw \LaTeX\ Floats} % % The \pkg{floatrow} package redefines float environments for the case of creation of % common layout for all floats. This redefinition creates some limitations for source document file, % which were mentioned in introduction. % If you still need a raw behavior of float environment, you may input a % |\RawFloats| command \emph{inside} environment: %\begin{verbatim} %\begingroup %\captionsetup[table]{position=top} %\begin{figure}\RawFloats %\begin{minipage}{0.45\textwidth} %\centering ... %\caption{...}\label{...} %\end{minipage} %\begin{minipage}{0.45\textwidth} %\captionof{table}{...}\label{...} %\centering ... %\end{minipage} %\end{figure} %\endgroup %\end{verbatim} % And you'll get figure~\ref{Right:expect:fig} % and table~\ref{Right:expect:tab}\footnote{That could work correct if you do not use any % fancy float layout.}. % \begingroup % \captionsetup[table]{position=top} % \begin{figure}\RawFloats % \begin{minipage}{0.45\textwidth} % \centering \input{Mouse.picture} % \caption{A figure caption in raw \LaTeX}\label{Right:expect:fig} % \end{minipage} % \begin{minipage}{0.45\textwidth} % \captionof{table}{A table caption in raw \LaTeX}\label{Right:expect:tab} % \centering\tabcolsep3\tabcolsep \begin{tabular}{|c|c|} A & B \\ C & D \end{tabular} % \end{minipage} % \end{figure} % \endgroup % % You may see that \env{floatrow} environment and |\floatbox| commands still work % after |\RawFloats| (figure~\ref{intro:leftfig:raw} and table~\ref{intro:righttab:raw}) %\begin{verbatim} %\begin{figure}\RawFloats\CenterFloatBoxes % \begin{floatrow} % \floatbox{figure} % {...}{\caption{...}\label{...}} % % \floatbox{table}[\FBwidth] % {...}{\caption{...}\label{...}} % \end{floatrow} %\end{figure} %\end{verbatim} % \begin{figure}\RawFloats\CenterFloatBoxes % \begin{floatrow} % \floatbox{figure} % {\input{Mouse.picture}} % {\caption{A figure caption in \cmd{\floatbox} in raw \LaTeX}% % \label{intro:leftfig:raw}}% % % \floatbox{table}[\FBwidth] % {\caption{A table caption in \cmd{\floatbox} in raw \LaTeX}\label{intro:righttab:raw}} % {\tabcolsep3\tabcolsep\begin{tabular}{|c|c|} A & B \\ C & D \end{tabular}} % \end{floatrow} % \end{figure}%^^A % See also page~\pageref{mixrow} about how to set and align different float types % like figure~\ref{intro:leftfig:raw} and table~\ref{intro:righttab:raw} in one row % (\env{floatrow} environment). % % % \section{Style Tandems} % % The next few sections show examples and explain some noticed % features with usage of \pkg{floatrow} and another package. There is not % the full list of style compatibilities. You may succeed with other % versions of mentioned packages, and maybe with not mentioned % packages too. % % \subsection{The \pkg{caption} Package} % % Tested with versions v3.0a--v3.0g. % % The \pkg{caption} package has strong mechanism of creating of % caption layout, so \pkg{floatrow} addresses the creation of new % caption styles to this package (see documentation for \pkg{caption} % package). % % The \pkg{floatrow} adds possibility to create a variations of captions % for floats in different positions or layouts (e.g. like wide or two-column % floats or rotated floats) using optional argument of % |\captionsetup|. % % For example you want to create special caption layout for wide or % two-column floats. In this case you may use % \begin{quote} % |\captionsetup[widefloat]|\marg{options} % \end{quote} % or for wide or two-column figures: % \begin{quote} % |\captionsetup[widefigure]|\marg{options} % \end{quote} % The priority of |\captionsetup| optional arguments is similar to % |\floatsetup| ones. In current examples |\captionsetup[widefigure]| % will be stronger than |\captionsetup[widefloat]|. The priority % and usage of ``\meta{float subtypes}'' in optional arguments % see on the page~\pageref{stsetorder}\label{cap:beside:order}). % % % \subsection{The \pkg{subfig} Package} % % Tested with version 1.2 dated 2004/01/28 and 1.3. dated 2005/06/28.\nopagebreak % % The example with \cmd{\subfloat}'s (table~\ref{tab:tabIII}). The % setting command in preamble |\floatsetup[table]{style=Plaintop}| % includes also settings for subcaption positions used with % \pkg{subfloat} package (like |\captionsetup[table]{position=top}| in % \pkg{caption} package): %\begin{verbatim} %\begin{table}\extrarowheight1pt % \floatbox{table}[\FBwidth] % {\caption{Two ...}\label{...}} % {\begin{subfloatrow} % \subfloat[First table] % {\begin{tabular}{|l|c|c|} % ... % \end{tabular}} % \subfloat[Second table] % {\begin{tabular}{|l|c|c|} % ... % \end{tabular}% % \end{subfloatrow}}} %\end{table} %\end{verbatim} % \DeleteShortVerb{\|}% % \captionsetup[subtable]{textfont=md} % \begin{table}[h]\extrarowheight1pt % \floatbox{table}[\FBwidth] % {\caption{Two \cmd{\subtable}'s % (created with \pkg{subfig} package)}\label{tab:tabIII}} % {\begin{subfloatrow} % \subfloat[First subtable] % {\begin{tabular}{|l|>{\phantom0}c|>{\phantom0}c|} % \hline % \multirowthead{2}[-1ex]{Column Head} % & \multicolumn{2}{c|}{\thead{Data}} \\ % \cline{2-3} % & \multicolumn{1}{c|}{\thead{I}} % & \multicolumn{1}{c|}{\thead{II}} % \\\hline % First row & 1 & 2 \\ % Second row & 3 & 4 \\ % Third row & 6 & 8 \\ % Fourth row & \llap{1}0 & \llap{1}6 \\ % \hline % \end{tabular}} % % \subfloat[Second subtable with long long long subcaption] % {\begin{tabular}{|l|c|c|} % \hline % \multirowthead{2}[-1ex]{Column Head} % & \multicolumn{2}{c|}{\thead{Data}} \\ % \cline{2-3} % & \multicolumn{1}{c|}{\thead{I}} % & \multicolumn{1}{c|}{\thead{II}} % \\\hline % First row & \phantom01 & \phantom02 \\ % Second row & \phantom03 & \phantom04 \\ % Third row & \phantom06 & \phantom08 \\ % %^^A Fourth row & 10 & 16 \\ % \hline % \end{tabular}}% % \end{subfloatrow}} % \end{table}% % \MakeShortVerb{\|}% % % \emph{Note.} There was used \env{subfloatrow} environment in current % example. This is simplified \env{floatrow} environment, which % expands vertical alignment of float contents to subfloats and % puts horizontal separator, % defined by \texttt{subfloatrowsep=} key. This key and uses the same options as % \texttt{floatrowsep=} and \texttt{capbesidesep=} keys (options of % these keys defined by |\DeclareFloatSeparators| command, % page~\pageref{decl:sep}). % %^^A To use \env{subfloatrow} environment load %^^A \pkg{fr-subfig}\footnote{This package could have only beta-status, %^^A because of it redefines two macros of \pkg{subfig} package for %^^A creation of subcaption and subfloat boxes.} package installed %^^A together with \pkg{floatrow}.\pagebreak[3] % % See examples with \env{subfloatrow} environment in sample files % \file{frsample03.tex}, \file{frsample05.tex}; and also % \file{frsample10.tex}--\file{frsample12.tex} where aligned contents % of beside subfloats are used in different layouts.) % % The next goes example with beside caption (see % figure~\ref{fig:subfig:catsI}).%^^A % \footnote{In version 1.2 the beside boxed and non-boxed subfloat contents (like in % figure~\ref{fig:subfig:catsI}) could not get aligned bottom (top) % subcaptions. In this example I ought to use following lines for % subfigure~\ref{subfig:b}, when \pkg{pstricks} package is loaded:\\[2ex]\ttfamily % \cmd{\raisebox}\{\cmd{\depth}\}\{\cmd{\input}\{\texttt{TheBlackCat.picture}\}\}} %\begin{verbatim} %\floatsetup{style=Shadowbox,capbesidesep=columnsep, % capbesideframe=yes,capbesideposition={top,inside}} %\fcapside[\FBwidth] %{\begin{subfloatrow} % \subfloat[White ...]{...} % \subfloat[Black ...]{...} %\end{subfloatrow}} %{\caption{...}} %\end{verbatim} % \floatsetup[figure]{style=Shadowbox,capbesidesep=columnsep,capbesideframe=yes, % capbesideposition={top,inside}} % \begin{figure}[h] % \fcapside[\FBwidth] % {\begin{subfloatrow} % \subfloat[White cat\label{subfig:w}]{% % {\input{TheCat.picture}}} % % \subfloat[Black cat\label{subfig:b}]{\input{TheBlackCat.picture}}% % \end{subfloatrow}} % {\caption{Beside caption vertically top aligned with fancy % \texttt{Shadowbox} layout}\label{fig:subfig:catsI}} % \end{figure} % % \newpage % \subsection{The \pkg{wrapfig} Package} % % \begingroup % \def\FBaskip{-12pt} % \floatsetup[figure]{style=ruled,relatedcapstyle=yes,footposition=caption} % \begin{wrapfigure}[10]{O}{40mm} %^^A \ffigbox[40mm] % {\caption{Wrapped plain figure (\pkg{wrapfig} package)}% % \floatfoot{Plain figure fails with package version % 3.3}\label{fig:wrapfig:WcatI}} % {\unitlength1.2\unitlength\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{TheCat.picture}} % \end{wrapfigure} % % Tested with version 3.3 dated 1999/10/12 (style from \pkg{ltxmisc} bundle) % and 3.6 dated 2003/01/31 (the separate \LaTeX\ package). % % Options for environment (text borrowed from package comments): % \begin{quote} % |\begin{wrapfigure}%|\\* % \strut\quad\oarg{number}\marg{placement}|%|\\* % \strut\quad\oarg{overhang}\marg{width of figure}\\ % |...|\\* % |\end{wrapfigure}| % \end{quote} % \meta{Placement} is one of \texttt{r}, \texttt{l}, \texttt{i}, % \texttt{o}, \texttt{R}, \texttt{L}, \texttt{I}, \texttt{O}, for % right, left, inside, outside. Lowercase letters set unfloated % positioning, uppercase---floated variant. The figure sticks into % the margin by \meta{overhang}, if given, or by the length % |\wrapoverhang|, which is normally zero. The \meta{number} of % wrapped text lines is normally calculated from the height of the % figure, but may be specified manually, e.g. % \begin{quote} % |\begin{wrapfigure}[10]{r}[34pt]{5cm}|\\* \meta{figure}\\* % |\end{wrapfigure}| % \end{quote} % \endgroup % % \begingroup % \def\FBaskip{-12pt} % \floatsetup[figure]{style=BOXED,frameset={\fboxsep12pt}} % \begin{wrapfigure}[14]{O}{0mm} % \ffigbox[40mm] % {\par{\setlength\unitlength{\hsize/64}\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{TheCat.picture}}} % {\caption{Wrapped figure in \cmd{\ffigbox} (\pkg{wrapfig} package)}% % \label{fig:wrapfig:WcatII}} % \end{wrapfigure} % % \emph{Floatrow note.} % For figure, placed in \env{wrap...} environment you must set width in % mandatory argument. If you'll write \texttt{0mm} as \marg{width of figure} % argument, \pkg{wrapfig} package will count natural width of float contents. % % Sometimes above (below) float box in \env{wrap...} environment % appears unwanted space. To correct vertical position, use |\FBaskip| % (|\FBbskip|) commands (see section~\ref{sec:FBabskips}). % % \emph{Special settings}. % % You may create settings for \env{wrap...} environment, there are % following priorities % (Please note that you can load also special caption settings with |\captionsetup| stuff.): % \begin{itemize}\itemsep0pt % \item % % if exists |\floatsetup[wrap|\meta{captype}|]{...}| % \pkg{floatrow} uses these settings---they are the ``strongest'' settings; % if they absent---uses settings of next item; %^^A \end{itemize} % %^^A \begin{itemize} % \item % if exists |\floatsetup[wrapfloat]{...}| % \pkg{floatrow} uses these settings---these settings ``stronger'' than next ones; % if they absent---settings of current float\\[\medskipamount] % |\floatsetup[|\meta{captype}|]{...}|\,;\\[\medskipamount] % if they absent---uses default settings % (|\floatsetup{...}| or package settings). % \end{itemize} % % % \emph{Founded limitations}. % % The usage of plain float environment in version 3.3 will % not succeed with current version of \pkg{floatrow}---use |\floatbox| % stuff. The version 3.6 allows usage of plain \env{wrap...} environment with \texttt{plain} (or % \texttt{ruled}) styles, but % the framed styles, like \texttt{Boxed} (where text inside frames changes its |\hsize| to fit % frames, fitted to defined |\hsize|) % could work only with |\floatbox| macro, otherwise you'll get incorrect widths and layout. % \endgroup % % \begingroup % \floatsetup[figure]{style=WSHADOWBOX,captionskip=8pt} % \subsection{The \pkg{floatflt} package} % % \begin{floatingfigure}[v]{40mm}\def\FBaskip{-2.5pt} % \ffigbox[42mm] % {\setlength\unitlength{.85\hsize/60}\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{BlackDog.picture}} % {\caption{\hyphenpenalty-100\pretolerance-1% % Wrapped figure inside \env{floating\-figure} environment % (\pkg{floatflt})}\label{fig:floatflt:WcatI}} % \end{floatingfigure}%\FBbuildtrue % % \noindent Tested with version v\kern-1pt.1.3 dated % 1996/02/27\kern-1pt. % % \emph{Founded limitations} 1)\enskip There is not support for % creation of new \env{floating...} environment. Since \env{floatflt} % environments need usage of |\floatbox| in any case, you can use % either \env{floatingfigure} or \env{floatingtable} and put necessary % float type in |\floatbox| argument (or use necessary % macro-abbreviation). % % % The next limitations could not tied with \pkg{floatrow} package. % % 2)\enskip If you put \env{floatingfigure} environment just after % |\...section| command you need (if you do not indentation after % heads) to put |\noindent| for the first paragraph. % % 3)\enskip The \env{floatflt} environments could fail with list % environments. % % 4)\enskip To get correct space before next |\...section| head you % may need to put following commands % |\makeatletter\@nobreakfalse\makeatother| (as was made in just % before next section). % % \makeatletter\@nobreakfalse\makeatother % % %^^A \penalty-10000 % % \subsection{The \pkg{picins} Package} % % \floatsetup[figure]{style=ruled} % % \parpic[l]{{%\def\floatrowsep{}\let\FBiffloatrow\iftrue % \def\FBbskip{14pt} % \ffigbox[42mm] % {{\setlength\unitlength{18mm/61}\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{BlackCat.picture}}} % {\caption{Wrap\-ped figure (\cmd{\parpic}); % \cmd{\floatbox} % with \cmd{\FBwidth} option}\label{fig:parpic:BcatI}}% % }} % % \noindent Tested with version v\,3.0 dated 1999/10/12. % % This package produces pictures inside paragraph. This package supports % usage of captions with command |\piccaption|. It also allows the \pkg{caption} % package settings. % % The \cmd{\parpic} macro usually allows usage of |\floatbox| macro inside of its % mandatory argument. % %^^A \emph{Founded limitations}.\nopagebreak % %^^A 1)\enskip In |\parpic| argument you ought to put before |\floatbox| %^^A following commands:\\[\medskipamount] %^^A |\def\floatrowsep{}|\allowbreak|\let\FBiffloatrow\iftrue|\\[\medskipamount] %^^A to get correct layout. % % The next limitations could not tied with \pkg{floatrow} package. % %^^A \floatsetup[figure]{style=DOUBLEBOX} % %^^A \parpic[r]{{%\def\floatrowsep{}\let\FBiffloatrow\iftrue %^^A \hsize36mm %^^A \ffigbox[\hsize] %^^A {{\setlength\unitlength{16mm/61}\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi %^^A \input{BlackCat.picture}}} %^^A {\caption{Wrapped figure (\cmd{\parpic})}\label{fig:parpic:BcatII}}% %^^A }} % % 1)\enskip If you put \cmd{\parpic} just after |\...section| command % you need (if you do not indentation after heads) to put |\noindent| % for the first paragraph. % % 2)\enskip You may try to use \cmd{\parpic} inside list environment, % but in some cases usage of \cmd{\parpic} in % the list gets bad or wrong layout. % % 3)\enskip This package has not options \meta{outside} or % \meta{inside}, like previous two packages (the option |[o]| means % oval box around picture), so you ought to set horizontal position % manually. % % \endgroup % % \subsection{The \pkg{rotating} Package and \env{sideways\ldots} Environment} % % Tested with version v2.13 dated Sep. 1992. % % There is example (figure~\ref{fig:rot}) with rotated float, using % \env{sidewaysfigure}. %\begin{verbatim} %\floatsetup[figure]{style=WSHADOWBOX} %\begin{sidewaysfigure}\emptyfloatpage %\ffigbox[\FBwidth] %{\includegraphics[width=4in]{pslearn.eps}} %{\caption{Figure inside \env{sidewaysfigure} environment}% %\label{fig:rot}} %\end{sidewaysfigure}% %\end{verbatim} % \floatsetup[figure]{style=WSHADOWBOX} % \begin{sidewaysfigure}\emptyfloatpage % \ffigbox[\FBwidth] {\includegraphics[width=4in]{pslearn}} % {\caption{Figure inside \env{sidewaysfigure} environment}% % \label{fig:rot}} % \end{sidewaysfigure}% % %^^A For rotating floats on right side (like in % %^^A current documentation) put in preamble % %^^A \begin{quote} % %^^A |\usepackage[figuresright]{rotating}| % %^^A \end{quote} % % % \emph{Special settings}.\nopagebreak % % You may create special settings for all rotated floats, which use % \env{sideways...} environment (see page \pageref{stsetorder}). % % For one-column rotated float % \begin{itemize} % \item % % if exists |\floatsetup[rot|\meta{captype}|]{...}| % package uses these settings---the ``strongest'' settings; if they absent---uses settings from next item; % \item % if exists |\floatsetup[rotfloat]{...}| % package uses these settings---these settings ``stronger'' than next % ones; if they absent---settings for current float % (|\floatsetup[|\meta{captype}|]{...}|); % if they absent---uses default settings % (|\floatsetup{...}| or package settings). % \end{itemize} % % For two-column or wide rotated float (starred environment) % \begin{itemize} % \item % % if exists |\floatsetup[widerot|\meta{captype}|]{...}| % package uses these settings---the ``strongest'' settings; % if they absent---uses settings of next item; % \item % % if exists |\floatsetup[widerotfloat]{...}| % package uses these settings---these settings ``stronger'' than settings % in next item; if they absent---uses settings of next item; % \item % % if exists |\floatsetup[rot|\meta{captype}|]{...}| % package uses these settings---these settings ``stronger'' than settings % in next item; if they absent---uses settings of next item; % \item % % if exists |\floatsetup[rotfloat]{...}| % package uses these settings---these settings ``stronger'' than next % ones; % %^^A if they absent---settings of next item; % %^^A \item % % %^^A if exists |\floatsetup[wide|\meta{captype}|]{...}| % %^^A package uses these settings; if they absent---settings of next item; % %^^A \item % % %^^A if exists |\floatsetup[widefloat]{...}| % %^^A package uses these settings; % if they absent---uses settings for current float % (|\floatsetup|\marg{captype}|{...}|); % if they absent---uses default settings % (|\floatsetup{...}| or package settings). % \end{itemize} % % \emph{Notes}.\nopagebreak % % 1)\enskip If you place two continued rotated floats on facing pages, the % better way is to gather them to binder margin. For this reason you % may define\footnote{In case \pkg{rotating} package has |[figuresright]| % option, see also files \file{frsample10.tex}--\file{frsample12.tex} % and code in \file{fr-sample.tex}.} before first float % \begin{quote} % |\buildFBBOX{\vbox to\rottextwidth\bgroup\vss}{\egroup}| % \end{quote} % and before second one % \begin{quote} % |\buildFBBOX{\vbox to\rottextwidth\bgroup}{\vss\egroup}| % \end{quote} % \medskip % The |\rottextwidth| dimension---here is saved |\textwidth| of % document---the |\columnwidth| and |\textwidth| inside % \texttt{sideways...} environment are redefined and equal to % |\textheight|. % % 2)\enskip In current example you may see command |\emptyfloatpage|. % It is offered by \pkg{floatpagestyle} package, (installed with % \pkg{floatrow} package). Macro |\emptyfloatpage| is abbreviation of % |\floatpagestyle{empty}|. The last macro redefines page style for % the page where \emph{current} float environment appears. % % I suppose that \pkg{floatpagestyle} package could use not correct % and honest way for float page style redefinition (\emph{this package redefines % \LaTeX's core macro} |\@outputpage|).\footnote{If you know more % honest way to get the same result---the redefinition of float page % style---please let me know.} Since this package uses % |\label|---|\ref| mechanism, the |\floatpagestyle| command works % after \emph{second} \LaTeX{} run. % % \subsection{The \pkg{lscape} Package and \env{landscape} Environment} % % Tested with version v3.0a dated 1999/02/16.\nopagebreak % %\ifx\landscape\undefined\else % \ifx\landscape\relax\else % The example with usage of \env{landscape} environment from % \pkg{lscape} package on the page~\pageref{fig:rotrow:WcatI}, figures % \ref{fig:rotrow:WcatI}--\ref{fig:rotrow:FcatI}): %\begin{verbatim} %\DeclareFloatVCode{lowthickrule}{\kern2pt\hrule height.8ptdepth0pt} %\floatsetup[figure]{style=ruled,rowprecode=thickrule, % rowpostcode=lowthickrule,capposition=TOP} %\begin{landscape} %\begin{figure}\emptyfloatpage %... %\end{verbatim} % |\floatsetup| code sets \texttt{ruled} float style, % then settings for above and below material are redefined: % \texttt{rowprecode=} and \texttt{rowpostcode=} keys define thick % rules but for floatrow as whole (the `individual' |\hrule|'s above/below % float boxes absent). %\fi\fi % % % The \env{landscape} environment creates a new page. It would be % useful to start new section of document, e.g., appendix. (In current % document it was placed just before appendix) % %^^A \emph{Founded limitations}.\nopagebreak %^^A The tested version works incorrect (does not rotates contents) %^^A with \pkg{hypcap} package. % % \subsection{The \pkg{listings} Package} % % Tested with version v1.3 dated 2004/09/07.\nopagebreak % % This package has its strong layout mechanism also for creation for floating % algorithms. The usage of |\lstset| command and \pkg{caption} package settings % gives you necessary result\footnote{Please note and read \pkg{caption} documentation: % the co-operation of \pkg{caption}3.x and \pkg{listings} succeed % with version of last one not older than 1.2.} for algorithm type of float. % % For the cases of appearance of listings inside of other float environments % e.g. inside \env{figure} environments with boxed styles like \texttt{Boxed} % and \texttt{BOXED} and with predefined float width, you ought to set: % \begin{quote} % |\lstset{linewidth=\hsize}| % \end{quote} % in the preamble, or just before \env{lstlisting} environment. Or in optional argument % of \env{lstlisting} environment---here you must set width like: % \begin{quote} % |\begin{lstlisting}[linewidth=\hsize]| % \end{quote} % % Another limitation is that you can't put \env{lstlisting} inside % |\floatbox| contents. % % \subsection{The \pkg{longtable} Package} % % There was added a patch to the |\LT@array| macro (\pkg{longtable} % package)\footnote{Thanks to A. Sommerfeldt for help to make this code compact.}: % this patch adds the same font settings as for \env{table} environments, and % adds code which helps to get width of \env{longtable} caption equal to the % width of table. For settings of caption width there was created a key. % % \DescribeMacro{LTcapwidth=} % This key could have any value, like |5cm| or |\hsize|. % If you'll write \texttt{LTcapwidth=table} or \texttt{LTcapwidth=contents}, % you will get caption width equal to the width of table. In this case settings % for width of caption use information from \texttt{aux}-file, so you'll get % correct caption width at the time when the width of full table become stable. % % The \env{longtable} environment uses layout settings from |\floatsetup[table]| % and |\floatsetup[longtable]| macros. The |\floatsetup[longtable]| will be ``strongest'' % in this pair. % % \subsection{The \pkg{hyperref} and \pkg{hypcap} Packages} % % There were tested versions v6.74i (\pkg{hyperref}) and v1.3 (\pkg{hypcap}). % % The \pkg{floatrow} tries not to expand its code to |\caption| stuff. % I hope that environments supported by \pkg{floatrow} won't % make harm to \pkg{caption}---\pkg{hyperref}/\pkg{hypcap} tandem. % % \subsection{The Incompatibilities} % % The incompatibilities at first could follow the incompatibilities of % \pkg{caption} 3.x package: % \begin{quote} % \pkg{ccaption}, \pkg{hvfloat}, \pkg{nonfloat} % \end{quote} % % The known incompatibilities of \pkg{floatrow} package itself % is \pkg{sidecap} package\footnote{Despite that I'm trying % to follow offered layouts of this package. Great thanks for % Rolf Niepraschk and Hubert G\"{a}\ss{}lein for package with % rich implementation of such float % layouts.}: the \pkg{floatrow} package doesn't expands its % layouts to \env{SCfigure} and \env{SCtable} environments. % % \addtocontents{toc}{\string\pagebreak[3]} % \section{Limitations} % % There are known limitations, which were found during usage of % \pkg{floatrow}: % \begin{itemize} % %^^A \item % % %^^A Limitations for boxed and ruled styles in beside floats: % %^^A be careful with usage of \emph{alone} minipage environment in object or caption % %^^A in |\floatbox| macro. Since the object and caption are created in minipage % %^^A environment already, the added \texttt{minipage} could get wrong layout % %^^A (vertical alignment). But, as I found, you may use a few \texttt{minipage}s in % %^^A object without harm. % \item % % You cannot use |\floatbox| stuff for floats with \texttt{verbatim} % environment and/or |\verb|. % \item % % This limitation was mentioned above: the package uses % |\label|---|\ref| mechanism, thus, if you use float layout which % demands common height of objects and/or captions in float row, % you'll get correct result after second or more runs. If you change % contents of float which change its height you must run \LaTeX{} % twice or more times too. % % Beside captions and other facing layout will appears correctly only % after second \LaTeX's run (sometimes you need to run more times). % \item % % The version 3.0a (and newer) of \pkg{caption} package and % \pkg{floatrow} package do not support optional argument \emph{after} % caption ``title''. You may use |\floatfoot| % macro after main caption argument. % \item % % Do not use |\FBwidth| option for complex float contents (which you % could not put inside |\hbox|). (But you allowed to use |\vspace| % macro at the very end/very beginning of object contents for fine % vertical tuning.) % \item % % The \texttt{floatrow} environment allows spaces (and even empty % lines, which sometimes create better and correct result!) between % |\floatbox|'es, but if you add some code between them you % must put % |%| after this command. % \item % % This is common rule---be careful with spaces at the end of lines % inside float contents (see \texttt{CTAN:/info/epslatex.ps} for more % explanations). % % When you build plain float environment the better way is to separate % |\caption| and object contents (and also % |\floatfoot|/|\footnotetext| contents) each by empty lines or (if % not empty lines) end each part (and arguments of mentioned commands) % by percent sign. In this case you'll avoid unwanted spaces/lines at % the end of contents of each part, or wrong justification of float % components. % %^^A \item % % %^^A Usage of fancy boxes \texttt{shadowbox} and \texttt{wshadowbox} could get wrong % %^^A layout with beside captions. % \item If you use inside |\floatbox| stuff % \env{tabularx} or \env{tabular*} environments (or any other) with % |\hsize| command inside \meta{width} argument, you must repeat the % |\hsize| argument in \meta{width} argument of |\floatbox| macro. % % If you want to set width of \env{tabularx} or \env{tabular*} % environments (or any other) like |.8\hsize| (or |1.2\hsize|) and % these environments placed inside any |\floatbox| macro, load % |.8\hsize| in \meta{width} argument of |\floatbox| macro, and in % \meta{width} argument of \env{tabularx} or \env{tabular*} load only % |\hsize| macro (see also sample file \file{frsample03.tex}). % % In other cases (especially in fancy layout or settings) be careful % with usage of |\hsize| as \meta{width} option of |\floatbox|. % \end{itemize} % % \addtocontents{toc}{\string\nopagebreak} % % \section{Acknowledgements} % % Thanks for Steven Cochran and Axel Sommerfeldt for all their advices and spirit. % Special thanks for Axel for the patient answering, code, and % help in \emph{all} my questions and problems in \pkg{floatrow} package. % % \medskip\noindent % Thanks for \emph{all} involuntary (\La)\TeX{} teachers, who teaches % me with their program code all these years. % % \medskip\noindent % Thanks for Keith Reckdahl, author of \file{epslatex}, which % documentation, at last, encouraged me to create the CTAN version of % this package. % % \medskip\noindent % \emph{Thanks for \emph{all} authors of second edition of \LaTeX{} % Companion for this book.} % %\ifx\landscape\undefined\else % \ifx\landscape\relax\else % \clearfloatsetup{figure} % \floatsetup[figure]{style=ruled,rowprecode=thickrule, % rowpostcode=lowthickrule,capposition=TOP, % footposition=caption} % \newlength\Mylen\Mylen\textwidth % % \begin{landscape} % % \begin{figure}\emptyfloatpage % % \begin{floatrow}[4] % \ffigbox[][][t] % {{\input{TheCat.picture}}%^^A % \footnotetext[1]{The % picture was created with \cmd{\qbezier} % macro}}% % {\caption[Beside figure~I, top of object box]% % {Beside figure~I, top of object box\protect\mpfootnotemark}% % \label{fig:rotrow:WcatI}}% % % \floatbox{figure}[2\FBwidth][][b] % {\caption{Beside figure~II, bottom of object box}% % \label{fig:rotrow:BcatI}% % \floatfoot{There are all \cmd{\qbezier} macros and only two vertical lines}}% % {\input{BlackCat.picture}}% % % \ffigbox[\FBwidth] % {{\unitlength2.5\unitlength\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{Mouse.picture}}\footnote[2]% % {Look at funny footnotemark!}} % {\caption{Beside figure~III, center of object box}% % \label{fig:rotrow:mouseI}\floatfoot{The Mouse-animal image}}% % % \floatbox{figure}[\Xhsize][\Mylen] % {\caption{Beside figure~IV}\label{fig:rotrow:FcatI}} % {\Resizebox\hsize\vsize{35}{136}{\input{BlackCat2.picture}}} % \end{floatrow} % % \end{figure} % % \end{landscape} %\fi\fi % % \clearpage % \suppressfloats[t] % \section{Appendix} % % \subsection{Miscellaneous} % % \subsubsection{Mixed Row} % % \floatsetup[figure]{style=Boxed,midcode=captionskip, % frameset={\fboxsep12pt\fboxrule1pt}} % Sometimes author (or designer) wants to put different types of floats, e.g., table and figure % beside in one row. This situation creates some problems. % % The first problem is that you must put different types of float in % one float environment, which sets its own layout for included float % box(es). For creation of right layouts write % |\killfloatstyle| command at the beginning of \env{floatrow} % environment or just before first ``foreign'' |\floatbox| macro (in % current example---before |\ttabbox|; the |\ffigbox| macro is % ``native'' for \env{figure} environment). % % The second problem is that figures usually have captions below % graphics, but tables could have caption \emph{above} their contents. % The alignment of all floats is similar: the bottom of upper part and % top of lower part. In this case if you want to put such beside figure % and table you'll get undesirable result. For such situations you may % use one of following commands: %\begin{verbatim} %\CenterFloatBoxes %\TopFloatBoxes %\BottomFloatBoxes %\end{verbatim} % which align \emph{full} float boxes by center, top or bottom lines. % These macros were created by |\buildFBBOX| macro. % There is also |\PlainFloatBoxes| which restores standard behavior of % |\floatbox|'es. % % The usage of |\CenterFloatBoxes| and |\killfloatstyle| you'll see in % mixed float row with figure~\ref{fig:rowmixspec:WcatI} and % table~\ref{tab:rowmixspec:tabI}\label{mixrow}: % \DeleteShortVerb{\|}% % \begin{figure} % \begin{floatrow} % \CenterFloatBoxes \killfloatstyle % \ffigbox[\FBwidth] % {{\unitlength1.15\unitlength\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{TheCat.picture}}} % {\caption{Figure (\texttt{Boxed} style) beside table % (vertical centering)}\label{fig:rowmixspec:WcatI}}% % \extrarowheight1pt % \ttabbox % {\caption{Table beside \texttt{Boxed}-styled figure % (vertical centering)}\label{tab:rowmixspec:tabI}} % {\begin{tabular}{|l|c|c|c|} % \hline % \multirowthead{2}[-1ex]{Column Head} % & \multicolumn{3}{c|}{\thead{Data}} \\ % \cline{2-4} % & \thead{I} & \thead{II} & \thead{III} \\ % \hline % First row & 1 & 2 & \phantom01 \\ % Second row & 3 & 4 & \phantom06 \\ % Third row & 6 & 8 & 28 \\ % \hline % \end{tabular}} % \end{floatrow} % \end{figure} % \MakeShortVerb{\|}% %\begin{verbatim} %\begin{figure} %\begin{floatrow} %\CenterFloatBoxes\killfloatstyle %\ffigbox[\FBwidth] % ... %\ttabbox % ... %\end{verbatim} % % \emph{Note.} Both figure and table boxes have got width equal to % contents of objects. The |\ffigbox| command has optional argument % |[\FBwidth]|, but |\ttabbox| have not any option---it uses % |[\FBwidth]| option as default (see definitions on page % \pageref{abbrcom}). % % % \subsubsection{Usage of Captionsetup and Thisfloatsetup % Inside Floatbox Stuff} % % Example of figures in row (figures~\ref{floatbox:FR:lfig} and % \ref{floatbox:FR:fig}). There were used predefined float commands % |\fcapsideleft| and |\fcapsideright| with added |\captionsetup| and % |\thisfloatsetup|: %\begin{verbatim} %\newfloatcommand{fcapsideleft}{figure}[{\capbeside % \captionsetup[capbesidefigure]{format=break,labelsep=none, % justification=raggedleft}% % \thisfloatsetup{capbesideposition=left}}]% % [\FBwidth] %\newfloatcommand{fcapsideright}{figure}[{\capbeside % \captionsetup[capbesidefigure]{format=break,labelsep=none, % justification=raggedright}% % \thisfloatsetup{capbesideposition=right}}]% % [\FBwidth] %\end{verbatim} % % \clearfloatsetup{figure} % \floatsetup[figure] % {style=Boxed,capposition=beside,objectset=centering, % floatwidth=\columnwidth,capbesidewidth=5.75cc, % capbesidesep=cicero,margins=centering, % capbesideframe=yes,floatwidth=sidefil} % % \begin{figure}[b!] % \begin{floatrow} % \fcapsideleft % {\unitlength1.44\unitlength\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{TheCat.picture}} % {\caption{%^^A % Float box (\cmd{\fcapsideleft}) % width of graphics}\label{floatbox:FR:lfig}}% % \hsize\Xhsize \fcapsideright[\hsize] % {\setlength\unitlength{\hsize/61}\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{BlackCat.picture}}% % {\caption{%^^A % Float box (\cmd{\fcapsideright}) % width of rest float row space}\label{floatbox:FR:fig}}% % \end{floatrow}% % \end{figure}% % The caption format \texttt{break} was defined by following way: %\begin{verbatim} %\DeclareCaptionFormat{break}{#1#2\par#3\par} %\end{verbatim} % % For these figures created following \verb|\floatsetup| settings: %\begin{verbatim} %\floatsetup[figure] % {style=Boxed,capposition=beside, % objectset=centering,floatwidth=\columnwidth, % capbesidewidth=5.75cc,capbesidesep=cicero,margins=centering, % capbesideframe=yes,floatwidth=sidefil} %\end{verbatim} % The key \texttt{floatwidth=sidefill} means that in the case of % caption has predefined width, object occupies the rest space of % \verb|\hsize| (in the case of no \meta{width} option used, or used % \verb|\hsize| option). % % Left figure uses width of graphics, left one occupies the rest of % float row---for this reason just before \verb|\fcapsideright| % command was written tricky setting: %\begin{verbatim} %\hsize\Xhsize %\end{verbatim} % which, in case of caption placed beside float object defines width % of full float box. % % The default \meta{width} option of \verb|\fcapsideleft| and % \verb|\fcapsideright| commands is \verb|\FBwidth|, so for % figure~\ref{floatbox:FR:fig} on the right (created by % \verb|\fcapsideright| command) in the \meta{width} option was set % \verb|\hsize| command to fill the rest space of float row. % % Since in float style the key \texttt{heightadjust=object} (included % in definition of \texttt{Boxed} style), both objects have the same % height. % % \subsubsection{Predefined Beside Caption Width} % % This example includes |\useFCwidth| command, which switches on usage % of previously defined caption width with \texttt{capbesidewidth=} key (in command % |\thisfloatsetup| before |\floatbox| macro) or, if you didn't set caption width (like % in current example), macro counts natural width of caption contents % (see figure~\ref{fig:Idog:w}\footnote{Inside \cmd{\floatbox} you may % not set predefined width of caption, but remember that you % \emph{must} define width of caption in case of usage of plain float % environment.}). The object---caption box in this case aligned using % alignment settings from |margins| key (its options defined by |\setfloatmargins| % or |\floatcapbesidemargins| macro). In this documentation they are % centered (see page~\pageref{fsetup:besmarg}). %\begin{verbatim} %\begin{figure} %\floatbox[\capbeside\useFCwidth]{figure}[\FBwidth] % ... %\end{figure} %\end{verbatim} % \clearfloatsetup{figure} % \floatsetup[figure]{style=plain} % % \begin{figure}[h] % \floatbox[\capbeside\useFCwidth]{figure}[\FBwidth] % {\caption[Beside % caption, width equals to caption's text]{Beside % caption}\label{fig:Idog:w}} % {{\setlength\unitlength{{4cm}/60}\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{BlackDog.picture}}} % \end{figure}% % % The settings for current float: %\begin{verbatim} %\floatsetup[figure]{style=plain} %\end{verbatim} % % \subsubsection{Predefined Beside Caption Width with The Rest Space for Object} % % The figure \ref{fig:capbeside:trick} uses following float style:%^^A %^^A \footnote{There are also addition settings for captions: %^^A \cmd{\captionsetup[capbesidefigure]}\allowbreak %^^A \texttt{\{format=default,}\allowbreak\texttt{labelsep=none\}} %^^A which is necessary for current documentation: the \pkg{hyperref} %^^A creates unwanted result with empty argument of caption title. The same settings used %^^A for figures~\ref{floatrow:pre:figI} and \ref{floatrow:pre:figII}} %\begin{verbatim} %\floatsetup[figure] % {style=Boxed,capposition=beside,objectset=centering, % floatwidth=\columnwidth,capbesidewidth=\Mylen, % capbesideposition=left,capbesidesep=cicero, % margins=centering,capbesideframe=yes, % floatwidth=sidefil} %\end{verbatim} % The \verb|\Mylen| dimension was defined as width of caption label: %\begin{verbatim} %\newdimen\Mylen %\settowidth\Mylen{\captionfont\captionlabelfont % \figurename\ \thefigure} %\end{verbatim} % % \clearfloatsetup{figure} % \floatsetup[figure] % {style=Boxed,capposition=beside,objectset=centering, % floatwidth=\columnwidth,capbesidewidth=\Mylen, % capbesideposition=left,capbesidesep=cicero, % margins=centering,capbesideframe=yes,floatwidth=sidefil} % \newdimen\Mylen\settowidth\Mylen{\captionfont\captionlabelfont\figurename\ \thefigure} % % \begin{figure} %^^A \captionsetup[capbesidefigure]{format=default,labelsep=none} % \fcapside % {\unitlength1.1\unitlength\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{TheCat.picture}} % {\caption{}\label{fig:capbeside:trick}} % \end{figure}% % % % \subsubsection{Caption Beside with Centered Object} % % The figure \ref{fig:plain:trick} uses tricky float style: %\begin{verbatim} %\floatsetup[figure] % {style=plain,capposition=beside,objectset=centering, % floatwidth=\columnwidth,capbesidewidth=6cc, % capbesideposition=left,capbesidesep=mcapwidth, % margins=centering,capbesideframe=yes, % floatwidth=sidefil} %\end{verbatim} % the \texttt{mcapwidth} option is a negative skip equal to caption % width: %\begin{verbatim} %\DeclareFloatSeparators{mcapwidth}{\hskip-\FCwidth} %\end{verbatim} % I this case all figures with beside captions centered accordingly to % text \verb|\hsize|. Usage of such float layout supposes that all % float objects are narrower than |\textwidth| by at least 2~caption % widths. % % \clearfloatsetup{figure} \floatsetup[figure] % {style=plain,capposition=beside,objectset=centering, % floatwidth=\columnwidth,capbesidewidth=6cc, % capbesideposition=left,capbesidesep=mcapwidth, % margins=centering,capbesideframe=yes,floatwidth=sidefil} % \begingroup % \captionsetup[capbesidefigure]{format=break,labelsep=none, % justification=raggedright} % \begin{figure}[!b] % \unitlength1.1\unitlength\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{TheCat.picture} % \caption{%^^A % Plain figure}\label{fig:plain:trick} % \end{figure}% % \endgroup % % There were also temporarily, in group, changed settings for caption % in figure~\ref{fig:plain:trick}: %\begin{verbatim} %\captionsetup[capbesidefigure]{format=break,labelsep=none, % justification=raggedright} %\end{verbatim} % % \subsubsection{Width Definition for Beside Caption---Object Box in Float Row} % % The float row with predefined width of beside object---caption % boxes (figures~\ref{floatrow:pre:figI} and % \ref{floatrow:pre:figII}): just define before \verb|\fcapside| % command something like %\begin{verbatim} %\setlength\hsize{1.098\hsize}% %\end{verbatim} % as was defined for first figure, or %\begin{verbatim} %\setlength\hsize\Xhsize %\end{verbatim} % before second (here is clear that you can set |\setlength\hsize{.902\hsize}|). % % Since there were used \verb|\fcapside| commands at the beginning of % \env{floatrow} environment the \verb|\FCwidth| command was defined % as \verb|\relax|---in this case the width of caption equals to the % width of their contents. % % \clearfloatsetup{figure} % \floatsetup[figure] % {style=plain,capposition=beside,objectset=centering, % capbesideposition=left,capbesidesep=enskip, % margins=centering,capbesideframe=yes,floatwidth=sidefil} % \begin{figure}[h]\useFCwidth %^^A \captionsetup[capbesidefigure]{format=default,labelsep=none} % \begin{floatrow} % \setlength\hsize{1.098\hsize}% % \fcapside % {\setlength\unitlength{\hsize/64}\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{TheCat.picture}} % {\caption{%^^A % }\label{floatrow:pre:figI}} % \setlength\hsize\Xhsize % \fcapside % {\setlength\unitlength{\hsize/58}\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{Mouse.picture}} % {\caption{%^^A % }\label{floatrow:pre:figII}} % \end{floatrow}% % \end{figure}% % There was used following setup for figures: %\begin{verbatim} %\floatsetup[figure] % {style=plain,capposition=beside,objectset=centering, % capbesideposition=left,capbesidesep=enskip, % margins=centering,capbesideframe=yes,floatwidth=sidefil} %\end{verbatim} % % \subsubsection{Caption Above/Below Float and Caption Beside Float at The One Float Row} % % The float row with object and beside caption combined with object % and caption below (figures~\ref{flrow:mix:figI} and % \ref{flrow:mix:figII}). There we ought to use % \verb|\TopFloatBoxes|, \verb|\CenterFloatBoxes|, or % |\BottomFloatBoxes| commands to get correct layout---since the % \meta{height} argument in both float boxes defined as \texttt{4cm} % you may use each of these three commands. Unfortunately you must set % height of such beside floats by hand. The lines which create % described float row: %\begin{verbatim} %\begin{figure}\CenterFloatBoxes %\begin{floatrow} %\hsize1.098\hsize % \fcapside[\FBwidth][4cm] % ... % % \ffigbox[\Xhsize][4cm] % ... %\end{floatrow}% %\end{figure} %\end{verbatim} % % \clearfloatsetup{figure} \floatsetup[figure] % {style=Boxed,frameset={\fboxsep6pt},captionskip=5pt,capposition=bottom, % objectset=centering,capbesidewidth=none,capbesideposition=inside, % capbesidesep=enskip,margins=centering,capbesideframe=yes} % % \begin{figure}\CenterFloatBoxes % \begin{floatrow} % \hsize1.098\hsize \fcapside[\FBwidth][4cm] % {\unitlength1.44\unitlength\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{TheCat.picture}} % {\caption{%^^A % Float box (\cmd{\fcapside}) with beside caption in float row % width float with caption below}\label{flrow:mix:figI}}% % % \ffigbox[\Xhsize][4cm] % {\unitlength1.44\unitlength\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{BlackDog.picture}} % {\caption{%^^A % Float box (\cmd{\ffigbox}) width of rest float row % space} \label{flrow:mix:figII}} % \end{floatrow}% % \end{figure} % % The ``mirror layout'' (but not identical) looks like: %\begin{verbatim} %\begin{figure}\CenterFloatBoxes %\begin{floatrow} % \ffigbox[1.2\FBwidth][4cm] % ... % % \hsize\Xhsize % \fcapside[\FBwidth][4cm] % ... %\end{floatrow}% %\end{figure} %\end{verbatim} % % \begin{figure}[!b]\CenterFloatBoxes % \begin{floatrow} % \ffigbox[1.2\FBwidth][4cm] % {\unitlength1.44\unitlength\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{BlackDog.picture}} % {\caption{%^^A % Float box (\cmd{\ffigbox}) width of rest float row % space}\label{floatrow:mirrmix:figII}}% % \hsize\Xhsize % % \fcapside[\FBwidth][4cm] % {\unitlength1.44\unitlength\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{TheCat.picture}} % {\caption{%^^A % Float box with beside caption (\cmd{\fcapside}) in mirror float row % width float with caption below}\label{floatrow:mirrmix:figI}} % \end{floatrow}% % \end{figure} % % The figures~\ref{floatrow:mirrmix:figII}--\ref{floatrow:mirrmix:figI} use % following float style settings: %\begin{verbatim} %\floatsetup[figure] % {style=Boxed,frameset={\fboxsep4pt},captionskip=5pt, % capposition=bottom,objectset=centering,capbesidewidth=none, % capbesideposition=inside,capbesidesep=enskip,margins=centering, % capbesideframe=yes} %\end{verbatim} % % \subsubsection{Photo-Album-like Layouts} % % Another example of miscellaneous float row % (figures~\ref{flrow:three:figIII}--\ref{floatrow:threemirr:figII}, % and, ``mirror layout''---^^A % \ref{floatrow:threemirr:figI}--\ref{floatrow:threemirr:figIII}) were % created by following lines: %\begin{verbatim} %\begin{figure}[t]\BottomFloatBoxes %\begin{floatrow} %\hsize1.2\hsize \ffigbox[][6.7cm] % ... % %\vbox to6.7cm % {\floatsetup[figure]{floatrowsep=none}\killfloatstyle % \ffigbox[.8\hsize] % ... % \vss % \ffigbox[.8\hsize] % ...% % }% %\end{floatrow}% %\end{figure} %\end{verbatim} % % \floatsetup[figure]{heightadjust=none} % \begin{figure}[b!]\BottomFloatBoxes % \begin{floatrow} % \hsize1.2\hsize % \ffigbox[][6.7cm] % {\setlength\unitlength{\hsize/58}\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{Mouse.picture}}% % {\caption{Float box in photo-album-like layout: % alone in left column}\label{flrow:three:figIII}}% % % \vbox to6.7cm {\floatsetup[figure]{floatrowsep=none}\killfloatstyle % \ffigbox[.8\hsize] % {\input{TheCat.picture}} % {\caption{%^^A % Float box in photo-album-like layout: upper float in right % column}\label{floatrow:three:figI}} \vss \ffigbox[.8\hsize] % {\input{BlackDog.picture}}% % {\caption{%^^A % Lower float in right column}% % \label{floatrow:threemirr:figII}}}% % \end{floatrow}% % \end{figure} % % The ``mirror'' layout created by following commands: %\begin{verbatim} %\begin{figure}[t]\TopFloatBoxes %\begin{floatrow} %\vtop to7cm % {\floatsetup[figure]{floatrowsep=none}\killfloatstyle % \ffigbox[.8\hsize] % ... % \vss % \ffigbox[.8\hsize] % ...% % \vskip0pt}\floatrowsep % %\ffigbox[\Xhsize][7cm-11pt] % ... %\end{floatrow}% %\end{figure} %\end{verbatim} % Note that in second example with ``mirror'' layout there was used % trick with \meta{height} definition---caption of float in the left % column is one line longer, so for the right column height of float % was reduced by 11pt---|\baselineskip| for |\small| % size\footnote{You get correct height with such calculations for % beside floats with \pkg{caption}'s version not older than 3.0d.} % (here were used \pkg{calc} package possibilities). The |\vtop| of % left column ends with |\vskip0pt|, otherwise you get fanny unwanted % layout. % % % \begin{figure}\TopFloatBoxes % \begin{floatrow} % \vtop to7cm {\floatsetup[figure]{floatrowsep=none}\killfloatstyle % \ffigbox[.8\hsize] % {\input{TheCat.picture}} % {\caption{%^^A % Float box in photo-album-like layout: upper float in left % column}\label{floatrow:threemirr:figI}} \vss \ffigbox[.8\hsize] % {\input{BlackDog.picture}}% % {\caption{%^^A % Float box in photo-album-like layout: lower float in left column}% % \label{floatrow:three:figII}}\vskip0pt}\floatrowsep % % \ffigbox[\Xhsize][7cm-11pt] % {\setlength\unitlength{\hsize/58}\ifx\pspicture\undefined\else\psset{unit=\unitlength}\fi % \input{Mouse.picture}}% % {\caption{%^^A % Float box in photo-album-like layout: alone in right % column}\label{floatrow:threemirr:figIII}} % \end{floatrow}% % \end{figure} % % In both examples for two floats one above another was cancelled % |\floatrowsep| code inside |\vbox|/|\vtop|. % % Note that these examples are rather specific---you may try with % other combinations (e.g. more-``columned''), but maybe these layouts % need more care with usage of |\Xhsize| and/or |\floatrowsep|. % % I suppose that last two examples could conflict with ``motto'' of % this package---to reduce and remove layout code from document; but % photo-album-like layout is rather rare in technical literature (It % isn't?). % % \subsection{Sample files} % % The \env{floatrow} package distribution offers a few files with % examples, which show settings, not covered by current document (some % of them are bit exotic and unnatural). The samples have not aim to % create perfect layout, but to show easy modification for all float % types, and show goals and drawbacks in combinations of chosen layout % with different float types and their contents. % % \emph{Note}. All miscellaneous float styles (i.e. almost % all sample files) need at least two \LaTeX{} runs. % % The list of samples: % % \begin{Options}{\OptionLabel} % \item[frsample01.tex] all possible combinations of predefined \pkg{floatrow} styles % for captions above/below floats with foot material; % there were created plain float environments and \env{floatrow}s, also % there were created boxes with alone objects and alone captions; % \item[frsample02.tex] all possible combinations of predefined \pkg{floatrow} styles % for beside captions and all possible caption positions; % \item[frsample03.tex] different tests with tables; % \item[frsample04.tex] sample with fancy layout with usage of beside captions; % \item[frsample05.tex] one-column facing layout; miscellaneous caption settings. % \end{Options} % % The next bundle of samples is a few file-headers with different % preamble which run the same file with various float % layouts. For these examples there was created a new float type of % float \texttt{textbox}---which includes text in its object contents. % \begin{Options}{\OptionLabel} % \item[frsample10.tex] one column non-facing layout; figures printed in \texttt{plain} style; % text boxes use miscellaneous ruled style; % \item[frsample11.tex] one-column non-facing layout with elements hanged on left margin % (e.g. wide floats, in starred environments, like \env{figure*}); % \item[frsample12.tex] two-column layout with attempts of colored float styles. % \end{Options} %\vfil % % \section{Obsolete Commands}\label{sec:changed} % % There are obsolete macros which were replaced by commands from % |\floatsetup|, renamed or deleted after version 0.1b. % % \begingroup\extrarowheight1.75pt\small\tabcolsep.5\tabcolsep % \medskip\parindent0pt % \begin{tabular*}\hsize{@{\extracolsep{-.3ptplus1fill}}| % >{\rightskip0ptplus1fil}p{.35\hsize}| % >{\rightskip0ptplus1fil}p{.6\hsize}|} % \multicolumn{2}{c}{Removed or changed commands} % \\\hline % \thead{Command} % & % \thead{Changed to} % \\\hline % \extrarowheight0pt\begin{tabular}[t]{@{}l} % \cmd{\renewfloatstyle},\\ % \cmd{\newfloatstyle},\\ % \cmd{\definefloatstyle} % \end{tabular}& % \cmd{\DeclareFloatStyle}---this command uses \cmd{\floatsetup} % mechanism % \\\hline % \cmd{\restorerestylefloat} & removed % \\\hline % \cmd{\captionskip} & command, not a skip % \\\hline % \cmd{\floatfootskip} & command, not a skip % \\\hline % \end{tabular*}\pagebreak % % \vskip1pt % \begin{tabular*}\hsize{@{\extracolsep{-.3ptplus1fill}}| % >{\rightskip0ptplus1fil}p{.35\hsize}| % >{\rightskip0ptplus1fil}p{.6\hsize}|} % \multicolumn{2}{c}{Commands, replaced by keys} % \\\hline % \thead{Deleted Command} % & % \thead{Key Analog} % \\\hline % \cmd{\floatobjectset} & % in current version \emph{do not used for definition of object % settings}, use key % \texttt{objectset=} % \\\hline % \cmd{\alignsidecaption}& % \texttt{capbesideframe=yes} % \\\hline % \extrarowheight0pt\begin{tabular}[t]{@{}l} % \smash{\cmd{\capbesidecenter}},\\ \smash{\cmd{\capbesidetop}},\\ \smash{\cmd{\capbesidebottom}},\\ % \smash{\cmd{\capbesideinside}},\\ \smash{\cmd{\capbesideoutside}},\\ % \smash{\cmd{\capbesideleft}},\\ \smash{\cmd{\capbesideright}} % \end{tabular}& % \extrarowheight0pt\begin{tabular}[t]{@{}l} % \texttt{capbesideposition=center}\\ % \texttt{capbesideposition=top}\\ % \texttt{capbesideposition=bottom}\\ % \texttt{capbesideposition=inside}\\ % \texttt{capbesideposition=outside}\\ % \texttt{capbesideposition=left}\\ % \texttt{capbesideposition=right} % \end{tabular} % \\\hline % \extrarowheight0pt\begin{tabular}[t]{@{}l} % \cmd{\floatrowsep},\\ \cmd{\floatcapbesidesep} % \end{tabular}& % in current version \emph{do not used for definition of separation % material}, use keys\par \extrarowheight0pt % \begin{tabular}[t]{@{}l} % \texttt{floatrowsep=}\\ % \texttt{capbesidesep=} % \end{tabular} % \\\hline % \extrarowheight0pt\begin{tabular}[t]{@{}l} % \cmd{\FBcenter}\vphantom{g},\\ \cmd{\FBleft}\vphantom{g},\\ \cmd{\FBright},\\ \cmd{\FBnormal} % \end{tabular}& % \extrarowheight0pt\begin{tabular}[t]{@{}l} % \texttt{margins=center},\\ % \texttt{margins=raggedright},\\ % \texttt{margins=raggedleft}, \\ % \texttt{margins=center},\\ % \end{tabular} % \\\hline % \cmd{\setfloatstyle} & \texttt{style=} % \\\hline % \begin{tabular}[t]{@{}l} % \cmd{\Setframe}\\ % \cmd{\setframe} % \end{tabular} % & use \texttt{framestyle=} and \texttt{frameset=} keys % \\\hline % \cmd{\setrules} % & use \texttt{precode=}, \texttt{postcode=}, \texttt{midcode=} (also % \texttt{rowpercode} and \texttt{rowpostcode}) keys % \\\hline % \end{tabular*} % % \vskip1pt % % \begin{tabular*}\hsize{@{\extracolsep{-.3ptplus1fill}}| % >{\rightskip0ptplus1fil}p{.35\hsize}| % >{\rightskip0ptplus1fil}p{.6\hsize}|} % \multicolumn{2}{c}{Renamed keys} % \\\hline % \thead{Key} % & % \thead{Changed to} % \\\hline % \texttt{attachedcapstyle=} & \texttt{relatedcapstyle=} % \\\hline % \texttt{floatstyle=} & \texttt{style=} % \\\hline % \texttt{floatfont=} & \texttt{font=} % \\\hline % \texttt{putcaptionbeside=} & {capposition=beside} % \\\hline % \texttt{besidecapposition=} & \texttt{capbesideposition=} % \\\hline % \texttt{besidecapwidth=} & \texttt{capbesidewidth=} % \\\hline % \texttt{besidecapframe=} & \texttt{capbesideframe=} % \\\hline % \texttt{floatmarginsset=} & \texttt{margins=} % \\\hline % \texttt{besidecapsep=} & \texttt{capbesidesep=} % \\\hline % \texttt{Precode=} & \texttt{rowprecode=} % \\\hline % \texttt{Postcode=} & \texttt{rowpostcode=} % \\\hline % \texttt{framereduce=} & \texttt{framefit=} % \\\hline % \extrarowheight0pt\begin{tabular}[t]{@{}l@{}} % \vphantom{(}options of \texttt{objectset=}\\\quad and \texttt{margins=}\\ % \texttt{flushleft},\\ \texttt{flushright},\\\texttt{center} % \end{tabular} & % \extrarowheight0pt\begin{tabular}[t]{@{}l@{}} % \vphantom{(}options of \texttt{objectset=} and \texttt{margins=} (for unification\\\quad % with analogous key options in \pkg{caption} package)\\ % \texttt{raggedright},\\ \texttt{raggedleft},\\ \texttt{centering} % \end{tabular} % \\\hline % \end{tabular*} % \endgroup % \MakeShortVerb{\|}% % % \StopEventually{} % \hfuzz7pt % % \section{The Code} % % \subsection{The Prelude} % % \changes{v0.1a}{2004/09/28}{Since the changes of version 0.1a touched % a lot of package all entries of changing messages deleted.} % \changes{v0.1d}{2005/02/07}{Removed info, error, command macros---used standard instead} % The first step is to check whether \pkg{float} and \pkg{rotfloat} are loaded or not. % If yes, there go error messages. % \changes{v0.1d}{2005/02/07}{Added test for \pkg{rotfloat} package} % \begin{macrocode} %<*floatrow> \@ifundefined{float@caption}{}% {\PackageError{floatrow}{Do not use float package with floatrow}{}} \@ifundefined{rotfloat@float}{}% {\PackageError{floatrow}{Do not use rotfloat package with floatrow}{}} % \end{macrocode} % % The next lines emulate already loaded \pkg{float} and \pkg{rotfloat} packages. % % If in preamble, after loading of \pkg{floatrow} package % is used |\usepackage| with \pkg{float} package % (the \pkg{float} package doesn't support any options), the defining % of command |\ver@float.sty|, which emulates loading of package will do not any harm. % % Unfortunately the \pkg{rotfloat} package allows to transfer options of \pkg{rotating} % package in the case of appearance of both packages in one |\usepackage| line. Thus, % if someone loads options in \pkg{rotating}---\pkg{rotfloat} line, he will get % `option clash' error. A followed help gives a simple solution of such problem---moving options % in |\documentclass| line and make them global. I hope, that moving \pkg{rotating}'s option as % global will do not harm to documents, but now you aware of ``nonnecessity'' of loading % of \pkg{rotfloat} package. % \changes{v0.1e}{2005/03/22}{Restoring code of emulation of loading for \pkg{float} % and \pkg{rotfloat} packages.} % \changes{v0.1f}{2005/06/14}{The version, date and description of \pkg{float} and % \pkg{floatrow} borrowed from originals (AS).} % \begin{macrocode} %\expandafter\let\csname ver@float.sty\expandafter\endcsname % \csname ver@floatrow.sty\endcsname %\expandafter\let\csname ver@rotfloat.sty\expandafter\endcsname % \csname ver@floatrow.sty\endcsname \@namedef{ver@float.sty}{2001/11/08 v1.3d (excerpt) Float enhancements (AL)} \@namedef{ver@rotfloat.sty}{2004/01/04 v1.2 (excerpt) Combining float+rotating package (AS)} % \end{macrocode} % % Here goes request for \pkg{keyval} package. % \changes{v0.1c}{2004/10/22}{Bug fix: added request for \pkg{keyval} package.} % \begin{macrocode} \RequirePackage{keyval} % \end{macrocode} % % Here goes request for \file{caption3} file, core part of \pkg{caption} package. % \changes{v0.1f}{2005/06/14}{Added request for \pkg{caption3} package.} % \begin{macrocode} \RequirePackage{caption3} % \end{macrocode} % % \subsection{Storing of \LaTeX's Internal Macros} % % \begin{macro}{\FR@flboxreset} % First goes storage of \LaTeX's macro |\@floatboxreset| from bundle of float definitions. % \begin{macrocode} \@ifdefinable\FR@flboxreset{\let\FR@flboxreset\@floatboxreset} \@ifdefinable\FR@makecaption{\let\FR@makecaption\@makecaption} % \end{macrocode} % \end{macro} % % \begin{macro}{\FB@caption} % Here is stored standard \LaTeX's |\caption| command (it is used for caption % width counting). % \changes{v0.1f}{2005/06/14}{Restores \LaTeX's \cmd{\caption} macro (for width count)} % \begin{macrocode} \newcommand\FB@caption{% \ifx\@captype\@undefined \@latex@error{\noexpand\caption outside float}\@ehd \expandafter\@gobble \else \refstepcounter\@captype \expandafter\@firstofone \fi {\@dblarg{\@caption\@captype}}% } % \end{macrocode} % \end{macro} % \begin{macro}{\float@caption} % The |\float@caption| used as flag for caption package. % \changes{v0.1f}{2005/06/14}{Saves \cmd{\@caption}: used as flag % for \pkg{caption}, \pkg{hyperref}, (\pkg{pdfpages}) packages.} % \begin{macrocode} \@ifdefinable\float@caption{\let\float@caption\@caption} % \end{macrocode} % \end{macro} % % \subsection{Borrowed Code (with original comment) from \pkg{float} package} % % From this point starts \pkg{float} package's core code (version 1.3). The necessary % explanation of macro code also borrowed from \pkg{float} package and typed % with slanted font. Some macros % were skipped or edited (see \emph{floatrow notes}). % % \begin{sl}\medskip % In \LaTeX, floats are assigned `type numbers' that are powers of~$2$. % Since there are only two classes of floats, their type numbers are % hardwired into the document styles. We need to be somewhat more flexible, % and thus we initialize a counter to hold the next type number to be % assigned. This counter will be incremented appropriately later. % \begin{macrocode} \newcounter{float@type} \@ifundefined{c@figure}% {\setcounter{float@type}{1}}% {\setcounter{float@type}{4}} % \end{macrocode} % % \begin{macro}{\floatstyle} % The |\floatstyle| command puts its argument into the % |\float@style| macro as the name of the new float style. % But if the argument doesn't denote a float style, an error message % is output instead: Each float style \meta{style} has a corresponding command % |\fs@|\meta{style} that contains the appropriate declarations. % If the control sequence |\fs@|\meta{arg} (which goes with the % argument \meta{arg} to |\floatstyle|) is undefined, i.e., % equals |\relax| under |\ifx|, then the float style \meta{arg} % is unknown, and we call |\float@error{|\meta{arg}|}| for the % error message. % % {\em \textit{Floatrow note.} \pkg{float}'s error message % (the command \cmd{\float@error}\meta{arg}) changed to % \pkg{floatrow}'s one (\cmd{\flrow@error}\meta{arg}).} % % \begin{macro}{\flrow@error} % Here's the error message. |\@eha| is the help message that says % `Your command was ignored.' % \begin{macrocode} \newcommand\flrow@error[1]{\PackageError{floatrow}{% Unknown float style `#1'}{\@eha}} % \end{macrocode} % \end{macro} % \begin{macrocode} \newcommand\floatstyle[1]{\@ifundefined{flrow@sty@#1}% {\flrow@error{#1}}{\edef\float@style{#1}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\floatname} % \begin{macro}{\floatplacement} % The next two commands are even simpler. \LaTeX\ says that % |\fps@|\meta{float} contains the default placement specifier for % the class of floats \meta{float}. |\fname@|\meta{float} expands % to the name that appears in \meta{float} captions, e.g., `Figure'. % (This is our own definition.) % \begin{macrocode} \newcommand\floatname[2]{\@namedef{fname@#1}{#2}} \newcommand\floatplacement[2]{\@namedef{fps@#1}{#2}} % \end{macrocode} % \emph{\textit{Floatrow note.} Here was stuff of undocumented command \cmd{\floatevery} % which, I suppose, allows to set special settings for current type of float. % In \pkg{floatrow} package it was deleted. Use \cmd{\floatsetup} stuff instead.} % \end{macro} % \end{macro} % % \begin{em} % \textit{Floatrow note.} % The definitions of |\restylefloat| stuff were changed. % % \begin{macro}{\if@@FS} % The first goes flag command which, if |true|, stops repetition of float % layout settings. % \begin{macrocode} \newif\if@@FS % \end{macrocode} % \end{macro} % % \begin{macro}{\FR@redefs} % This macro makes temporary redefinitions of |\@makecaption| % and |\@floatboxreset| macros. % \changes{v0.1f}{2005/06/14}{The \cmd{\@makecaption} and \cmd{\@floatboxreset} % macros redefined locally.} % \begin{macrocode} \newcommand\FR@redefs{% % \@namedef{fst@\@captype}{}% % \@ifundefined{sf@end@float}{}{\let\end@float\sf@end@float}% % \@ifundefined{sf@end@dblfloat}{}{\let\end@dblfloat\sf@end@dblfloat}% \@ifundefined{HyOrg@float@makebox}{}% {\let\float@makebox\HyOrg@float@makebox}% \ifx\flrow@makecaption\@makecaption\relax \else \let\FR@makecaption\@makecaption \let\@makecaption\flrow@makecaption \fi \let\@floatboxreset\flrow@flboxreset} % \end{macrocode} % \end{macro} % % \begin{macro}{\flrow@makecaption} % In this macro the |\FBc@wd| used as flag for wrapped floats (for the case % when natural width of float counted). % \changes{v0.1f}{2005/06/14}{The \cmd{\@caption} redefinitions % transformed to \cmd{\@makecaption} ones.} % \changes{v0.1f}{2005/06/14}{The \cmd{\FBc@wd}\cmd{\z@} works like % flag (for \pkg{wrapfig}'s floats).} % \begin{macrocode} \newcommand\flrow@makecaption[2]{\global\setbox\@floatcapt \vbox\bgroup\@parboxrestore \reset@font \if@@FS \ifdim\FBc@wd>\z@ \hsize\FBc@wd \else \adj@dim\hsize+\FBo@wadj=\hsize \fi \fi \normalsize \abovecaptionskip\z@\belowcaptionskip\z@ \FR@makecaption{#1}{#2}\egroup} % \end{macrocode} % \end{macro} % % \begin{macro}{\killfloatstyle} % The third one allows to define again float layout style: it could be % necessary in mixed float rows. % \changes{v0.1g}{2005/07/15}{The macro-flag \cmd{\FR@ifflenv} removed.} % \begin{macrocode} \newcommand\killfloatstyle{\FBbuildtrue \if@@FS\hsize\FB@wd\fi\global\@@FSfalse} % \end{macrocode} % \end{macro} % % \begin{macro}{\RawFloats} % This macro restores core-\LaTeX-float-environment's behavior. % \changes{v0.1f}{2005/06/14}{Added Macro which restores raw float behavior.} % \changes{v0.1g}{2005/07/15}{Added \cmd{\@parboxrestore} macro.} % \begin{macrocode} \newcommand\RawFloats[1][\@captype]{\killfloatstyle \@parboxrestore \let\@makecaption\FR@makecaption \@namedef{end#1}{\end@float}% \@namedef{end#1*}{\end@dblfloat}% \@namedef{endsideways#1}{\end@rotfloat}% \@namedef{endsideways#1*}{\end@rotdblfloat}% } % \end{macrocode} % \end{macro} % % \begin{macro}{\FB@capsetup} % This only additional definition which is used with \pkg{caption} package % version 3.0. With this macro you may (re)define some layout settings % for captions. % \begin{macrocode} \newcommand\flrow@capsetup{} % \end{macrocode} % \end{macro} % % Definitions of default float style. % \changes{v0.1d}{2005/02/07}{The \cmd{\floatstyle\{plain\}} command removed} % \begin{macrocode} \edef\float@style{plain} % \end{macrocode} % % \begin{macro}{\FBB@wd} % This command stores absolute width for |\floatbox|'s |\hsize|. % The usage of |\FBB@wd| as command needs definitions like |\edef\FBB@wd{\the\textwidth}| to get % right layout in float rows with |BOXED|-like layouts. % \changes{v0.1f}{2005/06/14}{The command is \cmd{\let} to \cmd{\relax}.} % \changes{v0.1g}{2005/07/15}{The macro-flag \cmd{\FR@ifflenv} removed.} % \begin{macrocode} \@ifdefinable\FBB@wd{\let\FBB@wd\relax} % \end{macrocode} % \end{macro} % % \begin{macro}{\restylefloat} % The redefined \pkg{float} package macros to follow |\floatsetup| stuff. % % This macro starts to work at the beginning of document, so it has tests for % loaded packages. % \changes{v0.1f}{2005/06/14}{Redefined (AS).} % \begin{macrocode} \newcommand\restylefloat{% \@ifstar{\flrow@restylefloat{no}\flrow@restyle}% {\flrow@restylefloat{yes}\flrow@restyle}} \newcommand\flrow@restylefloat[3]{% \edef\FR@tmp{\noexpand \floatsetup[#3]{style=\float@style,relatedcapstyle=#1}}\FR@tmp #2{#3}} % \end{macrocode} % \end{macro} % % \begin{macro}{\flrow@restyle} % (Just trick for other packages? Commented.) % \begin{macrocode} %\newcommand\float@restyle{} % \end{macrocode} % To avoid redefinition of this macro by other packages (e.g. \pkg{wrapfig}, which uses % |\float@restyle| as recognition of \pkg{float} v1.3 package) \pkg{floatrow} package % uses other name. % \changes{v0.1f}{2005/06/14}{Added \cmd{\FR@redefs} command for local % redefinitions.} % \changes{v0.1f}{2005/06/14}{The \cmd{\xdef}\cmd{\FBB@wd} changed to \cmd{\edef}\cmd{\FBB@wd}.} % \begin{macrocode} \newcommand\flrow@restyle[1]{% % \end{macrocode} % One-column float environment. % \changes{v0.1f}{2005/06/14}{Added \cmd{\@captype}: necessary for \cmd{\FR@redefs}.} % \begin{macrocode} \@namedef{#1}{\killfloatstyle\def\@captype{#1}\FR@redefs \flrow@setlist{{#1}}% \textwidth\columnwidth\edef\FBB@wd{\the\columnwidth}% \FRifFBOX\@@setframe\fi\@@FStrue\@float{#1}}% % \end{macrocode} % Two-column (wide) float environment. % \begin{macrocode} \@namedef{#1*}{\killfloatstyle\def\@captype{#1}\FR@redefs % \end{macrocode} % The |\@captype| definition needed here and in next definitions to get correct and non-doubled % |\captionsetup| contents. % \begin{macrocode} \flrow@setlist{{#1}{widefloat}{wide#1}}% \FRifFBOX\@@setframe\fi\@@FStrue\edef\FBB@wd{\the\textwidth}% % \end{macrocode} % {\sl The standard |\@xdblfloat| macro changes |\hsize| to |\textwidth|. % This way is not correct so use |\@xfloat| instead.} % \begin{macrocode} \let\@xdblfloat\@xfloat\@dblfloat{#1}}% \expandafter\let\csname end#1\endcsname\float@end \expandafter\let\csname end#1*\endcsname\float@dblend % \end{macrocode} % One-column rotated float environment. % The code contents of |\rotfloat@float| macro (\pkg{rotfloat} package) moved here. % \begin{macrocode} \@ifundefined{@rotfloat}{}{% \@namedef{sideways#1}{\killfloatstyle\def\@captype{#1}\FR@redefs \flrow@setlist{{#1}{rotfloat}{rot#1}}% \columnwidth\textheight\edef\FBB@wd{\the\textheight}% \FRifFBOX\@@setframe\fi\@@FStrue \let\rotfloat@@makebox\float@makebox \let\float@makebox\rotfloat@makebox \@float{#1}}% \@namedef{endsideways#1}{\FBbuildtrue\float@end} % \end{macrocode} % Two-column rotated float environment without support. % (The style ``support'' for non-rotated two column or wide float % \texttt{widefloat} and \texttt{wide}\meta{captype} was removed.) % \changes{v0.1d}{2005/02/07}{Restored \pkg{rotfloat}'s definition form for wide rotated float} % \begin{macrocode} \ifx\@rotdblfloat\undefined \@namedef{sideways#1*}{% \PackageError{floatrow}{% You need rotating version 2.10 or newer to do this}{\@ehd}% \@nameuse{sideways#1}}% \else % \end{macrocode} % Two-column rotated float environment with support. % \changes{v0.1d}{2005/02/07}{The settings for non-rotated wide float removed} % \begin{macrocode} \@namedef{sideways#1*}{\killfloatstyle\def\@captype{#1}\FR@redefs \flrow@setlist{{#1}{rotfloat}{rot#1}{widerotfloat}{widerot#1}}% \columnwidth\textheight\edef\FBB@wd{\the\textheight}% \FRifFBOX\@@setframe\fi\@@FStrue % \end{macrocode} % {\sl The standard |\@xdblfloat| macro changes |\hsize| to |\textwidth|. % This way is not correct so use |\@xfloat| instead.} % % The code contents of |\rotfloat@dblfloat| macro (\pkg{rotfloat} package) moved here. % \begin{macrocode} \let\@xdblfloat\@xfloat \let\rotfloat@@makebox\float@makebox \let\float@makebox\rotdblfloat@makebox \@dblfloat{#1}}% \fi \@namedef{endsideways#1*}{\FBbuildtrue\float@dblend}} % \end{macrocode} % Wrapped float environment from \pkg{wrapfig} package. % \begin{macrocode} \@ifundefined{wrapfloat}{}{% \@ifundefined{flrow@WF@rapt}{\let\flrow@WF@rapt\WF@rapt \def\WF@rapt[##1]##2{\FRifFBOX\@@setframe\fi\@@FStrue \dimen@##2\relax \ifdim\dimen@>\z@ \edef\FBB@wd{\the\dimen@}\FB@fs@wd\dimen@\FBo@wd \fi \flrow@WF@rapt[##1]{\dimen@}% \@ifundefined{capstart}{}{\capstart}% \the\FR@everyfloat\ignorespaces}% }{}% \@namedef{wrap#1}{\killfloatstyle\def\@captype{#1}% \FR@redefs\FBc@wd\z@ \flrow@setlist{{#1}{wrapfloat}{wrap#1}{tmpset}}% \global\let\flrow@typ@tmpset\undefined % \end{macrocode} % Here repeated code from |\float@end| and |\float@dblend|: check whether |\floatbox| % stuff appeared or not. % \changes{v0.1f}{2005/06/14}{The \cmd{\ifFBbuild} flag added: here is not used % \cmd{\float@end} command and so on. } % \begin{macrocode} \def\WF@floatstyhook{\let\@currbox\WF@box \ifFBbuild % \end{macrocode} % (|^^A|---The attempts to arrange the widths of Boxed wrapped floats.) % \begin{macrocode} %^^A \adj@dim\hsize+\FB@wadj=\hsize %^^A \adj@dim\hsize+\FBo@wadj=\hsize \global\setbox\WF@box\flrow@FB{\wd\WF@box}% \else \global\let\WF@box\@currbox \fi}% \@ifnextchar[\WF@wr{\WF@wr[]}}%] \expandafter\let\csname endwrap#1\endcsname\endwrapfloat} %^^A \@namedef{endwrap#1}{\ifdim\hsize>\z@ %^^A \adj@dim\hsize+\FBo@wadj=\hsize\fi\endwrapfloat}} % \end{macrocode} % At last definitions for new subfloat numeration for \pkg{subfig} package. % The subfloats for figures and tables (|\c@subfigure| and |\c@subtable|) % already defined: so at first goes check, whether defined this command for % subfloat (suggestions of Steven Cochran ). % \changes{v0.1f}{2005/06/14}{Added check/filter for already created subfigures % and subtables (SC).} % \begin{macrocode} \@ifundefined{subfloat}{}{\@ifundefined{c@sub#1}{\newsubfloat{#1}}{}}} % \end{macrocode} % \end{macro} % \end{em} % % \begin{macro}{\newfloat} % Now we can explain how to define a new class of floats. Recall that % the three required arguments to |\newfloat| are \meta{type}, % \meta{placement} and \meta{ext}, respectively. First we save the % latter two; we also maintain a list of active \meta{ext}s so we can % later iterate over all currently-open lists of floats. % \begin{macrocode} \@ifdefinable\float@exts{\newtoks\float@exts} % \end{macrocode} % {\em \textit{Floatrow note.} % The |\newfloat| changed and uses |\floatsetup| stuff (redefined by suggestions of % Axel Sommerfeldt).} % \changes{v0.1f}{2005/06/14}{Redefinition (AS).} % \begin{macrocode} \newcommand\newfloat{\@ifstar{\flrow@restylefloat{no}\newfloat@}% {\flrow@restylefloat{yes}\newfloat@}} \newcommand\newfloat@[3]{\@ifnextchar[{\@@newfloat{#1}{#2}{#3}}% {\@newfloat{#1}{#2}{#3}}} \newcommand\@newfloat[3]{% \DeclareNewFloatType{#1}{placement=#2,fileext=#3}} \@ifdefinable\@@newfloat{} \def\@@newfloat#1#2#3[#4]{% \DeclareNewFloatType{#1}{placement=#2,fileext=#3,within=#4}} % \end{macrocode} % \end{macro} % % \begin{macro}{\float@newx} % {\em \textit{Floatrow note.} Macro |\float@newx|, which defines a new float counter, was removed. % It was replaced by |\DeclareNewFloatType| stuff.} % \end{macro} % % \subsubsection{The \pkg{float} Package: Adapting \LaTeX\ Internals} % % We have to adapt some of \LaTeX's internal macros to our needs. % There are several things that have to be changed around % in order to provide the functionality of David Carlisle's \pkg{here}. % The following is thus lifted from \pkg{here}, with changes and with % David's permission: % % \begin{macro}{\@float@Hx} % We save the original version of |\@xfloat|. (This macro is called from % |\@float|, which we used above to define the environment commands for a % new class of floats.) % \begin{macrocode} \let\@float@Hx\@xfloat % \end{macrocode} % \end{macro} % \begin{macro}{\@xfloat} % The new version of |\@xfloat| looks for a |[H]| argument. % If it is present |\@float@HH| is called, otherwise the original macro % (renamed to |\@float@Hx|) is called. % \begin{macrocode} \def\@xfloat#1[{\@ifnextchar{H}{\@float@HH{#1}[}{\@float@Hx{#1}[}} % \end{macrocode} % \end{macro} % {\em\textit{Floatrow note}. Since \pkg{floatrow} always uses float style, % the stuff of flag \cmd{\@flstyle} (which sets whether use or not any predefined % float style) moved out.} % % Later on we'll need a box to save a |[H]| float. % \begin{macrocode} \newsavebox\float@box % \end{macrocode} % % \begin{macro}{\@float@HH} % First gobble the |[H]|. Note that \texttt{H} should not be used in % conjunction with the other placement options, nor as the value of the % default placement, as set in |\fps@|{\it type}. % \begin{macrocode} \def\@float@HH#1[H]{% % \end{macrocode} % Locally redefine the end of the environment. % \begin{macrocode} \expandafter\let\csname end#1\endcsname\float@endH % \end{macrocode} % We don't get a |\@currbox| if we don't actually use the float mechanism. % Therefore we fake one using the |\float@box| defined above. % \begin{macrocode} \let\@currbox\float@box % \end{macrocode} % Now we save the current float class name for use in constructing the % |\caption|. The caption box (defined below) is initialized to an empty % box to avoid trouble with floats not having a caption. Then we start the % box that'll hold the float itself. % |\parindent| is set to zero for compatibility with the standard \texttt{[h]} % option. % % \emph{Floatrow note. % Since \pkg{floatrow} always uses preloaded style % the stuff of flag \cmd{\@flstyle} moved out.} % \begin{macrocode} \def\@captype{#1}\setbox\@floatcapt=\vbox{}% \setbox\@currbox\color@vbox\normalcolor \vbox\bgroup \hsize\columnwidth \@parboxrestore \@floatboxreset \@setnobreak % \end{macrocode} % The final |\ignorespaces| is needed to gobble any spaces or new lines % after the {\tt[H]} tokens. % \begin{macrocode} \ignorespaces} % \end{macrocode} % \end{macro} % % \begin{em} % \begin{macro}{\flrow@flboxreset} % \textit{Floatrow note.} % The stuff of |\@floatboxreset| changed. % At first goes original \LaTeX's macro |\@floatboxreset| saved as % |\FR@flboxreset| at the beginning of package. % Then goes flag for facing layout and command which inputs references from % \texttt{aux}-file and temporary settings. At last \pkg{floatrow} looks % whether caption stays above/below object, or beside and chooses necessary % macro of width counting. % \changes{v0.1d}{2005/02/07}{Added flag for float box layout building} % \changes{v0.1f}{2005/06/14}{This macro is redefined to % \cmd{\@floatboxreset} inside floats.} % \changes{v0.1f}{2005/06/14}{The \cmd{\capstart} stuff loaded here.} % \begin{macrocode} \newcommand\flrow@flboxreset{\FR@flboxreset \@ifundefined{capstart}{}{\capstart}% \FB@facing\@tempswafalse\FBiffacing\@tempswatrue\fi \if@tempswa\FB@readaux{\relax}\fi \flrow@settype{tmpset}\global\let\flrow@typ@tmpset\undefined \global\let\FBcheight\relax\global\let\FBoheight\relax \global\let\FBfheight\relax \FBifcapbeside\FC@fs@wd\else\FB@fs@wd\fi \the\FR@everyfloat} % \end{macrocode} % The definition of three height commands as |\relax|. % We define \emph{height} arguments of caption, % object, and foot boxes as |\relax| which (like in \env{minipage} % environment or in |\parbox|) mean usage of natural height of components. % \begin{macrocode} \@ifdefinable\FBcheight{\let\FBcheight\relax} \@ifdefinable\FBoheight{\let\FBoheight\relax} \@ifdefinable\FBfheight{\let\FBfheight\relax} % \end{macrocode} % \end{macro} % % \begin{macro}{\FB@fs@wd} % The width settings for float box with caption above or below object. % \begin{macrocode} \newcommand\FB@fs@wd{\@tempdima\FBB@wd % \end{macrocode} % The |\flrow@setwd| could define the width for current float. % \begin{macrocode} \flrow@setwd\textwidth\@tempdima \adj@dim\@tempdima-\FB@wadj=\@tempdima \settowidth\@tempdimb{{\FBleftmargin}{\FBrightmargin}}% \advance\@tempdima-\@tempdimb \global\FBc@wd\@tempdima\global\FB@wd\@tempdima \adj@dim\@tempdima-\FBo@wadj={\global\FBo@wd}\hsize\FBo@wd \FBifcaptop \ifnum\FPOScnt=0\columnwidth\hsize\else\columnwidth\FBc@wd\fi \else \columnwidth\FBc@wd \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\FC@fs@wd} % The width settings for float box with caption beside object. % \changes{v0.1d}{2005/02/07}{Settings for beside float moved outside group} % \begin{macrocode} \newcommand\FC@fs@wd{\@tempdima\FBB@wd\flrow@FClist \settowidth\@tempdimb{{\FCleftmargin}{\FCrightmargin}}% \advance\@tempdima-\@tempdimb \adj@dim\@tempdima-\FB@wadj=\@tempdima \settowidth\@tempdimb{{\floatcapbesidesep}}% \advance\@tempdima-\@tempdimb % \end{macrocode} % This flag controls predefined width of caption. % \begin{macrocode} \FC@ifc@wd \ifx\FCwidth\relax \PackageError{You didn't define width of caption\MessageBreak for plain float environment.}{\flrow@eh}% \else \global\FBc@wd=\FCwidth % \end{macrocode} % This flag controls whether to fill rest space of float box with object contents % when caption width was predefined. % \begin{macrocode} \FC@ifo@fil\advance\@tempdima-\FBc@wd\fi \fi \else \global\FBc@wd\@tempdima \fi \FC@ifo@fil\else\@tempdima.5\@tempdima % \end{macrocode} % The |\flrow@setwd| could define the width for followed float. % \begin{macrocode} \flrow@setwd\FB@wd\@tempdima\fi \adj@dim\@tempdima-\FBo@wadj={\global\FBo@wd}% \FC@ifc@wd\else\global\advance\FBc@wd-\FB@wd\fi \hsize\FBo@wd\columnwidth\FBc@wd \FCset@vpos} % \end{macrocode} % \end{macro} % \end{em} % % \begin{macro}{\float@makebox} % Basically, we must arrange for `style commands' to be executed % at certain points during the generation of the float. % \LaTeX\ puts a float into a vertical box |\@currbox| which it takes % off a list of empty boxes for insertions. When the |\float@makebox| macro % is called, |\@currbox| contains the complete float, minus the caption^^A % ---we'll see later that we use our own |\caption| command to % put the caption into a |\vbox| of its own. This is the only way % we can control the position of the caption by the float style, % regardless of where the caption appears in the float's input text itself. % % {\em [\ldots] \textit{Floatrow note.} Skipped explanation.} % % \begin{em} % \textit{Floatrow note.} % Macro |\float@makebox| was redefined to fit more float object---caption combinations. % There was created the |\float@makebox| stuff. % First goes changed \pkg{float} |\float@makebox| which loads necessary layout macro % for above/below or beside captions. % % The |\float@makebox| stuff includes |\FB@foot| macro % to allow usage of |\floatfoot| (any foot non-caption material) % and |\footnotetext| stuff inside float environment in minipage-like mode. % % \changes{v0.1d}{2005/02/07}{Bug fix: \cmd{\FBiffloatrow} deleted} % \begin{macrocode} \newcommand\float@makebox[1]{% \FBifcapbeside\flrow@FC{#1}\else\flrow@FB{#1}\fi} % \end{macrocode} % The definitions of vertical fine tuning corrections. % \changes{v0.1d}{2005/02/07}{Added vert skips (\cmd{\FBaskip}, \cmd{\FBbskip}) % for layout fine tuning} % \changes{v0.1d}{2005/02/07}{Added flag for float box layout building} % \changes{v0.1d}{2005/02/07}{\cmd{\begin@FBBOX}\dots\cmd{\end@FBBOX} moved to \cmd{\flrow@makebox}} % \begin{macrocode} \newcommand\FBaskip{\z@}\newcommand\FBbskip{\z@} \newif\ifFBbuild\FBbuildtrue % \end{macrocode} % \begin{macro}{\flrow@FB} % The macro of |\float@makebox| stuff which builds float box with above/below caption. % \changes{v0.1f}{2005/06/14}{The argument used for defining of dimension---%^^A % restored for (\pkg{float}) compatibility with \pkg{hyperref} package.} % \begin{macrocode} \newcommand\flrow@FB[1]{\vbox{\@tempdima=#1\vskip\FBaskip \@parboxrestore\hbox to\@tempdima{\def\FB@zskip{\vskip\z@}% \FBleftmargin\flrow@FB@\FBrightmargin}% \FBiffacing\FB@writeaux{\string\global\string\c@FBcnt\thepage}\fi \gdef\begin@FBBOX{\vbox\bgroup}\gdef\end@FBBOX{\egroup}% \vskip\FBbskip\gdef\FBaskip{\z@}\gdef\FBbskip{\z@}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\flrow@FC} % Definition of float with beside caption. % \changes{v0.1f}{2005/06/14}{The argument used for defining of dimension---%^^A % restored for (\pkg{float}) compatibility with \pkg{hyperref} package.} % \begin{macrocode} \newcommand\flrow@FC[1]{\vbox{\@tempdima=#1\@parboxrestore \flrow@FClist\vskip\FBaskip \hbox to\@tempdima{\FCleftmargin\flrow@FC@\FCrightmargin}% \FBiffacing\FB@writeaux{\string\global\string\c@FBcnt\thepage}\fi \nocapbeside\global\let\FCwidth\relax \vskip\FBbskip\gdef\FBaskip{\z@}\gdef\FBbskip{\z@}}} % \end{macrocode} % \end{macro} % These macros define box, % which is changed accordingly for creation of axis at the top, bottom, or center % of boxes. % \changes{v0.1d}{2005/02/07}{Added vertical skips (\cmd{\FBaskip}, \cmd{\FBbskip}) % for layout fine tuning} % \changes{v0.1d}{2005/02/07}{Added flag for float box layout building} % \changes{v0.1d}{2005/02/07}{Settings for beside caption removed % (they were set outside group somewhere above)} % \begin{macrocode} \newcommand\FCc@box[1]{\def\@parboxto{}\FC@bbox#1\FC@ebox} \newcommand\FC@bbox{\vbox\@parboxto\bgroup} \newcommand\FC@ebox{\vskip\z@\egroup} \newcommand\FCo@box[1]{\def\@parboxto{}\ifx\FBoheight\relax\FC@bbox\else \def\@parboxto{to\FBoheight}\FC@bbox\vsize\FBoheight\fi#1\FC@ebox} % \end{macrocode} % Definitions for fill material for vertical alignment and command with % width settings of boxes. % \begin{macrocode} \newcommand\FBafil{\vfill}\newcommand\FBbfil{\vfill} \newcommand\FBw@box[1]{\hsize#1\columnwidth#1\normalfont\normalcolor} \newcommand\FB@vbox[3]{\ifx#2\relax\vbox\bgroup\else \vbox to#2\bgroup\vsize#2\fi\FBw@box#1#3\vskip\z@\egroup} \newcommand\FB@vtop[3]{\ifx#2\relax\vtop\bgroup\else \vtop to#2\bgroup\vsize#2\fi\vskip\z@\FBw@box#1#3\egroup} % \end{macrocode} % % \begin{macro}{\flrow@FB@} % \begin{macro}{\flrow@FC@} % |\float@makebox|-like macros for usage inside float row % (they don't create any left/right fill material). % % First macro builds box with caption above/below. % \changes{v0.1d}{2005/02/07}{\cmd{\begin@FBBOX}\dots\cmd{\end@FBBOX} moved to \cmd{\flrow@makebox}} % \changes{v0.1f}{2005/06/14}{New design implementation for \cmd{\captionof}-like stuff?} % \begin{macrocode} \newcommand\flrow@FB@{\FB@frame{\begin@FBBOX \adj@dim\FBo@wd+\FBo@wadj=\hsize \@tempdima\ht\@currbox\advance\@tempdima\dp\@currbox \ifdim\@tempdima=\z@ \def\@@FBskip{}\let\FBo@frame\@gobble \fi \@parboxrestore\@@FBabove \FBifcaptop % \end{macrocode} % If needed and exists---caption box above float object. % If key \texttt{footposition=caption} under caption loaded % foot material. % \begin{macrocode} \ifvoid\@floatcapt\else \FB@vbox\FBc@wd\FBcheight{\FBifCAPTOP\else\vfill\fi \unvbox\@floatcapt \ifnum\FPOScnt=1\vbox{\FB@foot}\fi\vfil}% \@@FBskip\hrule\@height\z@\@depth\z@ \fi % \end{macrocode} % Box of float object. If key \texttt{footposition=default} % foot material loaded in the bottom of float object box. In the case of % \texttt{footposition=fott} foot material loads after float object box. % \begin{macrocode} \vtop{\vskip\z@\FBo@frame{\FB@vtop\FBo@wd\FBoheight {\FBafil\unvbox\@currbox\FBbfil % \end{macrocode} % The zero vertical skip must be here in any case. % \begin{macrocode} \vskip\z@ \ifnum\FPOScnt=0 \FB@vtop\FBo@wd\FBfheight{\FB@foot\vfil}\fi}}\par \par\vskip\z@ \ifnum\FPOScnt=2\vskip\z@ \FB@vtop\FBc@wd\FBfheight{\FB@foot\vfil}\fi}% % \end{macrocode} % If needed and exists---caption box below float object. % If key \texttt{footposition=default} or \texttt{footposition=caption} % foot material loaded under caption contents. % \begin{macrocode} \else\ifnum\FPOScnt=0\FPOScnt=1\fi \FBo@frame{\FB@vbox\FBo@wd\FBoheight{\FBafil \unvbox\@currbox\FBbfil}}\par \ifvoid\@floatcapt\else \@@FBskip\hrule\@height\z@\@depth\z@ \FB@vtop\FBc@wd\FBcheight{\hsize\columnwidth\unvbox\@floatcapt \ifnum\FPOScnt=1\vtop{\FB@foot}\fi\par % \end{macrocode} % The |\vss| glue appears here because the included box with foot material % sometimes creates a small overfull in float rows and crashes alignment of % \texttt{postcode=} material. % \begin{macrocode} \vfill\vskip\z@\vss \ifnum\FPOScnt=2\FB@vtop\FBc@wd\FBfheight{\FB@foot\vfil}\fi }\fi \fi\@@FBbelow\FB@zskip\end@FBBOX}} % \end{macrocode} % Second internal macro for float row builds float box with beside caption. % \changes{v0.1e}{2005/03/22}{Sorting \cmd{\floatfacing} command to use separate parameters for % building of beside caption layout and float environment margins.} % \begin{macrocode} \newcommand\flrow@FC@{\FB@frame{\begin@FBBOX \adj@dim\FBo@wd+\FBo@wadj=\hsize \settowidth\@tempdimb{\floatcapbesidesep}\advance\hsize\@tempdimb \advance\hsize\FBc@wd\@parboxrestore\@@FBabove \hbox{\floatfacing*% {\ifvoid\@floatcapt\else \FCc@box{\FBw@box\FBc@wd\unvbox\@floatcapt\FB@foot}% \floatcapbesidesep\fi % \end{macrocode} % |\FBf@raise| uses |\raisebox| correction to align top (bottom) of caption text with % top (bottom) of object frame. % \begin{macrocode} \FBf@raise{\FBo@frame{\FCo@box{\FBw@box\FBc@wd\unvbox\@currbox}}}}% {\FBf@raise{\FBo@frame{\FCo@box{\FBw@box\FBo@wd\unvbox\@currbox}}}% \ifvoid\@floatcapt\else \floatcapbesidesep\FCc@box{\FBw@box\FBc@wd \unvbox\@floatcapt\FB@foot}\fi }}\par\@@FBbelow\vskip\z@ \end@FBBOX}} % \end{macrocode} % Macro for foots and command for skip outside float row. % \begin{macrocode} \newcommand\FB@foot{\let\FR@ifFOOT\iftrue\FB@putfoots\@@par\FB@putfnotes} \newcommand\FB@zskip{} % \end{macrocode} % \end{macro} % \end{macro} % \end{em} % \end{macro} % % \begin{macro}{\float@end} % The internal macro |\end@float| appears here under the name of |\float@end|. % The main thing which is changed is that we call |\float@makebox| to % reconstruct the float according to the float style. % We want to do exactly what the \LaTeX\ kernel does without copying % actual kernel code if we can help it; therefore we finish off the % float using the kernel |\@endfloatbox|, then replace \LaTeX's % contents of the |\@currbox| with our own processed version, and then % hand the thing off to \LaTeX{} again. Of course we have already done % |\@endfloatbox|, which comes at the beginning of |\end@float|, ourselves; % therefore we neutralize it before calling |\end@float|. This doesn't % matter since we're in a group anyway (we wanted to keep the style % commands local), so everything is undone at the end of the environment. % % {\em \textit{Floatrow note.} % Added flag |\ifFBbuild| for float box layout building. % This flag stops repeated usage of |\float@makebox| after |\floatbox| % in |\float@end|, |\float@endH| and % |\float@dblend| macros and, if \pkg{rotating} used, % replaces usage of |\float@makebox| to \LaTeX's standard box |\@currbox| in % |\rotfloat@makebox| and |\rotfloat@dblmakebox| commands.} % \changes{v0.1d}{2005/02/07}{Added flag for float box layout building} % \begin{macrocode} \newcommand\float@end{\ifFBbuild\@endfloatbox \global\setbox\@currbox\float@makebox\columnwidth \let\@endfloatbox\relax\fi \end@float} % \end{macrocode} % \end{macro} % % \begin{macro}{\float@endH} % The |\float@endH| command is, again, derived from \pkg{here}. It'll % deal correctly with a non-floating float, inserting the proper amounts % of white space above and below. % % {\em \textit{Floatrow note.} % Added flag |\ifFBbuild| for float box layout building. % This flag stops repeated usage of |\float@makebox| after |\floatbox|.} % \changes{v0.1d}{2005/02/07}{Added flag for float box layout building} % \begin{macrocode} \newcommand\float@endH{\@endfloatbox\vskip\intextsep \ifFBbuild\setbox\@currbox\float@makebox\columnwidth\fi \box\@currbox\vskip\intextsep\relax} % \end{macrocode} % \end{macro} % % \begin{macro}{\float@dblend} % The |\float@dblend| command finishes up double-column floats. This % uses the same approach as |\float@end| above. It seems to work. % % {\em \textit{Floatrow note.} % Added flag |\ifFBbuild| for float box layout building. % This flag stops repeated usage of |\float@makebox| after |\floatbox|.} % \changes{v0.1d}{2005/02/07}{Added flag for float box layout building} % \begin{macrocode} \newcommand\float@dblend{\ifFBbuild\@endfloatbox \global\setbox\@currbox\float@makebox\textwidth \let\@endfloatbox\relax\fi \end@dblfloat} % \end{macrocode} % \end{macro} % % \subsubsection{\pkg{float} package: Captions and lists of floats} % % Now for the caption routines. % We use a box, |\@floatcapt|, to hold the caption while the float % is assembled. % \begin{macrocode} \newsavebox\@floatcapt % \end{macrocode} % % \begin{macro}{\caption} % This is the only \LaTeX\ macro that this document style supersedes. % {\em[\dots]} the caption routines from \pkg{float} are used {\em[\dots]}. % {\em \textit{Floatrow note.} The \pkg{float}'s caption layout stuff replaced by % \pkg{caption}'s |\captionsetup|. In \pkg{floatrow} package redefined % |\@makecaption| command (|\caption|'s definition commented).} % \changes{v0.1f}{2005/06/14}{The definition of \cmd{\caption} commented.} % \begin{macrocode} %\renewcommand\caption{% % \ifx\@captype\@undefined % \@latex@error{\noexpand\caption outside float}\@ehd % \expandafter\@gobbletwo % \else % \refstepcounter\@captype % \fi % \@dblarg{\float@caption\@captype}} % \end{macrocode} % \end{macro} % % \begin{macro}{\float@caption} % The |\float@caption| macro takes care of entering the caption into % the appropriate listing. It also controls the typesetting of the caption % itself, although a style-dependent macro |\@fs@capt| is called % to handle the specifics. {\em \textit{Floatrow note}. The command |\@fs@capt| % removed---\pkg{floatrow} package uses \pkg{caption} 3.0 possibilities and % its own definitions.} % % Note that because the caption is saved in a box % instead of being output to the float right away, you cannot simply put % a legend after the caption proper; it has to follow the |\caption| % command in an optional argument. % % First of all, we call |\addcontentsline| to update the list of % floats of this class. Note that |\float@caption| is |\long| % to allow for paragraph breaks in its arguments. % % {\em \textit{Floatrow note.} The support of optional argument for legend after % mandatory caption argument didn't declared in user part of documentation. % Since caption version 3.0 didn't support this feature, it was removed. Use % |\floatfoot| macro for additional text.} % % \changes{v0.1f}{2005/06/14}{The definition of \cmd{\float@caption} commented: % this macro used as safe command for \cmd{\@caption}.} % {\em \textit{Floatrow note.} In version 0.1f this definition commented.} % \begin{macrocode} %\long\def\float@caption#1[#2]#3{% % \addcontentsline{\@nameuse{ext@#1}}{#1}% % {\protect\numberline{\@nameuse{the#1}}{\ignorespaces #2}}% % \end{macrocode} % Now we collect the caption proper. The caption name and number are % taken from |\fnum@|\meta{float}, where \meta{float} is the class % of float we're currently handling. % \begin{macrocode} % \global\setbox\@floatcapt % \end{macrocode} % {\em \textit{Floatrow note.} % In next line is added necessary width for caption for fancy float layout. % The flag |\if@@FS|, which checks whether float style predefined is stored---maybe % caption appears outside any float environment and |\floatbox| command in this case % it will use |\hsize| definitions.} % \begin{macrocode} % \vbox\bgroup\@parboxrestore\reset@font\if@@FS\hsize\FBc@wd\fi % \normalsize\abovecaptionskip\z@\belowcaptionskip\z@ % \@makecaption{\@nameuse{fnum@#1}}{\ignorespaces #3}\egroup} % \end{macrocode} % \end{macro} % % \begin{macro}{\listof} % The |\listof| command reads the desired list of floats from the % appropriate auxiliary file. The file is then restarted. % First of all, we check whether the float style that's supposed to be % listed is actually defined. If not, we output a |\float@error| % {\em(\textit{Floatrow note.} the |\float@error| changed to |\flrow@error|)}. % \begin{macrocode} \newcommand*{\listof}[2]{% \@ifundefined{ext@#1}{\flrow@error{#1}}{% % \end{macrocode} % All's well until now. We define the |\l@|\meta{float} command % that \LaTeX\ needs for formatting the list, and then typeset the % appropriate list header. % \begin{macrocode} \@namedef{l@#1}{\@dottedtocline{1}{1.5em}{2.3em}}% \float@listhead{#2}% % \end{macrocode} % Next we call |\@starttoc| with the correct file extension % to do the actual work. % If |\parskip| is non-zero, vertical space would be added between % the individual list entries. To avoid this, we zero |\parskip| % locally. This should be done after the |\float@listhead| above since % |\parskip| also influences the spacing of headings, and the listings % would look different from other chapters otherwise. (Suggested by % Markus Kohm.) % \begin{macrocode} \begingroup\setlength{\parskip}{\z@}% \@starttoc{\@nameuse{ext@#1}}% \endgroup}} % \end{macrocode} % \end{macro} % % \begin{macro}{\float@listhead} % This command generates the beginning of a list of floats. % Currently the list appears at the chapter or the section level, depending % on whether chapters are supported in the document class. According to % a suggestion from Markus Kohm, this is now in a separate command so it % can be overridden by other packages. We also use |\MakeUppercase| instead % of |\uppercase|; when this piece of code was first written |\MakeUppercase| % hadn't been invented yet, and for some reason this never got updated. % \begin{macrocode} \providecommand*{\float@listhead}[1]{% \@ifundefined{chapter}{\def\@tempa{\section*}}% {\def\@tempa{\chapter*}}% \@tempa{#1\@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\float@addtolists} % This command allows \LaTeX\ programmers to add something to all % currently-defined lists of floats, such as some extra vertical % space at the beginning of a new chapter in the main text % (|\float@addtolists{\protect\addvspace{10pt}}|), without knowing % exactly which lists of floats are currently being constructed. % This command currently does \emph{not} operate on the |lot| and |lof| % lists. % \begin{macrocode} \newcommand\float@addtolists[1]{% \def\float@do##1{\addtocontents{##1}{#1}} \the\float@exts} % \end{macrocode} % \end{macro} % % {\em \textit{Floatrow note.} Here goes \pkg{floatrow} message about finishing of loading of % \pkg{float} package's corrected code.} % \begin{macrocode} \PackageInfo{floatrow}{Modified float package code loaded} % \end{macrocode} % % \subsection{Borrowed Code (with original comment) from \pkg{rotfloat} package} % % \begin{macrocode} \IfFileExists{rotating.sty}{\@tempswatrue}{\@tempswafalse} \if@tempswa % \end{macrocode} % % {\em \textit{Floatrow note.} Here goes code of revised and adapted package % to floatrow. With documentation. % % The main redefinitions for \pkg{rotfloat} (|\flrow@restyle| stuff) purposes % were made above (in \pkg{float} part).\\{}[\dots] % % Code contents of |\rotfloat@float| and |\rotfloat@dblfloat| moved up inside |\flrow@restyle| macro.} % % \begin{macro}{\@float@HH} % We have to extend |\@float@HH|\emph{[\dots]}. % {\em \textit{Floatrow note}. Since |\rotfloat@endH| was originally defined as % |\float@endH| in current macro used |\float@endH|} % \begin{macrocode} \let\rotfloat@HH\@float@HH \def\@float@HH#1{% \expandafter\let\csname endsideways#1\endcsname\float@endH % \expandafter\let\csname endsideways#1*\endcsname\rotfloat@dblendH \let\end@float\relax \rotfloat@HH{#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\rotfloat@endH} % This one hasn't to be changed. {\em \textit{Floatrow note}. Commented.} % \begin{macrocode} % \newcommand\rotfloat@endH{\float@endH} % \end{macrocode} % \end{macro} % % \begin{macro}{\rotfloat@makebox} % \begin{macro}{\rotdblfloat@makebox} % |\float@makebox| has a parameter here which will be set to |\columnwidth| or % |\textwidth|. (In the \pkg{float} package $v1.2$ the |\columnwidth| was % hard wired into |\float@makebox|.) So we have to pass this parameter through % the original version of |\float@makebox| which we have saved to % |\rotfloat@@makebox| within |\rotfloat@float|.) % \begin{macrocode} \newcommand*\rotfloat@makebox[1]{% \vbox{\def\@float##1[##2]{}\let\end@float\relax \@rotfloat{}[]% \ifFBbuild\rotfloat@@makebox{#1}\else\box\@currbox\fi \end@rotfloat}} \newcommand*\rotdblfloat@makebox[1]{% \vbox{\def\@float##1[##2]{}\let\end@dblfloat\relax \@rotdblfloat{}[]% \ifFBbuild\rotfloat@@makebox{#1}\else\box\@currbox\fi \end@rotdblfloat}} % \end{macrocode} % \end{macro} % \end{macro} % % That's all folks\dots {\em \textit{Floatrow note:} of borrowed \pkg{rotfloat} package. % And here goes message about loading of \pkg{rotfloat} package's code.} % \begin{macrocode} \PackageInfo{floatrow}{Modified rotfloat package code loaded} \fi % \end{macrocode} % % \end{sl} % % \subsection{Stuff to Load Footnotes and Float Foot Material} % % \begin{macro}{\FR@everyfloat} % These token macros add redefinition of float stuff to arrange usage % of footnotes inside plain float contents. % \changes{v0.1f}{2005/06/14}{Deleted \cmd{\flrow@capsetup}: moved to % \cmd{\flrow@setlist} stuff (AS).} % \begin{macrocode} \@ifdefinable\FR@everyfloat{\newtoks\FR@everyfloat} \FR@everyfloat={\let\@footnotetext\@mpfootnotetext \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@ \floatobjectset\floatfont} % \end{macrocode} % \end{macro} % % \begin{macro}{\FR@ifFOOT} % Flag for placing foot material. % \begin{macrocode} \let\FR@ifFOOT\iffalse % \end{macrocode} % \end{macro} % % \begin{macro}{\FB@putfnotes} % The excerpt from minipage macro (\LaTeX's core stuff) to put footnotes. % \begin{macrocode} \newcommand\FB@putfnotes{% \ifvoid\@mpfootins\else\FR@ifFOOT % \end{macrocode} % A special skip (|\skip\@mpfootins|) dimension for footnotes in % float box changed to |\floatfootskip|. % \begin{macrocode} \vskip\floatfootskip\normalcolor\FBfootnoterule \unvbox\@mpfootins\@@par \fi\fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\FB@putfoots} % Macro analogous to previous one, but for loading of |\floatfoot| stuff. % To load float foot material there is defined |\newinsert| for its stuff. % \begin{macrocode} \@ifdefinable\flrow@foot{\newinsert\flrow@foot} \newcommand\FB@putfoots{% \ifvoid\flrow@foot\else\FR@ifFOOT % \end{macrocode} % The |\footnoterule| is not used for float foot. % \begin{macrocode} \vskip\floatfootskip\normalcolor \unvbox\flrow@foot\@@par \fi\fi} % \end{macrocode} % \end{macro} % % \subsection{New Definitions for Footnotes} % % \begin{macro}{\mpfootnotemark} % There is the definition of |\footnotemark| which creates the same mark as % |\footnote| inside \texttt{minipage} environment. That could be useful in % multiple footnote marks in tables. Since the same definition was loaded in % \pkg{footmisc} v5.3, these macros are defined at the beginning of document % in the case only if \pkg{footmisc} was not loaded. % \begin{macrocode} \AtBeginDocument{\providecommand\mpfootnotemark{\@ifnextchar[%] \@xmpfootnotemark{\stepcounter\@mpfn \protected@xdef\@thefnmark{\thempfn}\@footnotemark}}% \@ifundefined{@xmpfootnotemark} {\def\@xmpfootnotemark[#1]{\begingroup\c@mpfootnote#1\relax \unrestored@protected@xdef\@thefnmark{\thempfn}\endgroup \@footnotemark}}{}} % \end{macrocode} % \end{macro} % % \subsection{Macro for Legends, Explications, etc.} % % \begin{macro}{\floatfoot} % This command made for the same reasons as \pkg{ccaption}'s |\legend| macro % and uses its style. It uses |\caption| mechanism. % \begin{macrocode} \newcommand\floatfoot{\@ifstar {\def\FR@tmp{\@parboxrestore\captionfootfont}\floatfoot@}% {\def\FR@tmp{\captionfootfont}\floatfoot@}} \newcommand\floatfoot@[1]{% \global\setbox\flrow@foot\vbox{% % \end{macrocode} % The |\if@@FS| flag stored for \env{wrap...} enviroments. % \begin{macrocode} \if@@FS\hsize\columnwidth\fi \@parboxrestore\reset@font\color@begingroup % \end{macrocode} % Apply current float settings. % \begin{macrocode} \caption@settype{\@captype}% % \end{macrocode} % Apply floatfoot settings. % \begin{macrocode} \caption@settype{floatfoot}% % \end{macrocode} % No captionlabel. % \begin{macrocode} \captionsetup{labelformat=empty,labelsep=none}% \caption@@make{}{\FR@tmp#1\@finalstrut\strutbox}% \color@endgroup}}% % \end{macrocode} % \end{macro} % % \subsection{The Usage of Command for Float Box} % % The usage of macro |\floatbox| is: % \\[\medskipamount] % |\floatbox[|\meta{preamble}|]{|\meta{captype}|}[|\meta{width}|]|^^A % |[|\meta{height}|][|\meta{inner vert pos}|]|^^A % \\\hspace*{5em}|{|\meta{caption}|}{|\meta{float object}|}|. % \\[\medskipamount] % where: % \begin{description} % \item[\meta{preamble}]there could be\\ % \qquad\cmd{\capbeside} and \cmd{\nocapbeside}, % or you may try to add any other regular command (e.g. |\captionsetup| or |\thisfloatsetup| stuff); % \item[\meta{captype}]the |\@captype| of float type this command created for; % \item[\meta{width}]the width of object---caption box % (in case of caption above or below object), % or width of object box (if caption stays beside object); % \item[\meta{height}]the height of object---caption box % (in case of caption above or below object), % or height of object box (if caption stays beside object); % \item[\meta{inner vert pos}]vertical alignment of object if its box larger than contents. % \end{description} % % \subsection{Defining New Float Box Commands} % % \begin{macro}{\newfloatcommand} % \begin{macro}{\renewfloatcommand} % The following macros allow to define user commands-abbreviations: % they have common unchanged preamble and setting for default width of float % box. Usage:\\[\medskipamount] % |\newfloatcommand{|\meta{command}|}{|\meta{captype}|}|^^A % |[|\meta{preamble}|][|\meta{default width}|]|\\[\medskipamount] % where: % \begin{description} % \item[\meta{command}]the new command name without backslash; % \item[\meta{captype}]see section above; % \item[\meta{preamble}]see section above; % \item[\meta{default width}]here you could put |\FBwidth| option: in this % case the width of object---caption box (in case of caption above or below % object) or width of object box (if caption stays beside object) will be % equal to width of object. % \end{description} % Examples: % \begin{verse} % |\newfloatcommand{ffigbox}{figure}|\\ % |\newfloatcommand{ttabbox}{table}[\captop][\FBwidth]| % \end{verse} % % The definition of command for new float command. % \changes{v0.1f}{2005/06/14}{Bug fix: corrected \cmd{\@latex@error} command code.} % \begin{macrocode} \newcommand\newfloatcommand[2]{% \@ifundefined{#1}{}% {\PackageError{floatrow}{\string#1 already defined}{\@ehd}}% \@ifnextchar[{\FB@nc{#1}{#2}}{\FB@nc{#1}{#2}[]}} \newcommand\renewfloatcommand[2]{% \@ifundefined{#1}{}% {\PackageInfo{floatrow}{Redefining \string#1}}% \@ifnextchar[{\FB@nc{#1}{#2}}{\FB@nc{#1}{#2}[]}} \@ifdefinable\FB@nc{}\@ifdefinable\FB@@nc{} \def\FB@nc#1#2[#3]{% \@ifnextchar[{\FB@@nc{#1}{#2}[#3]}{\FB@@nc{#1}{#2}[#3][]}} \def\FB@@nc#1#2[#3][#4]{% \@namedef{#1}{\begingroup #3\def\@captype{#2}% \@ifnextchar[{\@floatbox}{\@floatbox[#4]}}} % \end{macrocode} % \end{macro} % \end{macro} % % \subsubsection{Predefined Abbreviations for Figures and Tables} % % \begin{macro}{\ffigbox} % \begin{macro}{\ttabbox} % \begin{macro}{\fcapside} % The abbreviations for object---caption combination in float % figures and tables and also for figures with beside captions % (there is not given \emph{abbreviation} command for beside % caption in tables---I can't imagine such book design). % \begin{macrocode} \newfloatcommand{ffigbox}{figure}[\nocapbeside][] \newfloatcommand{ttabbox}{table}[\captop][\FBwidth] \newfloatcommand{fcapside}{figure}[\capbeside][] % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \subsection{Building Float Box} % % \subsubsection{Dimensions Used in Float Box Building} % % \begin{macro}{\FB@wd} % \begin{macro}{\FBo@wd} % \begin{macro}{\FBc@wd} % These internal dimensions used for defining widths for % float boxes entirely and for object and caption separately % (they could differ in special style layouts). % \begin{macrocode} \@ifdefinable\FB@wd {\newdimen\FB@wd} \@ifdefinable\FBo@wd{\newdimen\FBo@wd} \@ifdefinable\FBc@wd{\newdimen\FBc@wd} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\FBo@ht} % \begin{macro}{\FBc@ht} % \begin{macro}{\FBf@ht} % The internal dimensions for heights of object and caption. % Third dimension defines height of footnote and float foot stuff. % \begin{macrocode} \newlength\FBo@ht \newlength\FBc@ht \newlength\FBf@ht % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\FBo@max} % \begin{macro}{\FBc@max} % \begin{macro}{\FBf@max} % These three internal dimensions determine maximum object, caption and foot boxes % in float row environments for special styles. % \begin{macrocode} \newlength\FBo@max \newlength\FBc@max \newlength\FBf@max % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \subsubsection{Commands for Counting Width and Height} % % \begin{macro}{\FR@loc@addcnt} % \begin{macro}{\FR@loc@} % \begin{macro}{\FBtmp@cap} % Redefinition of \cmd{\addtocounter} macro---localization of counter change. % \begin{macrocode} \newcommand\FR@loc@addcnt[2]{% \@ifundefined{c@#1}{\@nocounterr{#1}}% {\advance\csname c@#1\endcsname #2\relax}} % \end{macrocode} % (The command for localization of |\refstepcounter| and |\refsteponlycounter| commented. % For a while.) % \begin{macrocode} %\newcommand\FR@loc@refcnt[1]{% % \@ifundefined{c@#1}{\@nocounterr{#1}}% % {\advance\csname c@#1\endcsname1\relax}} % \end{macrocode} % Gobbling of caption label and localization of counter change. % \begin{macrocode} \newcommand\FR@loc@{\let\label\@gobble % \let\refstepcounter\FR@loc@refcnt\let\refsteponlycounter\FR@loc@refcnt % \end{macrocode} % The |\cl@@ckpt| is macro which ``globalizes'' all counter. It is used by \env{tabularx} % environment. Here it is emptied during local creation of caption box. % \changes{v0.1d}{2005/02/07}{Advanced redefinition of global recount (for \env{tabularx} environment)} % \changes{v0.1f}{2005/06/14}{Added `gobbling' redefinition for \cmd{\sf@updatecaptionlist} % macro (\pkg{subfig}).} % \begin{macrocode} \let\cl@@ckpt\empty\let\addtocounter\FR@loc@addcnt \def\sf@updatecaptionlist##1##2##3##4{}} % \end{macrocode} % (The macro for temporary redefinition for counting of caption width. Commented.) % \begin{macrocode} \def\FBtmp@cap#1[#2]#3{\sbox\@tempboxa {\caption@@@make{\csname fnum@\@captype \endcsname}{#3}}% \global\@tempdimb\wd\@tempboxa} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\FBget@box} % This macro counts widths and heights of caption and % object boxes accordingly to \meta{width} and \meta{height} % arguments of |\floatbox| macro. % \label{FBwidth} % \begin{macrocode} \newcommand\FBget@box[3]{% % \end{macrocode} % At first macro defines |\hsize| (which could be used in width definition), % i.e. change it for fit contents in boxes. % The |\FBget@box| macro uses the |\FBB@wd| command. In the case of |\hsize=0pt| % the |\FBB@wd| still defined as |\relax|. It will be defined later. % % The |\hsize=0pt| can be defined in mandatory argument of \env{wrap...} environment % in the case of creation space equal to float contents. If |\floatbox| macro % has not any \oarg{width} argument, the |\hsize| of wrapped figure % equals to beside text (i.e. current text is `divided' into two columns). % \changes{v0.1f}{2005/06/14}{Added value for undefined \cmd{\FBB@wd} command. % (used as flag for wrapped floats.)} % \begin{macrocode} \FBiffloatrow\else \ifx\FBB@wd\relax \ifdim\hsize=\z@ % \end{macrocode} % The |\floatbox| stuff doesn't use special |\caption| definition inside \env{wrap...} % environment---|\caption| restores its behavior. % \begin{macrocode} \@ifundefined{wf@@caption}{}{\let\caption\wf@@caption}% \hsize.5\columnwidth\advance\hsize-.5\columnsep \else \edef\FBB@wd{\the\hsize}% \fi \else \hsize\FBB@wd \fi \fi \adj@dim\hsize-\FB@wadj=\@tempdima \FBifcapbeside \FCget@@wd{#1}{#3}% \else \nofilFCOhsize \FBiffloatrow\else \settowidth\@tempdimb{{\FBleftmargin}{\FBrightmargin}}% \advance\@tempdima-\@tempdimb \fi \fi \FC@ifo@fil\@tempdima\FB@wd\else\FB@wd\@tempdima\fi \adj@dim\@tempdima-\FBo@wadj=\FBo@wd % \end{macrocode} % This line is doubled below but it is necessary here in case % you use |\hsize| in any width argument in current float contents. % \changes{v0.1d}{2005/02/07}{Bug fix: Restored \cmd{\hsize} setting.} % \begin{macrocode} \FBiffloatrow\else\hsize\FBo@wd\fi % \end{macrocode} % \changes{v0.1b}{2004/10/22}{Bug fix: \cmd{\FB@wd} changed only % for beside captions.} % |\FB@wd| changed only for beside captions. % \begin{macrocode} \FBifcapbeside\hsize\FB@wd\fi % \end{macrocode} % If there are defined the width and/or height arguments in |\floatbox| % macro (re)counts width of object and caption. % \begin{macrocode} \def\reserved@a{#1}\ifx\reserved@a\empty \else\FBget@@wd{#1}{#3}\fi \hsize\FBo@wd \FBifcapbeside \FC@ifc@wd\else\advance\FBc@wd-\FB@wd\fi \else \FBc@wd\FB@wd \fi % \end{macrocode} % From this point macro counts heights of caption and object if necessary. % \begin{macrocode} \setbox0\vbox{\FR@loc@\hsize\FBo@wd \FBifcaptop \ifnum\FPOScnt=0\columnwidth\hsize\else\columnwidth\FBc@wd\fi \else \columnwidth\FBc@wd \fi #3}% \FBc@ht\ht\@floatcapt\advance\FBc@ht\dp\@floatcapt \FBo@ht\ht0\advance\FBo@ht\dp0\let\FBheight\FBo@ht \setbox2\vbox{\null\par\FB@foot\par}% \FBf@ht\ht2\advance\FBf@ht\dp2% \FBiffloatrow \ifdim\FBf@ht>\FBf@max\global\FBf@max\FBf@ht\fi \ifCADJ \FBifcaptop \ifnum\FPOScnt=1\global\advance\FBc@ht\FBf@ht\fi \else \ifnum\FPOScnt=2 \ifdim\FBf@ht>\FBf@max \global\advance\FBc@ht\FBf@ht \else \global\advance\FBc@ht\FBf@max \fi \else \global\advance\FBc@ht\FBf@ht \fi \fi \ifdim\FBc@ht>\FBc@max\global\FBc@max\FBc@ht\fi \gdef\FBcheight{\FBc@ht}\gdef\FBfheight{\FBf@ht}% \fi \fi \def\reserved@a{#2}\ifx\reserved@a\empty \FBiffloatrow\ifOADJ \ifdim\FBo@ht>\FBo@max\global\FBo@max\FBo@ht\fi \FBifcaptop \ifnum\FPOScnt=0 \ifdim\FBf@ht>\FBf@max\global\FBf@max\FBf@ht\fi \fi \fi \gdef\FBoheight{\FBo@ht}\gdef\FBfheight{\FBf@ht}% \fi\fi \else \FBget@@ht{#2}% \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\FCget@@wd} % Counts the width of caption if caption was placed beside float object. % \begin{macrocode} \newcommand\FCget@@wd[2]{\flrow@FClist \FBiffloatrow\else \settowidth\@tempdimb{{\FCleftmargin}{\FCrightmargin}}% \advance\@tempdima-\@tempdimb\advance\hsize-\@tempdimb \fi \settowidth\@tempdimb{\floatcapbesidesep}\advance\@tempdima-\@tempdimb \FC@ifo@fil\FB@wd\@tempdima\fi \FC@ifc@wd % \end{macrocode} % If |\FCwidth| was not defined (|\relax|), macro counts % natural caption width (in this case |\caption| restores plain \LaTeX's behavior). % The contents of float hidden in |\box1|. % \changes{v0.1f}{2005/06/14}{Added temporal redefinition of \cmd{\refstepcounter}.} % \begin{macrocode} \ifx\FCwidth\relax \setbox1\vbox{\FR@loc@ \let\refstepcounter\stepcounter \let\caption\FB@caption \let\@caption\FBtmp@cap #2}% \FBc@wd=\@tempdimb % \FBc@wd=\wd\@floatcapt \else \FBc@wd=\FCwidth % \end{macrocode} % The |\FCwidth| is local dimension. % \begin{macrocode} \fi\FC@ifo@fil\advance\FB@wd-\FBc@wd\fi \else \FBc@wd\@tempdima \fi \@tempdima.5\@tempdima} % \end{macrocode} % \end{macro} % % \begin{macro}{\FBget@@wd} % Counts the width of object if the width optional argument not empty. % % There is na\u\i{}ve check of existence of |\FBwidth| and/or |\FBheight| commands % in optional arguments. % I hope it could work unless you've enlarge the box by more than % 5 times of original size (in this case the absolute dimensions more preferable). % \changes{v0.1f}{2005/06/14}{The \texttt{4}\cmd{\textwidth} changed to absolute value.} % \begin{macrocode} \newcommand\FBget@@wd[2]{\@tempswafalse \begingroup \@tempdima-3000pt\let\FBwidth\@tempdima \setlength\dimen@{#1}\ifdim\dimen@<\z@\global\@tempswatrue\fi \endgroup \if@tempswa \setbox0\hbox{\FR@loc@#2}\FBo@wd\wd0% \let\FBwidth\FBo@wd \setlength\FBo@wd{#1}% \advance\FBo@wd\leftskip\advance\FBo@wd\rightskip % \end{macrocode} % The width |\FB@wd| localized. % \changes{v0.1b}{2004/10/22}{Bug fix: \cmd{\FB@wd} localized.} % \begin{macrocode} \adj@dim\FBo@wd+\FBo@wadj=\FB@wd % \end{macrocode} % Throw out floatfoot and float footnote contents (if exist). % \begin{macrocode} \setbox\flrow@foot\box\voidb@x \setbox\@mpfootins\box\voidb@x \else \setlength\FB@wd{#1}% % \end{macrocode} % The width |\FB@wd| localized. % \changes{v0.1b}{2004/10/22}{Bug fix: \cmd{\FB@wd} localized.} % \begin{macrocode} \adj@dim\FB@wd-\FB@wadj=\FB@wd \adj@dim\FB@wd-\FBo@wadj=\FBo@wd \let\FBwidth\FBo@wd \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\FBget@@ht} % Counts the height of object if the height optional argument not empty. % \changes{v0.1f}{2005/06/14}{The \texttt{4}\cmd{\textheight} changed to absolute value.} % \begin{macrocode} \newcommand\FBget@@ht[1]{\@tempswafalse \begingroup \@tempdimb-3000pt\let\FBheight\@tempdimb \setlength\dimen@{#1}\ifdim\dimen@<\z@ \global\@tempswatrue\fi \endgroup \setlength\FBo@ht{#1}% \if@tempswa \adj@dim\FBo@ht+\FBo@hadj=\FBo@ht \FBifcaptop\ifnum\FPOScnt=0\advance\FBo@ht\FBf@ht\fi\fi \else \adj@dim\FBo@ht-\FBo@hadj=\FBo@ht \adj@dim\FBo@ht-\FB@hadj=\FBo@ht \setbox0\vbox{\offinterlineskip\vbox{\@@FBabove}% \FBifcapbeside\else\@@FBskip\hrule\@height\z@\@depth\z@\fi \vtop{\@@FBbelow}}% \global\advance\FBo@ht-\ht0\global\advance\FBo@ht-\dp0% \FBifcapbeside\else\FBget@@@ht\fi \FBiffloatrow\ifOADJ \ifdim\FBo@ht>\FBo@max\global\FBo@max\FBo@ht\fi % \ifdim\FBf@ht>\FBf@max\global\FBf@max\FBf@ht\fi % \FBifcaptop\ifnum\FPOScnt=0\advance\FBo@ht\FBf@ht\fi\fi \fi\fi \fi \def\FBoheight{\FBo@ht}} % \end{macrocode} % \end{macro} % % \begin{macro}{\FBget@@@ht} % If there was set the height of float box this macro % counts height of additional vertical material (except of space % created by frames) in object---caption box plus height of % caption box. The result is used to get correct height of object box. % \begin{macrocode} \newcommand\FBget@@@ht{% % \end{macrocode} % The |\box0| settings moved up in |\FBget@@ht| macro. % \begin{macrocode} % \global\advance\FBo@ht-\ht0\global\advance\FBo@ht-\dp0% \ifdim\FBc@ht>\FBc@max \global\advance\FBo@ht-\FBc@ht \else \global\advance\FBo@ht-\FBc@max \fi \FBifcaptop\ifnum\FPOScnt=1\else \ifdim\FBf@ht>\FBf@max \global\advance\FBo@ht-\FBf@ht \else \global\advance\FBo@ht-\FBf@max \fi \fi\fi } % \end{macrocode} % \end{macro} % % \subsubsection{Storing Heights for Current Float Box} % % \begin{macro}{\FB@writeaux} % \begin{macro}{\FB@readaux} % Excerpt from \LaTeX's |\protected@write|. This command is used for printing % in \texttt{.aux}-file the necessary settings which will work in next % \LaTeX{} run. % \begin{macrocode} \newcommand\FB@writeaux[1]{% \begingroup \let\thepage\relax\let\protect\@unexpandable@protect \edef\reserved@a{\write\@auxout{\string\gdef \expandafter\string\csname @@FBset@\romannumeral \the\c@FBl@b\endcsname{#1}}}\reserved@a \endgroup \addtocounter{FBl@b}{1}} \newcommand\FB@readaux[1]{% \@ifundefined{@@FBset@\romannumeral\the\c@FBl@b}% {#1}{\@nameuse{@@FBset@\romannumeral\the\c@FBl@b}}} % \end{macrocode} % % \begin{macro}{\c@FBl@b} % This counter helps to define unique % command for each float row environment or object---caption % beside box if necessary. % \begin{macrocode} \newcounter{FBl@b} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \subsubsection{Building Caption and Object Boxes}\label{putFB} % % \begin{macro}{\FC@ifFBOX} % \begin{macro}{\FBs@raise} % \begin{macro}{\FBf@raise} % \begin{macro}{\FCset@vpos} % The |\FC@ifFBOX| flag if true aligns top or bottom % of object's frame with top or bottom of beside caption if fancy layout used. % \begin{macrocode} \let\FC@ifFBOX\iffalse \newcommand\FBs@raise{\raisebox{-\totalheight}} \newcommand\FBf@raise{} % \end{macrocode} % Setting of vertical position for beside caption and object. % Here is used \LaTeX's |\@parboxto| command, because of here is used % analogous mechanism of box building as in |\parbox| command and \env{minipage} % environment. % \begin{macrocode} \newcommand\FCset@vpos{\@FC@vpos \ifcase\count@ \gdef\FC@bbox{$\vcenter\@parboxto\bgroup\vskip\z@}% \gdef\FC@ebox{\vskip\z@\egroup$}% \gdef\FBf@raise{}% \gdef\FBs@raise{\raisebox{-.5\totalheight}}% \or\gdef\FC@bbox{\vtop\@parboxto\bgroup\vskip\z@}% \gdef\FC@ebox{\vskip\z@\egroup}% \FC@ifFBOX\gdef\FBf@raise{\raisebox{-\height}}% \else\gdef\FBf@raise{}\fi \gdef\FBs@raise{\raisebox{-\totalheight}}% \or\gdef\FC@bbox{\vbox\@parboxto\bgroup}\gdef\FC@ebox{\vskip\z@\egroup}% \FC@ifFBOX\gdef\FBf@raise{\raisebox{\depth}}% \else\gdef\FBf@raise{}\fi \gdef\FBs@raise{}\fi} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\adj@dim} % Dimension defines box widths and heights in special styles. % \begin{macrocode} \@ifdefinable\adj@dim{} \def\adj@dim#1#2#3=#4{\dimen@\z@#3\ifdim\dimen@=\z@#4#1\else \adj@@dim#1#2#3{#4}\fi} \newcommand\adj@@dim[4]{\@tempdima#1\advance\@tempdima#2\dimen@ #4=\@tempdima} % \end{macrocode} % \end{macro} % % \subsubsection{Caption---Object Box Building Macro} % % \begin{macro}{\floatbox} % The start of main macro of object---caption box building. % % The preparation of optional arguments. % \begin{macrocode} \newcommand\floatbox[2][]{\begingroup #1\def\@captype{#2}% \@ifnextchar[{\@floatbox}{\@floatbox[]}} \@ifdefinable\@floatbox{}\@ifdefinable\@@floatbox{} \def\@floatbox[#1]{% \@ifnextchar[{\@@floatbox[#1]}{\@@floatbox[#1][]}} \def\@@floatbox[#1][#2]{% \@ifnextchar[{\@@@floatbox[#1][#2]}{\@@@floatbox[#1][#2][]}}%] % \end{macrocode} % % \begin{macro}{\@@@floatbox} % Building object---caption box. % \begin{macrocode} \@ifdefinable\@@@floatbox{} \long\def\@@@floatbox[#1][#2][#3]#4#5{% \@FB@vpos{#3}% % \end{macrocode} % If object---caption stays alone here go % special style settings for current float type. % Then go the settings for caption layout. % \changes{v0.1f}{2005/06/14}{Added local redefining of \cmd{\@makecaption} and % \cmd{\@floatboxreset} (if outside float env).} % \changes{v0.1f}{2005/06/14}{The \cmd{\flrow@settype} changed to \cmd{\flrow@setlist} % (loads also caption settings).} % \changes{v0.1f}{2005/06/14}{The \cmd{\capstart} stuff loaded here.} % \begin{macrocode} \if@@FS\else\FR@redefs \flrow@setlist{{\@captype}}\FRifFBOX\@@setframe\fi\@@FStrue \fi % \end{macrocode} % Then load settings for beside captions, in the case we use this layout---^^A % the beside caption could use a bit different layout. % \begin{macrocode} \FBifcapbeside\flrow@FClist\fi \flrow@settype{tmpset}\global\let\flrow@typ@tmpset\undefined % \end{macrocode} % Restoring standard justified paragraph settings${{}+{}}$|\parindent\z@|. % \begin{macrocode} \@parboxrestore\floatobjectset\floatfont % \end{macrocode} % Here is called macro which counts widths and heights of caption % and object. Before it starts group to localize |\hsize| settings. % \changes{v0.1b}{2004/10/22}{Bug fix: grouping restored\ldots} % \changes{v0.1d}{2005/02/07}{\ldots for all cases.} % \changes{v0.1e}{2005/03/22}{The \cmd{\begingroup} moved up at the beginning of \cmd{\floatbox} % macro.} % \begin{macrocode} \FBget@box{#1}{#2}{#4#5}% % \end{macrocode} % In this point defined macros for building of beside object---caption box. % \changes{v0.1f}{2005/06/14}{The \cmd{\capstart} added as a)~\cmd{\FR@floatbox} arg % (outside float row).} % \begin{macrocode} \FBifcapbeside\FCset@vpos\fi \FBiffloatrow\FR@floatbox{\@ifundefined{capstart}{}{\capstart}#4#5}\else % \end{macrocode} % The restoring of full |\hsize| of current float box. % For the case of counting of float width inside \env{wrap...} environment % here defined the |\FBB@wd| macro. % \changes{v0.1d}{2005/02/07}{Added flag for float box layout building} % \changes{v0.1d}{2005/02/07}{\cmd{\float@makebox} macro changed to its contents} % \changes{v0.1f}{2005/06/14}{If \cmd{\FBB@wd} still \cmd{\relax}, it defined here.} % \changes{v0.1f}{2005/06/14}{The \cmd{\capstart} added as b)~\cmd{\FBsetbox@obj} arg % (in float row).} % \begin{macrocode} \adj@dim\FB@wd+\FB@wadj=\hsize \ifx\FBB@wd\relax\edef\FBB@wd{\the\hsize}\fi \FBsetbox@obj{\@ifundefined{capstart}{}{\capstart}#4#5}\FBbuildtrue \FBifcapbeside\flrow@FC\FBB@wd\else\flrow@FB\FBB@wd\fi \global\FBbuildfalse % \global\FB@wd\hsize \fi % \end{macrocode} % \changes{v0.1b}{2004/10/22}{Bug fix: grouping restored\ldots} % \changes{v0.1d}{2005/02/07}{\ldots for all cases.} % End of the group. % \begin{macrocode} \endgroup\ignorespaces} % \end{macrocode} % % Code for recounting parameters and building boxes inside |floatrow| % environment. % \begin{macrocode} \newcommand\FR@floatbox[1]{\@tempswafalse % \end{macrocode} % For beside floats in special layouts of float (e.g. \texttt{boxed} % or \texttt{ruled}) there is necessary the definition of maximum heights % of captions and objects to align boxes or rules. Here goes command % which loads the result of max dimensions from previous run. % \begin{macrocode} \ifOADJ\@tempswatrue\fi\ifCADJ\@tempswatrue\fi \if@tempswa\@ifundefined{FB@@boxmax}{}{\FB@@boxmax}\fi % \end{macrocode} % Here we create boxes of float contents. % \begin{macrocode} \FBsetbox@obj{#1}\begin@FBBOX \FBifcapbeside\flrow@FC@\else\flrow@FB@\fi \end@FBBOX % \end{macrocode} % The each float box in float row reduces special counter \texttt{FRobj} by 1. % \begin{macrocode} \addtocounter{FRobj}{-1}% \@tempswafalse\FBiffacing\@tempswatrue\fi \ifCADJ\@tempswatrue\fi\ifOADJ\@tempswatrue\fi % \end{macrocode} % At end of row it equals zero. % \begin{macrocode} \ifnum\c@FRobj=0% % \end{macrocode} % Here goes macro which prints in \file{.aux}-file the final % countdown of maximum caption and object heights if necessary. % \changes{v0.1d}{2005/02/07}{Added flag for float box layout building} % \begin{macrocode} \if@tempswa \FB@writeaux{\string\c@FBcnt\thepage \string\def\string\FB@@boxmax{% \ifOADJ\string\FBo@ht\the\FBo@max \string\FBf@ht\the\FBf@max\fi \ifCADJ\string\FBc@ht\the\FBc@max\fi}}\fi \global\FBbuildfalse \else % \end{macrocode} % Between floats in float row macro puts separation material. % \begin{macrocode} \advance\Xhsize-\FB@wd \FBifcapbeside\advance\Xhsize-\FBc@wd \settowidth\@tempdimb{\floatcapbesidesep}% \advance\Xhsize-\@tempdimb\fi \floatrowsep \adj@dim\Xhsize-\FB@wadj={\global\Xhsize}% \fi} % \end{macrocode} % The macro for storing float object in box in the same way as % in plain environment. There is added code for possible usage of \pkg{color} package % and color boxes. % \begin{macrocode} \newcommand\FBsetbox@obj[1]{% \setbox\float@box\color@vbox\normalcolor \FBifcaptop \FB@vtop\FBo@wd\FBoheight\bgroup\FBafil\floatobjectset\floatfont \ifnum\FPOScnt=0\columnwidth\FBo@wd\else\columnwidth\FBc@wd\fi \else \FB@vbox\FBo@wd\FBoheight\bgroup\FBafil\floatobjectset\floatfont \columnwidth\FBc@wd \fi #1\FBbfil\egroup\color@endbox \let\@currbox\float@box} % \end{macrocode} % \end{macro} % \end{macro} % % \subsection{Building Float Row} % % \subsubsection{The Flag, Counter and Dimension for Float Row Environment} % % \begin{macro}{\FBiffloatrow} % Switch used in |\floatbox| to define whether it placed inside of % environment of beside floats (float row) or not. % \begin{macrocode} \let\FBiffloatrow\iffalse % \end{macrocode} % \end{macro} % % \begin{macro}{\c@FRobj} % Counter of objects i a row, which helps to put correct spaces between float boxes % and also to define the rest width (|\Xhsize|) for boxes. % \begin{macrocode} \newcounter{FRobj} % \end{macrocode} % \end{macro} % % \begin{macro}{\Xhsize} % This dimension is used for defining of the rest width which float box % can occupy in current float row environment. % \begin{macrocode} \newlength\Xhsize % \end{macrocode} % \end{macro} % % \subsubsection{Float Row Environment} % % \begin{environment}{floatrow} % \label{floatrow} % Environment for placing beside floats (of one type). % First go counter of floats in row, then the settings for float layout. % \changes{v0.1d}{2005/02/07}{Added vertical skips (\cmd{\FBaskip}, \cmd{\FBbskip}) % for layout fine tuning} % \begin{macrocode} \newcommand\floatrow[1][2]{\setcounter{FRobj}{#1}\FB@facing \@tempswafalse\FBiffacing\@tempswatrue\fi \ifCADJ\@tempswatrue\fi\ifOADJ\@tempswatrue\fi \if@tempswa\FB@readaux{\relax}\fi \vbox\bgroup\vskip\FBaskip\hsize\FBB@wd\@@FRabove \hb@xt@\hsize\bgroup\let\FBiffloatrow\iftrue\FRleftmargin\begingroup % \end{macrocode} % Here starts trick with redefinition of |\hsize| inside float row. % The |\hsize| will be equal to one ``column'' (the number of % ``columns''-floats gives optional argument---the default is \texttt{2}). % \begin{macrocode} \Xhsize\hsize\count@#1\advance\count@-1% \settowidth\@tempdima{{\FRleftmargin}{\FRrightmargin}}% \advance\Xhsize-\@tempdima \settowidth\@tempdima{\floatrowsep}% \advance\Xhsize-\count@\@tempdima \@tempdimb\Xhsize\divide\@tempdimb#1% % \end{macrocode} % Here goes recounted |\hsize|. % \begin{macrocode} \FB@wd\@tempdimb\hsize\@tempdimb\ignorespaces} % \end{macrocode} % Macro for float row end. % \begin{macrocode} \def\endfloatrow{\ifdim\lastskip>\z@\unskip\fi \endgroup\FRrightmargin\egroup%h box \global\let\FBiffloatrow\iffalse\@@FRbelow \vskip\FBbskip\gdef\FBaskip{\z@}\gdef\FBbskip{\z@}\egroup%v box \global\FBf@max\z@\global\FBo@max\z@\global\FBc@max\z@ \gdef\begin@FBBOX{\vbox\bgroup}\gdef\end@FBBOX{\egroup}} % \end{macrocode} % \end{environment} % % \subsection{Aligning Float Boxes} % % \begin{macro}{\CenterFloatBoxes} % \begin{macro}{\TopFloatBoxes} % \begin{macro}{\BottomFloatBoxes} % \begin{macro}{\PlainFloatBoxes} % Aligning float boxes. % Firstly defined plain macros for float boxes. % \begin{macrocode} \newcommand\begin@FBBOX{\vbox\bgroup} \def\end@FBBOX{\egroup} % \end{macrocode} % Here these boxes are redefined to align floats in desired way. % First definition for centered. % \begin{macrocode} \newcommand\CenterFloatBoxes{\CADJfalse\OADJfalse \buildFBBOX{\hbox\bgroup$\vcenter\bgroup\vskip\z@}% {\vskip\z@\egroup$\egroup}} % \end{macrocode} % Definition for topped. % \begin{macrocode} \newcommand\TopFloatBoxes{\CADJfalse\OADJfalse \buildFBBOX{\vtop\bgroup\vskip\z@}{\egroup}} % \end{macrocode} % Definition for aligned bottom. % \begin{macrocode} \newcommand\BottomFloatBoxes{\CADJfalse\OADJfalse \buildFBBOX{\vbox\bgroup}{\vskip\z@\egroup}} % \end{macrocode} % Restoring of plain behavior of boxes in \env{floatrow}. % \changes{v0.1e}{2005/03/22}{Added \cmd{\PlainFloatBoxes} for restoring plain % behavior of boxes.} % \begin{macrocode} \newcommand\PlainFloatBoxes{% \gdef\begin@FBBOX{\vbox\bgroup}\gdef\end@FBBOX{\egroup}} % \end{macrocode} % Macro which defines |\begin@FBBOX| and |\end@FBBOX|. % \begin{macrocode} \newcommand\buildFBBOX[2]{\gdef\begin@FBBOX{#1}\gdef\end@FBBOX{#2}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macrocode} % % \end{macrocode} % % \begin{macrocode} %<*floatsetup> % \end{macrocode} % % \subsection{Float settings stuff} % % \subsubsection{Definitions analogous to \pkg{caption}'s ones} % % The next bundle of definitions follow \pkg{caption} package macros to organize % analogous mechanism of settings. % % \changes{v0.1f}{2005/06/14}{The macro \cmd{\flrow@ifinlist} deleted---it doubles % \cmd{\caption@ifinlist} work.} % % \begin{macro}{\flrow@setbool} % Macro analogous to |\caption@setbool|. % \begin{macrocode} \newcommand\flrow@setbool[2]{% \caption@ifinlist{#2}{1,true,yes,on}{\let#1\iftrue }{\caption@ifinlist{#2}{0,false,no,off}{\let#1\iffalse }{\PackageError{floatrow}{Undefined boolean value `#2'}{\flrow@eh}% }}} % \end{macrocode} % \end{macro} % % \changes{v0.1f}{2005/06/14}{The macro \cmd{\l@addto@macro} deleted---it repeats % \pkg{caption} package's definition.} % % \subsubsection{Defining Stuff for Float Layout Settings} % % \begin{macro}{\floatsetup} % This macro analogous to |\captionsetup|. % \begin{macrocode} \def\floatsetup{\@ifnextchar[\flrow@setuptype\flrow@setup} \def\flrow@setuptype[#1]#2{% \@ifundefined{flrow@typ@#1}{\@namedef{flrow@typ@#1}{#2}}% {\expandafter\l@addto@macro\csname flrow@typ@#1\endcsname{,#2}}} % \end{macrocode} % Setup for only following float. % \begin{macrocode} \newcommand\thisfloatsetup{\floatsetup[tmpset]} % \end{macrocode} % \end{macro} % % \begin{macro}{\flrow@setup} % \begin{macro}{\flrow@esetup} % \begin{macro}{\flrow@settype} % Macros analogous to |\caption@setup|, |\caption@esetup| and |\caption@settype|. % \begin{macrocode} \def\flrow@setup{\setkeys{floatrow}} \def\flrow@esetup#1{% \edef\FR@tmp{\noexpand\flrow@setup{#1}}\FR@tmp} \def\flrow@settype#1{\@ifundefined{flrow@typ@#1}{}% {\flrow@esetup{\csname flrow@typ@#1\endcsname}}}% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\flrow@setlist} % \begin{macro}{\flrow@FClist} % This macro declares list of float settings (like \texttt{widefloat}, {rotfloat} etc.) % \changes{v0.1f}{2005/06/14}{Added \cmd{\flrow@capsetup} (AS).} % \changes{v0.1f}{2005/06/14}{The \cmd{\caption@setposition} settings % moved here (AS).} % \begin{macrocode} \newcommand\flrow@setlist[1]{\@flrow@setlist#1;% \FR@ifCST\flrow@capsetup\fi\@cap@setlist#1;% \caption@setposition{\FBifcaptop t\else b\fi}} \newcommand\@flrow@setlist[1]{\flrow@settype{#1}\@ifnextchar;\@gobble \@flrow@setlist} % \end{macrocode} % \changes{v0.1f}{2005/06/14}{The \cmd{\@cap@setlist} redefined (AS).} % The code of \@cap@setlist|| co-operated with \pkg{caption} package % (code suggestions of Axel Sommerfeldt). % \begin{macrocode} \newcommand\@cap@setlist[1]{\caption@settype{#1}% \@ifnextchar;{\let\caption@setfloattype\@gobble\@gobble}\@cap@setlist} % \end{macrocode} % This macro adds list of possible settings for beside captions. % \begin{macrocode} \newcommand\flrow@FClist{\flrow@setlist {{floatbeside}{capbesidefloat}{\@captype beside}{capbeside\@captype}}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@nameundef} % \begin{macro}{\clearfloatsetup} % \changes{v0.1f}{2005/06/14}{The macro \cmd{\@nameundef} deleted---it repeats % \pkg{caption} package's definition.} % Removes all settings for chosen type of float. % \begin{macrocode} \newcommand*\clearfloatsetup[1]{\@nameundef{flrow@typ@#1}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\flrow@eh} % The |\caption@eh|-analog. % \begin{macrocode} \newcommand\flrow@eh{% If you do not understand this error, please take look\MessageBreak at `floatrow' and `caption' package documentations.\MessageBreak \@ehc} % \end{macrocode} % \end{macro} % % \begin{macro}{\DeclareFROpt} % The |\DeclareCaptionOption|-analog.\\ % Since this command has internal usage (before end of package) it has abbreviation-like name. % \begin{macrocode} \newcommand\DeclareFROpt{% \@ifstar{\flrow@declopt\AtEndOfPackage} {\flrow@declopt\@gobble}} \newcommand*\flrow@declopt[2]{% #1{\undefine@key{floatrow}{#2}}\define@key{floatrow}{#2}} % \end{macrocode} % These macros allowed only in preamble. % \begin{macrocode} \@onlypreamble\DeclareFROpt \@onlypreamble\flrow@declopt % \end{macrocode} % (The default settings. Commented). % \begin{macrocode} %\DeclareFROpt{default}[]{% % \flrow@setup{% % style=plain,capposition=bottom, % margins=centering,objectset=centering, % font=default,footfont=default, % }} % \end{macrocode} % \end{macro} % % \subsubsection{Declaring of float styles} % % \begin{macro}{\DeclareFloatStyle} % Declares float style using |\floatsetup| mechanism. % \begin{macrocode} \newcommand*\DeclareFloatStyle[2]{% \global\@namedef{flrow@sty@#1}{#2}} % \end{macrocode} % This macro is allowed only in preamble. % \begin{macrocode} \@onlypreamble\DeclareFloatStyle % \end{macrocode} % The definition of command which defines settings for new float style. % \changes{v0.1f}{2005/06/14}{Added \cmd{\caption@settype} in definition % of \cmd{\flrow@capsetup} (AS).} % \begin{macrocode} \newcommand*\flrow@setstyle[1]{% \@ifundefined{flrow@sty@#1}% {\PackageError{floatrow}{Undefined float style `#1'}{\flrow@eh}}% {\FBstyle@reset \def\flrow@capsetup{% \@ifundefined{caption@sty@#1}{}{\caption@setstyle{#1}}% \caption@settype {#1}}% \flrow@esetup{\csname flrow@sty@#1\endcsname}}} % \end{macrocode} % Declarations of \pkg{float} package's emulating styles and new \pkg{floatrow} styles. % \changes{v0.1f}{2005/06/14}{The bottom caption position moved in \cmd{\FBstyle@reset} % as default.} % \begin{macrocode} \DeclareFloatStyle{plain}{} \DeclareFloatStyle{plaintop}{capposition=top} \DeclareFloatStyle{boxed}{captionskip=2pt, framestyle=fbox,heightadjust=object,framearound=object} \DeclareFloatStyle{ruled}{precode=thickrule,midcode=rule,postcode=lowrule, capposition=top,heightadjust=all} \DeclareFloatStyle{Ruled}{style=ruled,capposition=TOP} \DeclareFloatStyle{Plaintop}{capposition=TOP} \DeclareFloatStyle{Boxed}{style=boxed,framefit=yes} \DeclareFloatStyle{BOXED}{framestyle=fbox, framefit=yes,heightadjust=all,framearound=all} % \end{macrocode} % % \begin{macro}{style=} % Declaring of key for float styles. % \begin{macrocode} \DeclareFROpt{style}{\flrow@setstyle{#1}} % \end{macrocode} % \end{macro} % % The flag, which loads related caption style (if exists), to chosen float style. % The \pkg{caption} 3.0 package defines only one related caption style to \pkg{float} package's % style---\texttt{ruled}. % \begin{macrocode} \let\FR@ifCST\iftrue % \end{macrocode} % \end{macro} % \begin{macro}{relatedcapstyle=} % The boolean key which defines, whether to use caption style, related to chosen float style. % \begin{macrocode} \DeclareFROpt{relatedcapstyle}[0]{\flrow@setbool{\FR@ifCST}{#1}} % \end{macrocode} % \end{macro} % % \subsubsection{Defining Font} % % \begin{macro}{font=} % \begin{macro}{footfont=} % Fonts for object and |\floatfoot| contents. The settings of font for % |\floatfoot| use |\captionsetup| mechanism, so its name follows % \pkg{caption} package's rules (|\captionfootfont|). % \changes{v0.1f}{2005/06/14}{Removed \texttt{footfont} key.} % \changes{v0.1f}{2005/06/14}{Removed \cmd{\AtBeginDocument}'s check---the \cmd{\captionsetup} % is always known.} % \begin{macrocode} \DeclareFROpt{font}{\flrow@setfont{font}{#1}} \DeclareFROpt{footfont}{\captionsetup[floatfoot]{font={#1}}} \DeclareCaptionOption{footfont}{\caption@setfont{footfont}{#1}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\floatfont} % This command sets the font for float objects (|\floatfont|) % it could be smaller than caption text. % \begin{macrocode} \newcommand*\floatfont{} % \end{macrocode} % \end{macro} % % \begin{macro}{\captionfootfont} % Font for |\legend|-like command |\floatfoot|. This font is used inside macro % which uses \pkg{caption} package mechanism, so the name of this font % follows rules of font naming in \pkg{caption} package. % \begin{macrocode} \newcommand*\captionfootfont{\normalfont\footnotesize} % \end{macrocode} % \end{macro} % % \begin{macro}{\DeclareFloatFont} % The |\DeclareCaptionFont|-twin.\\ % It's usage:\\ % |\DeclareFloatFont{|\meta{name}|}{|\meta{code}|}|. % This macro is allowed only in preamble. % \changes{v0.1f}{2005/06/14}{The code of \cmd{\DeclareFloatFont} uses caption's key-val settings.} % \begin{macrocode} \let\DeclareFloatFont\DeclareCaptionFont \@onlypreamble\DeclareFloatFont % \end{macrocode} % \end{macro} % % \begin{macro}{\flrow@setfont} % The |\caption@setfont|-analog.\\ % It's usage:\\ % |\flrow@setfont{|\meta{command}|}{|\meta{keyval-list of names}|}|. % \changes{v0.1f}{2005/06/14}{The code of \cmd{\flrow@setfont} uses caption's key-val settings.} % \begin{macrocode} \newcommand*\flrow@setfont[2]{% \let\caption@tempa\@empty \begingroup\setkeys{caption@fnt}{#2}\endgroup \expandafter\let\csname float#1\endcsname\caption@tempa} % \end{macrocode} % \end{macro} % \changes{v0.1f}{2005/06/14}{\cmd{\DeclareFloatFont} bundle removed---\pkg{floatrow} package % uses \file{caption3} settings.} % % \subsubsection{Declaring of Caption Position} % % \begin{macro}{capposition=} % Keys for defining caption position in float box. % \changes{v0.1f}{2005/06/14}{Added \texttt{position=} key as analog name to % the same key in \cmd{\captionsetup} stuff.} % \begin{macrocode} \DeclareFROpt{capposition}{\flrow@cappos{#1}} \DeclareFROpt{position}{\flrow@cappos{#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\flrow@cappos} % Macro analogous to |\caption@setposition|. Instead of |auto| here is used % |beside| set. Here are also settings for key |position=| from |\captionsetup|. % \begin{macrocode} \newcommand*\flrow@cappos[1]{% \caption@ifinlist{#1}{t,top,above}{\captop\nocapbeside }{\caption@ifinlist{#1}{T,TOP,ABOVE}{\CAPTOP\nocapbeside }{\caption@ifinlist{#1}{b,bottom,below,default}{\capbot\nocapbeside }{\caption@ifinlist{#1}{beside,side}{\caption@setposition{a}\capbeside }{\PackageError{floatrow}{Undefined caption position `#1'}{\flrow@eh}% }}}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\FBifcaptop} % \begin{macro}{\captop} % \begin{macro}{\capbot} % The positions for captions in float box. % There are defined traditional place of captions at the bottom of % object---caption box. % \changes{v0.1f}{2005/06/14}{\cmd{\caption@position} deleted.} % \begin{macrocode} \let\FBifcaptop\iffalse \newcommand\captop{\let\FBifcaptop\iftrue} \newcommand\capbot{\let\FBifcaptop\iffalse} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\FBifCAPTOP} % \begin{macro}{\CAPTOP} % Someone, using beside float boxes (see~\ref{floatrow}), % would prefer the captions, which placed at the top % of these boxes to align them by top line (the default % alignment is the bottom line of upper box and the top line of % lower box). % \begin{macrocode} \let\FBifCAPTOP\iffalse \newcommand\CAPTOP{\captop\let\FBifCAPTOP\iftrue\CADJtrue} % \end{macrocode} % In this case if you change contents of caption which could enlarge or % reduce the number of lines, you ought to run \LaTeX{} twice. % \end{macro} % \end{macro} % % \begin{macro}{\FBifcapbeside} % \begin{macro}{\capbeside} % \begin{macro}{\nocapbeside} % There is flag and commands for printing caption and object beside. % \begin{macrocode} \let\FBifcapbeside\iffalse \newcommand\capbeside{\global\let\FBifcapbeside\iftrue} \newcommand\nocapbeside{\global\let\FBifcapbeside\iffalse} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \subsubsection{Defining for Beside Captions} % % \begin{macro}{capbesideframe=} % This boolean key declares whether near beside caption stays framed object. % \changes{v0.1f}{2005/06/14}{Removed \texttt{besidecapframe} key.} % \begin{macrocode} \DeclareFROpt{capbesideframe}[0]{\flrow@setbool{\FC@ifFBOX}{#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{capbesidewidth=} % This key defines width of beside caption. % \changes{v0.1f}{2005/06/14}{Removed \texttt{besidecapwidth} key.} % \changes{v0.1f}{2005/06/14}{Bug fix: the \cmd{\FCwidth} command defined here as \cmd{\relax}.} % \begin{macrocode} \DeclareFROpt{capbesidewidth}[1]{\flrow@FCc@wd{#1}} \let\FC@ifc@wd\iffalse \newcommand\useFCwidth{\let\FC@ifc@wd\iftrue\let\FCwidth\relax} \@ifdefinable\FCwidth{\let\FCwidth\relax} \newcommand\flrow@FCc@wd[1]{% \caption@ifinlist{#1}{none,sidefill}{\let\FC@ifc@wd\iffalse }{\useFCwidth\def\FCwidth{#1}}} % \end{macrocode} % \end{macro} % % \begin{macro}{capbesideposition=} % Declares position of beside caption in document. % \changes{v0.1f}{2005/06/14}{Removed \texttt{besidecapposition} key.} % \begin{macrocode} \DeclareFROpt{capbesideposition}{\flrow@scpos{#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\DeclareSCPos} % \begin{macro}{\flrow@scpos} % The key which defines position of beside captions: vertical and horizontal. % This macro is allowed only in preamble. This key is internal (usage till end of package) % so it has abbreviation-like name. % \begin{macrocode} \newcommand\DeclareSCPos[2]{% \define@key{flrow@scpos}{#1}[]{\g@addto@macro\FR@tmp{#2}}} \newcommand*\flrow@scpos[1]{% \let\FR@tmp\@empty \begingroup\setkeys{flrow@scpos}{#1}\endgroup \FR@tmp} \@onlypreamble\DeclareSCPos % \end{macrocode} % Declaring options. % \begin{macrocode} \DeclareSCPos{left}{\def\@FC@hpos{\let\FBiffacing\iffalse\count@\@ne}} \DeclareSCPos{right}{\def\@FC@hpos{\let\FBiffacing\iffalse\count@\z@}} \DeclareSCPos{inside}{\def\@FC@hpos{\let\FBiffacing\iftrue \count@\c@FBcnt}} \DeclareSCPos{outside}{\def\@FC@hpos{\let\FBiffacing\iftrue \count@\c@FBcnt\advance\count@\@ne}} \DeclareSCPos{center}{\def\@FC@vpos{\count@\z@}} \DeclareSCPos{top}{\def\@FC@vpos{\count@\@ne}} \DeclareSCPos{bottom}{\def\@FC@vpos{\count@\tw@}} % \end{macrocode} % Command for |capbesideposition=bottom| % \begin{macrocode} \newcommand*\@FC@vpos{\count@\tw@} % \end{macrocode} % Command for |capbesideposition=inside| % \begin{macrocode} \newcommand*\@FC@hpos{\let\FBiffacing\iftrue\count@\c@FBcnt} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\c@FBcnt} % Count used as flag for facing layouts. % \begin{macrocode} \newcounter{FBcnt} % \end{macrocode} % \end{macro} % % \begin{macro}{footposition=} % Keys for defining foot text position. % \begin{macrocode} \DeclareFROpt{footposition}{\flrow@ftpos{#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\DeclareFtPos} % \begin{macro}{\flrow@ftpos} % Settings for positions of float foot material (footnotes and foot text). % This macro is allowed only in preamble. % \begin{macrocode} \newcommand\DeclareFtPos[2]{% \define@key{flrow@ftpos}{#1}[]{\g@addto@macro\FR@tmp{#2}}} \newcommand*\flrow@ftpos[1]{% \let\FR@tmp\@empty \begingroup\setkeys{flrow@ftpos}{#1}\endgroup \FR@tmp} \@onlypreamble\DeclareFtPos % \end{macrocode} % Declaring options. % \begin{macrocode} \@ifdefinable\FPOScnt{\newcount\FPOScnt} \DeclareFtPos{caption}{\FPOScnt1\relax} \DeclareFtPos{bottom}{\FPOScnt2\relax} \DeclareFtPos{default}{\FPOScnt0\relax} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{heightadjust=} % Keys for vertical adjustment and alignment. % \begin{macrocode} \DeclareFROpt{heightadjust}{\flrow@htadj{#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\DeclareHtAdj} % \begin{macro}{\flrow@htadj} % This key defines adjustment of heights of objects or/and captions % in float row. % This macro is allowed only in preamble. % \begin{macrocode} \newcommand\DeclareHtAdj[2]{% \define@key{flrow@htadj}{#1}[]{\g@addto@macro\FR@tmp{#2}}} \newcommand*\flrow@htadj[1]{\let\FR@tmp\@empty \begingroup\setkeys{flrow@htadj}{#1}\endgroup \FR@tmp} \@onlypreamble\DeclareHtAdj % \end{macrocode} % Declaring options. % \begin{macrocode} \DeclareHtAdj{all}{\CADJtrue\OADJtrue} \DeclareHtAdj{caption}{\CADJtrue} \DeclareHtAdj{object}{\OADJtrue} \DeclareHtAdj{none}{\CADJfalse\OADJfalse} \DeclareHtAdj{nocaption}{\CADJfalse} \DeclareHtAdj{noobject}{\OADJfalse} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\ifCADJ} % \begin{macro}{\ifOADJ} % These flags define whether common height is used of captions or/and objects in float row. % \begin{macrocode} \newif\ifCADJ \newif\ifOADJ % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{valign=} % Keys for vertical alignment. % \begin{macrocode} \DeclareFROpt{valign}{\@FB@vpos{#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\@FB@vpos} % The vertical alignment of float objects in float row. % \begin{macrocode} \newcommand\@FB@vpos[1]{% \if#1t\def\FBafil{}\def\FBbfil{\vfill}\else \if#1b\def\FBafil{\vfill}\def\FBbfil{}\else \if#1c\def\FBafil{\vfill}\def\FBbfil{\vfill}\else \if#1s\def\FBafil{}\def\FBbfil{}% \fi\fi\fi\fi} % \end{macrocode} % \end{macro} % % \subsubsection{Facing Pages} % % \begin{macro}{facing=} % Defines, if necessary, flag for facing pages. % \begin{macrocode} \DeclareFROpt{facing}[1]{\flrow@setbool{\FBiffacing}{#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\FBiffacing} % \begin{macro}{\FB@facing} % Flag and command for \texttt{facing=}. % \begin{macrocode} \let\FBiffacing\iffalse \newcommand\FB@facing{} % \end{macrocode} % \end{macro} % \end{macro} % % \subsubsection{Float Box and Float Object Settings} % % \begin{macro}{margins=} % \begin{macro}{\flrow@FBAlign} % Declaring of option for |\floatbox| alignment and margins material. % \changes{v0.1f}{2005/06/14}{Removed \texttt{floatmarginsset} key.} % \begin{macrocode} \DeclareFROpt{margins}{\flrow@FBAlign{#1}} % \end{macrocode} % Macros analogous to |\caption@setjustification|. % \begin{macrocode} \newcommand*\flrow@FBAlign[1]{% \@ifundefined{flrow@mj@#1}% {\PackageError{floatrow}{Undefined float alignment `#1'}{\flrow@eh}}% {\@nameuse{flrow@mj@#1}}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\DeclareMarginSet} % This macro defines margin filling material. % This macro is allowed only in preamble. % \begin{macrocode} \newcommand*\DeclareMarginSet[2]{% \global\@namedef{flrow@mj@#1}{#2}} \@onlypreamble\DeclareMarginSet % \end{macrocode} % \end{macro} % % Declaring of float box alignment. % \changes{v0.1g}{2005/07/15}{Added settings for \cmd{\LTleft} and \cmd{\LTright} commands % from \pkg{longtable} package.} % \begin{macrocode} \newskip\LTleft\newskip\LTright \DeclareMarginSet{centering}{\setfloatmargins{\hfill}{\hfill}% \LTleft=\fill \LTright=\fill} \DeclareMarginSet{raggedright}{\setfloatmargins{}{\hfil}% \LTleft=\z@ \LTright=\fill} \DeclareMarginSet{raggedleft}{\setfloatmargins{\hfil}{}% \LTleft=\fill \LTright=\z@} \newcommand\flrow@mj@default{\flrow@mj@centering} % \end{macrocode} % % \begin{macro}{\floatfacing} % Defines settings accordingly to left (even) or right (odd) pages. % \changes{v0.1f}{2005/06/14}{Creation starred form for \cmd{\floatfacing} to use separate settings for % building of beside caption layout and float environment margins.} % \begin{macrocode} \newcommand\floatfacing{\@ifstar {\@FC@hpos\floatfacing@}{\FB@facing\floatfacing@}} \newcommand\floatfacing@[2]{\@tempswafalse \FBiffacing\@tempswatrue\fi\if@twoside\@tempswatrue\fi \if@tempswa \ifodd\count@#1\else#2\fi \else#2\fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\floatboxmargins} % \begin{macro}{\floatrowmargins} % \begin{macro}{\floatcapbesidemargins} % First goes definition for margins around alone float box. % Second defines margins in float row. % Third---margins around float box with beside caption. % % You may define different settings for each of these layouts, or set % common margins, using macro |\setfloatmargins|. % \begin{macrocode} \newcommand\floatboxmargins{\def\FR@tmp{FB}\FB@mset} \newcommand\floatrowmargins{\def\FR@tmp{FR}\FB@mset} \newcommand\floatcapbesidemargins{\def\FR@tmp{FC}\FB@mset} % \end{macrocode} % To create facing and non-facing layout in macros |\FB@mset@| and |\FB@@mset| loaded % definition of |\FB@facing| command. The temporary |\count@| get value of |\c@FBcnt|, % which is usually equals to number of page where float appears. % \changes{v0.1f}{2005/06/14}{Removed \cmd{\FBiffacing} flag from % \cmd{\FB@@mset} macro.} % \begin{macrocode} \newcommand\FB@mset{\@ifstar{\FB@mset@}{\FB@@mset}} \newcommand\FB@mset@[2]{% \def\FB@facing{\let\FBiffacing\iftrue\count@\c@FBcnt}% \@namedef{\FR@tmp leftmargin}{\floatfacing{#1}{#2}}% \@namedef{\FR@tmp rightmargin}{\floatfacing{#2}{#1}}} \newcommand\FB@@mset[2]{\def\FB@facing{}% \@namedef{\FR@tmp leftmargin}{#1}\@namedef{\FR@tmp rightmargin}{#2}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\setfloatmargins} % Alignment settings for object---caption boxes and float rows. % \begin{macrocode} \newcommand\setfloatmargins{\@ifstar{\FB@allset@}{\FB@@allset}} \newcommand\FB@allset@[2]{% \def\FR@tmp{FR}\FB@mset@{#1}{#2}% \def\FR@tmp{FB}\FB@mset@{#1}{#2}% \def\FR@tmp{FC}\FB@mset@{#1}{#2}} \newcommand\FB@@allset[2]{% \def\FR@tmp{FR}\FB@@mset{#1}{#2}% \def\FR@tmp{FB}\FB@@mset{#1}{#2}% \def\FR@tmp{FC}\FB@@mset{#1}{#2}} % \end{macrocode} % Default setting: centering of floats. % \begin{macrocode} \setfloatmargins{\hfill}{\hfill} % \end{macrocode} % \end{macro} % % \begin{macro}{objectset=} % \begin{macro}{justification=} % Declaring of option for float object contents' alignment. % \changes{v0.1f}{2005/06/14}{Added key \texttt{justification} as analog to % \cmd{\captionsetup} stuff.} % \begin{macrocode} \DeclareFROpt{objectset}{\flrow@FBoAlign{#1}} \DeclareFROpt{justification}{\flrow@FBoAlign{#1}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\DeclareObjectSet} % The |\DeclareCaptionJustification|-twin.\\ % Macros for float object's contents justification and |\floatbox| alignment. % This macro is allowed only in preamble. % \changes{v0.1f}{2005/06/14}{The code of \cmd{\DeclareObjectSet} uses caption's key-val settings.} % \begin{macrocode} \let\DeclareObjectSet\DeclareCaptionJustification \@onlypreamble\DeclareObjectSet % \end{macrocode} % \end{macro} % \changes{v0.1f}{2005/06/14}{\cmd{\DeclareObjectSet} bundle removed---\pkg{floatrow} package % uses \file{caption} settings.} % % \begin{macro}{\flrow@FBoAlign} % |\caption@setjustification|-analog.\\ % Command for \texttt{objectset=} % \changes{v0.1f}{2005/06/14}{The code of \cmd{\flrow@FBoAlign} uses caption's key-val settings.} % \begin{macrocode} \newcommand*\flrow@FBoAlign[1]{% \@ifundefined{caption@hj@#1}% {\PackageError{floatrow}{Undefined object setting `#1'}{\flrow@eh}}% {\expandafter\let\expandafter\floatobjectset \csname caption@hj@#1\endcsname}} % \end{macrocode} % \end{macro} % % \begin{macro}{\floatobjectset} % Definition of command for object alignment % \begin{macrocode} \newcommand*\floatobjectset{\centering} % \end{macrocode} % \end{macro} % \changes{v0.1f}{2005/06/14}{The \cmd{\centerlast} \cmd{\rightlast} commands % deleted.} % % \subsubsection{Defining Float Width} % % \begin{macro}{floatwidth=} % The float width settings mainly for plain float environments. % \changes{v0.1f}{2005/06/14}{Removed \texttt{besidecapsep} key.} % \begin{macrocode} \DeclareFROpt{floatwidth}{\flrow@FBo@wd{#1}} \let\FC@ifo@fil\iffalse % \end{macrocode} % \end{macro} % \begin{macro}{\filFCOhsize} % \begin{macro}{\nofilFCOhsize} % Flags and commands for \texttt{floatwidth=}. % \begin{macrocode} \newcommand\filFCOhsize{\let\FC@ifo@fil\iftrue} \newcommand\nofilFCOhsize{\let\FC@ifo@fil\iffalse} \newcommand\flrow@setwd{\relax} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\flrow@FBo@wd} % \changes{v0.1f}{2005/06/14}{Macro uses \pkg{caption} macros.} % \begin{macrocode} \newcommand\flrow@FBo@wd[1]{% \caption@ifinlist{#1}{sidefil}{\filFCOhsize }{\nofilFCOhsize\def\flrow@setwd{\@tempdima=#1}}} % \end{macrocode} % \end{macro} % % \subsubsection{Defining Float Separators} % % \begin{macro}{floatrowsep=} % \begin{macro}{capbesidesep=} % Option |floatrowsep| sets separations for beside float boxes in float row. % \changes{v0.1f}{2005/06/14}{Removed \texttt{besidecapsep} key.} % \begin{macrocode} \DeclareFROpt{floatrowsep}{\flrow@setFRsep\floatrowsep{#1}} % \end{macrocode} % Option |capbesidesep| sets separations for beside captions. % \begin{macrocode} \DeclareFROpt{capbesidesep}{\flrow@setFRsep\floatcapbesidesep{#1}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\DeclareFloatSeparators} % \begin{macro}{\flrow@setFRsep} % \begin{macro}{\flrow@setFCsep} % Next macros declare material, defined for usage as separator of both float boxes % in \env{floatrow} environment and for beside object and caption. % % The |\DeclareCaptionLabelSeparator|-twin.\\ % This macro is allowed only in preamble. % \changes{v0.1f}{2005/06/14}{Macro is \cmd{\let} to \cmd{\DeclareCaptionLabelSeparator}.} % \begin{macrocode} \let\DeclareFloatSeparators\DeclareCaptionLabelSeparator \@onlypreamble\DeclareFloatSeparators % \end{macrocode} % % The |\caption@setlabelseparator|-analog.\\ % Command which defines settings for separators in float row, and between beside caption and float object. % \changes{v0.1f}{2005/06/14}{Macro uses \pkg{caption} macros.} % \begin{macrocode} \newcommand*\flrow@setFRsep[2]{% \@ifundefined{caption@lsep@#2}% {\PackageError{floatrow}{Undefined float separator `#2'}{\flrow@eh}}% {\expandafter\let\expandafter#1\csname caption@lsep@#2\endcsname}} % \end{macrocode} % A few options define possible separators. % \changes{v0.1f}{2005/06/14}{The \texttt{quad} and \texttt{none} deleted (repeated from \pkg{caption}).} % \begin{macrocode} \DeclareFloatSeparators{columnsep}{\hskip\columnsep} %\DeclareFloatSeparators{quad}{\quad} \DeclareFloatSeparators{qquad}{\qquad} \DeclareFloatSeparators{fil}{\hskip\columnsep plus1fil} \DeclareFloatSeparators{fill}{\hskip\columnsep plus1fill} %\DeclareFloatSeparators{none}{} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\floatrowsep} % \begin{macro}{\floatcapbesidesep} % Separators between beside floats, and between object and % beside caption. % \begin{macrocode} \newcommand\floatrowsep{\hskip\columnsep} \newcommand\floatcapbesidesep{\hskip\columnsep} % \end{macrocode} % \end{macro} % \end{macro} % % \subsubsection{Defining Float Rules/Skips} % % \begin{macro}{precode=} % \begin{macro}{rowprecode=} % \begin{macro}{midcode=} % \begin{macro}{postcode=} % \begin{macro}{rowpostcode=} % Keys for building of float style (rules). % \changes{v0.1f}{2005/06/14}{Removed \texttt{Precode} and \texttt{Postcode} keys.} % \begin{macrocode} \DeclareFROpt{precode}{\flrow@FBrule\@@FRabove\@@FBabove{#1}} \DeclareFROpt{rowprecode}{\flrow@FRrule\@@FRabove\@@FBabove{#1}} \DeclareFROpt{midcode}{\flrow@FBskip{#1}} \DeclareFROpt{postcode}{\flrow@FBrule\@@FRbelow\@@FBbelow{#1}} \DeclareFROpt{rowpostcode}{\flrow@FRrule\@@FRbelow\@@FBbelow{#1}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\DeclareFloatVCode} % Declaring options for keys of vertical material for building of float style. % They could be used above and below of floatbox, and between object and caption in % the case when caption above/below object. % This macro is allowed only in preamble. % \begin{macrocode} \newcommand\DeclareFloatVCode[2]{\@namedef{flrow@FBr@#1}{#2}} \@onlypreamble\DeclareFloatVCode \newcommand\DeclareFloatPrecode{\DeclareFloatVCode} \newcommand\DeclareFloatMidcode{\DeclareFloatVCode} \newcommand\DeclareFloatPostcode{\DeclareFloatVCode} % \end{macrocode} % \end{macro} % % \begin{macro}{\flrow@FBrule} % \begin{macro}{\flrow@FRrule} % \begin{macro}{\flrow@FBskip} % Vertical code above/below float box. % \begin{macrocode} \newcommand*\flrow@FBrule[3]{% \@ifundefined{flrow@FBr@#3}% {\PackageError{floatrow}{Undefined rule `#3'}{\flrow@eh}}% {\let#1\empty \expandafter\let\expandafter#2\csname flrow@FBr@#3\endcsname}} % \end{macrocode} % Vertical code above/below float row. % \begin{macrocode} \newcommand*\flrow@FRrule[3]{% \@ifundefined{flrow@FBr@#3}% {\PackageError{floatrow}{Undefined rule `#3'}{\flrow@eh}}% {\def#2{\FBiffloatrow\else\@nameuse{flrow@FBr@#3}\fi}% \expandafter\let\expandafter#1\csname flrow@FBr@#3\endcsname}} % \end{macrocode} % Vertical code between caption and object. % \begin{macrocode} \newcommand*\flrow@FBskip[1]{% \@ifundefined{flrow@FBr@#1}% {\PackageError{floatrow}{Undefined rule `#1'}{\flrow@eh}}% {\expandafter\let\expandafter\@@FBskip\csname flrow@FBr@#1\endcsname}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % Declared options for keys for building of float style (rules). % \begin{macrocode} \DeclareFloatVCode{none}{} \DeclareFloatVCode{thickrule}{\hrule height.8ptdepth0pt\kern2pt} \DeclareFloatVCode{rule}{\kern2pt\hrule\kern2pt} \DeclareFloatVCode{lowrule}{\kern2pt\hrule} \DeclareFloatVCode{captionskip}{\vskip\captionskip} % \end{macrocode} % % The command for definition of material which you % could put at the top and bottom of object---caption box % and between caption and float. % % \begin{macro}{\FBstyle@reset} % Reset of all used layout settings. % \changes{v0.1f}{2005/06/14}{Added \cmd{\captop} macro as default caption % position.} % \begin{macrocode} \newcommand\FBstyle@reset{\let\FRifFBOX\iffalse\OADJfalse\CADJfalse\capbot \def\@@FBskip{\vskip\captionskip}\def\@@FRabove{}\def\@@FRbelow{}% \def\@@FBabove{}\def\@@FBbelow{}% \def\FB@Bset{}\gdef\FB@frame{}\gdef\FBo@frame{}% \gdef\FBo@wadj{}\gdef\FBo@hadj{}\gdef\FB@wadj{}\gdef\FB@hadj{}} \newcommand\@@FRabove{}\newcommand\@@FRbelow{} \newcommand\@@FBabove{}\newcommand\@@FBbelow{} \newcommand\@@FBskip{\vskip\captionskip} \newcommand\FB@frame{}\newcommand\FBo@frame{} \newcommand\FBo@wadj{}\newcommand\FBo@hadj{} \newcommand\FB@wadj{}\newcommand\FB@hadj{} \newcommand\FB@Bset{} % \end{macrocode} % \end{macro} % % \subsubsection{Defining Float Frames} % % Keys for building of float style (boxes). % % \begin{macro}{framestyle=} % This key defines style of frame. % \begin{macrocode} \DeclareFROpt{framestyle}{\@ifundefined{FB@#1@frame}% {\let\FRifFBOX\iffalse}{\let\FRifFBOX\iftrue\def\FB@B@{#1}}} % \end{macrocode} % \end{macro} % % \begin{macro}{framearound=} % This key defines object to be framed. % \begin{macrocode} \DeclareFROpt{framearound}{\flrow@fr@round{#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\flrow@fr@round} % Command for \texttt{framearound=}. % \changes{v0.1f}{2005/06/14}{Macro uses \pkg{caption} macro \cmd{\caption@ifinlist}.} % \begin{macrocode} \newcommand*\flrow@fr@round[1]{% \caption@ifinlist{#1}{object,contents}{\let\FRifFBOX\iftrue \def\FB@BO@{FBo}% }{\caption@ifinlist{#1}{floatbox,all}{\let\FRifFBOX\iftrue \def\FB@BO@{FB}% }{\caption@ifinlist{#1}{none}{\let\FRifFBOX\iffalse }{\PackageError{floatrow}{Undefined framed object `#1'}{\flrow@eh}% }}}} % \end{macrocode} % \end{macro} % % \begin{macro}{framefit=} % \begin{macro}{frameset=} % This boolean key defines whether frame size fits to current |\hsize|. % \changes{v0.1f}{2005/06/14}{Removed \texttt{framereduce} key.} % \begin{macrocode} \DeclareFROpt{framefit}[0]{\flrow@setbool{\FRifFIT}{#1}} % \end{macrocode} % This key defines parameters for chosen frame. % \begin{macrocode} \DeclareFROpt{frameset}{\def\FB@Bset{#1}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@@setframe} % Macro which prepares box settings accordingly to predefined float layout. % \begin{macrocode} \let\FRifFIT\iffalse \newcommand\FB@BO@{FBo}\newcommand\FB@B@{} \newcommand\@@setframe{% \@namedef{\FB@BO@ @hadj}{\@nameuse{FB@\FB@B@ @reset}\FB@Bset \@nameuse{FB@\FB@B@ @adj}}% \@namedef{\FB@BO@ @wadj}{\FRifFIT\@nameuse{FB@\FB@B@ @reset}\FB@Bset \@nameuse{FB@\FB@B@ @adj}\fi}% \@namedef{\FB@BO@ @frame}{\@nameuse{FB@\FB@B@ @reset}\FB@Bset \@nameuse{FB@\FB@B@ @frame}}} % \end{macrocode} % If box layout used. % \begin{macrocode} \let\FRifFBOX\iffalse % \end{macrocode} % \end{macro} % % \begin{macro}{\FB@fbox@frame} % \begin{macro}{\FB@fbox@adj} % \begin{macro}{\FB@fbox@reset} % First macro is the definition of frame style (here is |\fbox|); % second defines compensating material to get frame fitted to current |\hsize|; % third defines default values of compensating material. % \begin{macrocode} \newcommand\FB@fbox@frame[1]{\hbox{% \FRifFIT\else\kern-\fboxrule\kern-\fboxsep\fi \fbox{#1}% \FRifFIT\else\kern-\fboxrule\kern-\fboxsep\fi}\ignorespaces} \newcommand\FB@fbox@adj{\dimen@=2\fboxsep\advance\dimen@2\fboxrule} \newcommand\FB@fbox@reset{\fboxsep3\p@\fboxrule.4\p@} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % ^^A\subsection{Default Settings} % % \begin{macro}{\flrow@setdefault} % (Macros analogous to |\caption@setdefault|. Commented.) % \begin{macrocode} %\newcommand\flrow@setdefault{\floatsetup{% % style=plain,capposition=bottom, % margins=centering,objectset=centering, % font=default,footfont=default, % }} % \end{macrocode} % % \subsubsection{Defining Float Skips} % % \begin{macro}{captionskip=} % \begin{macro}{footskip=} % The following options define skips: first---between float object and % caption (if it used in float style); second---before foot material % (footnote or other foot text). % \changes{v0.1f}{2005/06/14}{Defining also standard \cmd{\abovecaptionskip} for % compatibility with \pkg{caption}'s \cmd{\captionof}.} % \begin{macrocode} \DeclareFROpt{captionskip}{\def\captionskip{#1}% \setlength\abovecaptionskip{#1}} \DeclareFROpt{footskip}{\def\floatfootskip{#1}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\captionskip} % \begin{macro}{\floatfootskip} % The skip between caption and object. Here goes standard value. % \begin{macrocode} \newcommand\captionskip{10\p@} % \end{macrocode} % % The skip before float footnotes. Here it is equal to % used skip in mini pages. % \begin{macrocode} \newcommand\floatfootskip{\skip\@mpfootins} % \end{macrocode} % \end{macro} % \end{macro} % % \subsubsection{Defining Float Footnote Rule} % % \begin{macro}{footnoterule=} % \begin{macro}{\flrow@footrule} % The definitions of |\footnoterule| inside float environment. % This macro is allowed only in preamble. % \begin{macrocode} \DeclareFROpt{footnoterule}{\flrow@footrule{#1}} \newcommand\DeclareFloatFootnoterule[2]{% \long\@namedef{flrow@fnrule@#1}{#2}} \newcommand*\flrow@footrule[1]{% \@ifundefined{flrow@fnrule@#1}% {\PackageError{floatrow}{Undefined footnoterule `#1'}{\flrow@eh}}% {\let\@@FRabove\empty \expandafter\let\expandafter\FBfootnoterule\csname flrow@fnrule@#1\endcsname}} \@onlypreamble\DeclareFloatFootnoterule % \end{macrocode} % Here goes standard \LaTeX{} definition used in minipages. % \begin{macrocode} \DeclareFloatFootnoterule{normal}{\kern-3\p@ \@tempdima.4\columnwidth \hrule\@width\@tempdima\kern2.6\p@} % \end{macrocode} % Here goes standard \LaTeX{} definition used in minipages with limited maximal width. % \begin{macrocode} \DeclareFloatFootnoterule{limited}{\kern-3\p@ \@tempdima.4\columnwidth \ifdim\@tempdima>\frulemax\@tempdima=\frulemax\fi \hrule\@width\@tempdima\kern2.6\p@} \newcommand\frulemax{1in} % \end{macrocode} % The width of |\footnoterule| equals to full |\hsize|. % \begin{macrocode} \DeclareFloatFootnoterule{fullsize}{\kern-3\p@ \hrule\@width\hsize\kern2.6\p@} % \end{macrocode} % Absent footnoterule. % \begin{macrocode} \DeclareFloatFootnoterule{none}{} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\FBfootnoterule} % The definition of special footnote rule. % By default it defined as standard \LaTeX{} |\footnoterule| % \begin{macrocode} \@ifdefinable\FBfootnoterule{\let\FBfootnoterule\footnoterule} % \end{macrocode} % \end{macro} % % \subsubsection{Loading Fancy Float Styles} % % Options for loading of fancy float styles. Commented. % \begin{macrocode} \let\FR@iffancy\iffalse \DeclareFROpt{fancyboxes}{\flrow@setbool{\FR@iffancy}{#1}} % \end{macrocode} % % \subsubsection{New Float Type Setup} % % \begin{macro}{\DeclareFNOpt} % Declaring new float type like |\newfloat| does. % These macros allowed only in preamble. % \changes{v0.1f}{2005/06/14}{Redefined \cmd{\DeclareFNOpt} (AS).} % \begin{macrocode} \newcommand\DeclareFNOpt{% \@ifstar{\flrow@declfnopt\AtBeginDocument} {\flrow@declfnopt\@gobble}} \newcommand*\flrow@declfnopt[2]{% #1{\undefine@key{newfloat}{#2}}\define@key{newfloat}{#2}} \@onlypreamble\DeclareFNOpt % \end{macrocode} % \begin{macrocode} \newcommand\flnew@setdefault{\setkeys{newfloat} {placement=tbp,fileext=lox}} % \end{macrocode} % The |\newtoks| for defining of float environments (using |\flrow@restyle| command) % at the end of preamble. % (Took a leaf with settings for lists of floats from \pkg{float} package's book.) % \begin{macrocode} \@ifdefinable\flrow@types{\newtoks\flrow@types} \newcommand\DeclareNewFloatType[2]{\def\FB@captype{#1}% \expandafter\edef\csname ftype@#1\endcsname{\value{float@type}}% \addtocounter{float@type}{\value{float@type}} \@namedef{fname@#1}{#1}\newcounter{#1}% \expandafter\edef\csname fnum@#1\endcsname {\expandafter\noexpand\csname fname@#1\endcsname\ \expandafter\noexpand\csname the#1\endcsname}% \@namedef{the#1}{\arabic{#1}}% \flnew@setdefault\setkeys{newfloat}{#2}% \let\FR@tmp=\relax \xdef\@tempa{\noexpand\flrow@types{\the\flrow@types \FR@tmp{#1}}}% \@tempa \expandafter\edef\csname ftype@#1\endcsname{\value{float@type}}% \addtocounter{float@type}{\value{float@type}}} \@onlypreamble\DeclareNewFloatType % \end{macrocode} % Key for placement defining. % This macro is allowed only in preamble. % \begin{macrocode} \DeclareFNOpt*{placement}{\flnew@fps{#1}} \newcommand\flnew@fps[1]{\@namedef{fps@\FB@captype}{#1}} \@onlypreamble\flnew@fps % \end{macrocode} % Key for float label name defining. % This macro is allowed only in preamble. % \begin{macrocode} \DeclareFNOpt*{name}{\flnew@fname{#1}} \newcommand\flnew@fname[1]{\@namedef{fname@\FB@captype}{#1}} \@onlypreamble\flnew@fname % \end{macrocode} % Key for extension of ``toc''-file. % This macro is allowed only in preamble. % \begin{macrocode} \DeclareFNOpt*{fileext}{\flnew@ext{#1}} \newcommand\flnew@ext[1]{\@namedef{ext@\FB@captype}{#1}% \let\float@do=\relax \xdef\@tempa{\noexpand\float@exts{\the\float@exts \float@do{#1}}}% \@tempa} \@onlypreamble\flnew@ext % \end{macrocode} % The section of document which resets numbering of float. % This macro is allowed only in preamble. % \begin{macrocode} \DeclareFNOpt*{within}{\flnew@within{#1}} \newcommand\flnew@within[1]{\@addtoreset{\FB@captype}{#1}% \expandafter\edef\csname the\FB@captype\endcsname{% \expandafter\noexpand\csname the#1\endcsname.\noexpand\arabic{\FB@captype}}} \@onlypreamble\flnew@within % \end{macrocode} % \end{macro} % % \begin{macro}{relatedcapstyle} % The flag whether to use related caption style to float layout. % \begin{macrocode} \DeclareFNOpt*{relatedcapstyle}[0]{\flrow@setbool{\FR@ifCST}{#1}} % \end{macrocode} % \end{macro} % % \subsection{Building Subfloatrow} % % \begin{macrocode} %<*frforsubfig> % \end{macrocode} % \changes{v0.1f}{2005/06/14}{The subfloatrow support became a part of a \pkg{floatrow} package.} % At first defined dimension for maximal height of subcaption. Then macro for % defining height of subcaption box. % \begin{macrocode} \newlength\FBsc@max \newlength\FBso@max \@ifdefinable\FBsubcheight{\let\FBsubcheight\relax} \@ifdefinable\FBsuboheight{\let\FBsuboheight\relax} % \end{macrocode} % % \begin{macro}{\adjustsubfloats} % The user command which loaded at the end of row of subcaptions. % \changes{v0.1f}{2005/06/14}{Removed \cmd{\FB@subfloat} and \cmd{\FB@subcaption} % definitions: the code for \env{subfloatrow} support placed in \pkg{subfig}'s % definitions.} % \changes{v0.1f}{2005/06/14}{The \cmd{\xdef} changed to local \cmd{\edef}.} % \begin{macrocode} \newcommand\adjustsubfloats{\@tempswafalse \ifCADJ\@tempswatrue\fi\ifOADJ\@tempswatrue\fi \if@tempswa\FB@writeaux{% \string\global\string\c@FBcnt\thepage \ifCADJ\string\edef\string\FBsubcheight{\the\FBsc@max}\fi \ifOADJ\string\edef\string\FBsuboheight{\the\FBso@max}\fi }\fi \global\let\FBsubcheight\relax\global\let\FBsuboheight\relax \global\FBso@max\z@\global\FBsc@max\z@} % \end{macrocode} % \end{macro} % % \begin{environment}{subfloatrow}\label{subfloatrow} % Environment for placing beside subfloats. It is simpler than \env{floatrow}. % First go counter of floats (here it is local) in row, then the settings for float layout. % \begin{macrocode} \newcommand\subfloatrow[1][2]{\c@FRobj=#1%local \ifdim\parindent<\z@\leavevmode\else\noindent\fi\hbox\bgroup \Xhsize\hsize\count@#1\advance\count@-1% \settowidth\@tempdima{\subfloatrowsep}% \advance\Xhsize-\count@\@tempdima \@tempdimb\Xhsize\divide\@tempdimb#1% \hsize\@tempdimb\ignorespaces} % \end{macrocode} % Macro for sub float row end. % \begin{macrocode} \def\endsubfloatrow{\ifdim\lastskip>\z@\unskip\fi \egroup\adjustsubfloats} % \end{macrocode} % \end{environment} % % The definition of subfloat separator. % \begin{macrocode} \newcommand\subfloatrowsep{\hskip\columnsep} \DeclareFROpt{subfloatrowsep}{\flrow@setFRsep\subfloatrowsep{#1}} % \end{macrocode} % % \begin{macrocode} % % \end{macrocode} % % \begin{macrocode} %<*frforlongtbl> % \end{macrocode} % % \subsection{Support for \pkg{longtable} Package} % % \changes{v0.1g}{2005/07/15}{The \pkg{longtable} support moved inside \pkg{floatrow} package.} % To follow layout for tables which need size of caption equal to width of % table, here added a code which catches width of table from \file{aux}-file % and sets to |\LTcapwidth| parameter (great thanks A. Sommerfeldt for % compact code created as patch of |\LT@array| command). % % At first we save macro |\LT@array| under name |\flrow@LT@array|. % Then start redefinition. % \begin{macrocode} \AtBeginDocument{\@ifundefined{LT@array}{}{\let\flrow@oriLT@array\LT@array \let\LT@array\flrow@LT@array}} \newcommand\flrow@LT@array{% % \end{macrocode} % Here are added settings for table font (similar to other table environments). % \begin{macrocode} \flrow@setlist{{table}{longtable}}\normalfont\floatfont % \end{macrocode} % Here goes safe and redefinition of |\LT@make@row| macro in the way % of managing of counting of table width. % \begin{macrocode} \FBifLTcapwidth \let\flrow@LT@make@row\LT@make@row \def\LT@make@row{% \let\LT@make@row\flrow@LT@make@row \LT@make@row % \end{macrocode} % The |\LT@entry| here used for width calculation. % \begin{macrocode} \ifx\LT@save@row\relax\else\begingroup \LTcapwidth\z@ \def\LT@entry####1####2{\advance\LTcapwidth####2}\LT@save@row \ifdim\LTcapwidth=\z@\else\global\LTcapwidth\LTcapwidth\fi \endgroup\fi}% \fi % \end{macrocode} % At last goes \pkg{longtable}'s macro itself. % \begin{macrocode} \flrow@oriLT@array} % \end{macrocode} % % The definition of subfloat separator. % \begin{macrocode} \let\FBifLTcapwidth\iffalse \DeclareFROpt{LTcapwidth}{\flrow@LTcapwd{#1}} \newcommand*\flrow@LTcapwd[1]{% \caption@ifinlist{#1}{table,contents}{\let\FBifLTcapwidth\iftrue }{\let\FBifLTcapwidth\iffalse\setlength\LTcapwidth{#1}}} % \end{macrocode} % % \begin{macrocode} % % \end{macrocode} % % \subsubsection{Processing of floatsetup options} % % As in caption style options are processed with usage of the \pkg{keyval} package. % \begin{macrocode} \def\ProcessOptionsWithKV#1{% \let\@tempc\relax \let\FR@tmp\@empty \@for\CurrentOption:=\@classoptionslist\do{% \@ifundefined{KV@#1@\CurrentOption}% {}% {% \edef\FR@tmp{\FR@tmp,\CurrentOption,}% \@expandtwoargs\@removeelement\CurrentOption \@unusedoptionlist\@unusedoptionlist }% }% \edef\FR@tmp{% \noexpand\setkeys{#1}{% \FR@tmp\@ptionlist{\@currname.\@currext}% }% }% \FR@tmp \let\CurrentOption\@empty \AtEndOfPackage{\let\@unprocessedoptions\relax}} \ProcessOptionsWithKV{floatrow} \FR@iffancy\RequirePackage{fr-fancy}\fi \let\ProcessOptionsWithKV\undefined % \end{macrocode} % At beginning of document there are loaded macros |\flrow@restyle| for table % and figure floats. (Any new float type gets this command when |\newfloat| % macro of |\DeclareNewFloatType| are used.) % \begin{macrocode} \AtBeginDocument{\flrow@restyle{table}\flrow@restyle{figure}% \let\FR@tmp\flrow@restyle \the\flrow@types \@onlypreamble\flrow@restyle\flrow@types{}} % \end{macrocode} % \end{macro} % % \begin{macrocode} % % \end{macrocode} % % \changes{v0.1f}{2005/06/14}{The support for non-caption usage deleted.} % \changes{v0.1f}{2005/06/14}{The support for obsolete macros deleted.} % % \subsection{Additional Definitions for Fancy Frames} % % \begin{macrocode} %<*frfancy> \RequirePackage{fancybox} % \end{macrocode} % % \subsection{Macros for Color Frame} % % \begin{macro}{\FB@colorbox@frame} % \begin{macro}{\FB@colorbox@adj} % \begin{macro}{\FB@colorbox@reset} % \begin{macro}{\setcolorframe} % First macro is the definition of frame style (here is |\colorbox|); % second defines compensating material to get frame fitted to current |\hsize|; % third defines default values of compensating material. % \begin{macrocode} \newcommand\FB@colorbox@frame[1]{\hbox{% \FRifFIT\else\kern-\fboxrule\kern-\fboxsep\fi \FB@fcolorbox{#1}% \FRifFIT\else\kern-\fboxrule\kern-\fboxsep\fi}\ignorespaces} \@ifdefinable\FB@colorbox@adj{\let\FB@colorbox@adj\FB@fbox@adj} \newcommand\FB@colorbox@reset{\fboxsep3\p@\fboxrule.4\p@} \newcommand\FB@colorbox{\fbox} % \end{macrocode} % Definition of color box (frame and fill color) % \begin{macrocode} \newcommand\setcolorframe[1]{\def\FB@fcolorbox{#1}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % This key defines parameters (definition) for color frame. % \begin{macrocode} \DeclareFROpt{colorframeset}{\flrow@fcolorbox{#1}} \newcommand*\flrow@fcolorbox[1]{% \@ifundefined{flrow@fcolorbox@#1}% {\PackageError{floatrow}{Undefined color box `#1'}{\flrow@eh}}% {\expandafter\let\expandafter\FB@fcolorbox \csname flrow@fcolorbox@#1\endcsname}} \newcommand*\DeclareColorBox[2]{% \@ifundefined{color}{\PackageError{floatrow}% {For usage of colored frames\MessageBreak load color package}{}}% {\long\@namedef{flrow@fcolorbox@#1}{#2}}} % \end{macrocode} % % \subsection{Macros for Fancy Frames} % % \begin{macro}{\FB@wshadowbox} % The variant of shadowbox with white contoured shadow. % \begin{macrocode} \newcommand\wshadowbox{\VerbBox\@wshadowbox} \newcommand\@wshadowbox[1]{% \setbox\@fancybox\hbox{\fbox{#1}}% \leavevmode\vbox{\offinterlineskip \hbox{\copy\@fancybox\kern-\fboxrule\lower\shadowsize\hbox{% \dimen@\ht\@fancybox\advance\dimen@-\fboxrule \vrule\@height\ht\@fancybox\@depth-\dimen@\@width\shadowsize \vrule\@height\ht\@fancybox\@depth\dp\@fancybox\@width\fboxrule}}% \vskip-\fboxrule\vskip-\shadowsize \moveright\shadowsize\vbox{% \hrule\@width\fboxrule\@height\shadowsize \hrule\@width\wd\@fancybox\@height\fboxrule}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\FB@shadowbox@frame} % \begin{macro}{\FB@shadowbox@adj} % \begin{macro}{\FB@shadowbox@reset} % First macro is the definition of frame style (here is |\shadowbox|); % second defines compensating material to get frame fitted to current |\hsize|; % third defines default values of compensating material. % \begin{macrocode} \newcommand\FB@shadowbox@frame[1]{\hbox{% \FRifFIT\else\hskip-\fboxrule\hskip-\fboxsep\fi \FBs@raise{\shadowbox{#1}}% \FRifFIT\else\kern-\fboxrule\kern-\fboxsep\kern-\shadowsize\fi}} \newcommand\FB@shadowbox@adj{\dimen@=2\fboxsep \advance\dimen@2\fboxrule\advance\dimen@\shadowsize} \newcommand\FB@shadowbox@reset{\fboxsep3\p@\fboxrule.4\p@\shadowsize4\p@} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\FB@wshadowbox@frame} % \begin{macro}{\FB@wshadowbox@adj} % \begin{macro}{\FB@wshadowbox@reset} % The definition for frame \texttt{wshadowbox}---similar to \texttt{shadowbox} % from \pkg{fancybox}. % First macro is the definition of frame style (here is |\wshadowbox|); % second defines compensating material to get frame fitted to current |\hsize|; % third defines default values of compensating material. % \begin{macrocode} \newcommand\FB@wshadowbox@frame[1]{\hbox{% \FRifFIT\else\hskip-\fboxrule\hskip-\fboxsep\fi \FBs@raise{\wshadowbox{#1}}% \FRifFIT\else\kern-\fboxrule\kern-\fboxsep\kern-\shadowsize\fi}} \@ifdefinable\FB@wshadowbox@adj{\let\FB@wshadowbox@adj\FB@shadowbox@adj} \newcommand\FB@wshadowbox@reset{\fboxsep3\p@\fboxrule.4\p@\shadowsize4\p@} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\FB@doublebox@frame} % \begin{macro}{\FB@doublebox@adj} % \begin{macro}{\FB@doublebox@reset} % First macro is the definition of frame style (here is |\doublerbox|); % second defines compensating material to get frame fitted to current |\hsize|; % third defines default values of compensating material. % \begin{macrocode} \newcommand\FB@doublebox@frame[1]{\hbox{% \FRifFIT\else\kern-4.75\fboxrule\kern-.5pt\kern-\fboxsep\fi \doublebox{#1}% \FRifFIT\else\kern-4.75\fboxrule\kern-.5pt\kern-\fboxsep\fi}} \newcommand\FB@doublebox@adj{\dimen@=2\fboxsep \advance\dimen@7.5\fboxrule\advance\dimen@\p@} \newcommand\FB@doublebox@reset{\fboxsep3\p@\fboxrule.4\p@} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\fs@shadowbox} % \begin{macro}{\fs@Shadowbox} % \begin{macro}{\fs@SHADOWBOX} % There are going three float styles with usage of |\shadowbox|. % \begin{macrocode} \DeclareFloatStyle{shadowbox}{style=boxed,framestyle=shadowbox} \DeclareFloatStyle{Shadowbox}{style=Boxed,framestyle=shadowbox} \DeclareFloatStyle{SHADOWBOX}{style=BOXED,framestyle=shadowbox} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\fs@wshadowbox} % \begin{macro}{\fs@Wshadowbox} % \begin{macro}{\fs@WSHADOWBOX} % There are going three float styles with usage of |\wshadowbox|. % \begin{macrocode} \DeclareFloatStyle{wshadowbox}{style=boxed,framestyle=wshadowbox} \DeclareFloatStyle{Wshadowbox}{style=Boxed,framestyle=wshadowbox} \DeclareFloatStyle{WSHADOWBOX}{style=BOXED,framestyle=wshadowbox} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\fs@doublebox} % \begin{macro}{\fs@Doublebox} % \begin{macro}{\fs@DOUBLEBOX} % There are going three float styles with usage of |\doublebox|. % \begin{macrocode} \DeclareFloatStyle{doublebox}{style=boxed,framestyle=doublebox} \DeclareFloatStyle{Doublebox}{style=Boxed,framestyle=doublebox} \DeclareFloatStyle{DOUBLEBOX}{style=BOXED,framestyle=doublebox} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macrocode} % % \end{macrocode} % % \subsection{Empty Floating page} % % At last goes small sneaky-tricky style to put desired page style for one % floating page. % % \begin{macro}{\floatpagestyle} % First goes macro which defines desired page style for page with current float. % \begin{macrocode} %<*floatpagestyle> \newcommand\floatpagestyle[1]{\@ifundefined{ps@#1}\undefinedpagestyle {\begingroup \let\thepage\relax\let\protect\@unexpandable@protect \edef\reserved@a{\write\@auxout{\expandafter\string \csname @setfloatpage\endcsname{\thepage}{#1}}}\reserved@a \endgroup}} % \end{macrocode} % \end{macro} % % \begin{macro}{\emptyfloatpage} % The abbreviation for empty float page style. % \begin{macrocode} \newcommand\emptyfloatpage{\floatpagestyle{empty}} % \end{macrocode} % \end{macro} % % \begin{macro}{\@setfloatpage} % The macro which writes necessary code for changed float page style. % \begin{macrocode} \newcommand\@setfloatpage[2]{% \edef\reserved@a{floatpage@\romannumeral#1}% \global\expandafter\def\csname\reserved@a\endcsname{#2}} % \end{macrocode} % \end{macro} % % \begin{macro}{\@chkfloatpage} % The macro which checks whether exists necessary code for changing of current % float page style. % \begin{macrocode} \newcommand\@chkfloatpage{% \edef\reserved@a{floatpage@\romannumeral\the\c@page}% \@ifundefined{\reserved@a}{\relax}{\global\@specialpagetrue \gdef\@specialstyle{\csname\reserved@a\endcsname}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\@outputpage} % Edited \LaTeX{} core macro (release 2001/06/01) % \begin{macrocode} \def\@outputpage{% \begingroup % the \endgroup is put in by \aftergroup \let \protect \noexpand \@resetactivechars \global\let\@@if@newlist\if@newlist \global\@newlistfalse \@parboxrestore \shipout \vbox{% \set@typeset@protect \aftergroup \endgroup \aftergroup \set@typeset@protect % \end{macrocode} % Here added checking of floating page style. % \begin{macrocode} \@chkfloatpage %check float \if@specialpage \global\@specialpagefalse\@nameuse{ps@\@specialstyle}% \fi \if@twoside \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot \let\@themargin\oddsidemargin \else \let\@thehead\@evenhead \let\@thefoot\@evenfoot \let\@themargin\evensidemargin \fi \fi \reset@font \normalsize \normalsfcodes \let\label\@gobble \let\index\@gobble \let\glossary\@gobble \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@ \@begindvi \vskip \topmargin \moveright\@themargin \vbox {% \setbox\@tempboxa \vbox to\headheight{% \vfil \color@hbox \normalcolor \hb@xt@\textwidth{\@thehead}% \color@endbox }% \dp\@tempboxa \z@ \box\@tempboxa \vskip \headsep \box\@outputbox \baselineskip \footskip \color@hbox \normalcolor \hb@xt@\textwidth{\@thefoot}% \color@endbox }% }% \global\let\if@newlist\@@if@newlist \global \@colht \textheight \stepcounter{page}% \let\firstmark\botmark } % \end{macrocode} % \end{macro} % % \begin{macrocode} % % \end{macrocode} % % \Finale %\endinput