% \iffalse % floatrow.dtx - The float row package (extension of float package) % (c) 2004-2007 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-2007 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} %\ProvidesPackage{listpen} %\ProvidesPackage{fr-subfig} %\ProvidesPackage{fr-longtable} % % \ProvidesFile{floatrow.dtx} % [2007/08/24 v0.2a floatrow: float package extension] % [2005/05/24 v0.1h floatrow: fancy boxes] % [2005/10/02 v0.1h floating page style] % [2007/05/24 v0.1b list penalty managing] % [2007/08/24 v0.1f (beta) floatrow: additions for subfig] % [2007/05/24 v0.1a (beta) floatrow: additions for longtable] % %<*driver> \input pictures \documentclass[twoside]{ltxdoc} \makeatletter%^^A ----------------------- \usepackage{calc} \usepackage{tabularx,array} \ifx\pdfoutput\undefined \else \ifcase\pdfoutput \else \usepackage{mathptm}\def\ttdefault{pxtt} \usepackage[scaled=0.90]{helvet} \fi \fi \settowidth\marginparwidth{\texttt{0DeclareFloatFootnoterule}} \IfFileExists{titlesec.sty}{\usepackage[raggedright]{titlesec}}{} \IfFileExists{footmisc.sty}{\usepackage[perpage]{footmisc}}{} \IfFileExists{fancyhdr.sty}{\usepackage{fancyhdr} \pagestyle{fancy} \fancyhead{}\fancyfoot{} \fancyhead[LE]{\setlength{\dimen@}{\marginparwidth+\marginparsep}%^^A \leavevmode\hbox to\dimen@{\normalsize\bfseries\thepage\hfil} \ignorespaces{\nouppercase\leftmark}\hfil\strut} \fancyhead[LO]{\setlength{\dimen@}{\marginparwidth+\marginparsep}%^^A \leavevmode\hbox to\dimen@{} \ignorespaces{\nouppercase\rightmark}\hfill\hbox to2em{\hfil\normalsize\bfseries\thepage}\strut} \fancyheadoffset[L]{\marginparwidth+\marginparsep} }{} \usepackage[font=small,labelfont=bf,labelsep=period, justification=centerlast] {caption}[2007/04/11] \usepackage[format=default,justification=centerlast, labelfont=up,captionskip=5pt] {subfig}[2005/06/28] \IfFileExists{rotating.sty}{\usepackage[figuresright]{rotating}}{} \usepackage{longtable} \usepackage{wrapfig} %\usepackage{psfrag} \usepackage[vflt]{floatflt} \usepackage{picins} %^^A\RequirePackage[writefile]{listings}[2004/09/07] \usepackage[font=small,captionskip=5pt,objectset=centering,margins=centering, footskip=.5\skip\footins,footnoterule=fullsize, floatrowsep=qquad,capbesidesep=quad, facing=yes,capbesideposition=inside,floatHaslist=yes,doublefloataswide=yes]{floatrow} \usepackage{floatpagestyle,listpen} \allowprelistbreaks[-4] \usepackage{fr-fancy} \IfFileExists{hyperref.sty}{\usepackage[ linktocpage, hyperindex,% plainpages=false,% bookmarksopenlevel=1,% bookmarksnumbered=false,% pdfview=FitH, pdfstartview=FitH, ]{hyperref} \IfFileExists{hypcap.sty}{\usepackage{hypcap}}{} }{} \ifx\pdftexversion\undefined \IfFileExists{pstricks.sty}{\usepackage{pstricks,pst-eps}}{} \else\ifcase\pdfoutput \IfFileExists{pstricks.sty}{\usepackage{pstricks}}{} \or %^^A \IfFileExists{pdftricks.sty}{ %^^A \usepackage{pdftricks} %^^A }{} \fi\fi \ifx\pdfdisplay\undefined\else \begin{psinputs} \usepackage{pstricks} \end{psinputs} \fi \IfFileExists{makecell.sty}{\usepackage{makecell}}{} \@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}}}}{} \IfFileExists{multirow.sty}{\usepackage{multirow}}{} \IfFileExists{lscape.sty}{\usepackage{lscape}}{} \IfFileExists{color.sty}{\usepackage{color}\definecolor{gray}{gray}{.5}}{\let\color\@gobble} \floatsetup[table]{style=Plaintop,footnoterule=none} %^^A ----------------------- \floatstyle{ruled} \newfloat{Program}{tbp}{lop}[section] \DeclareNewFloatType{Example}% {placement=tb,within=section,fileext=lox} \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] \DeclareFloatStyle{MyBoxed}{style=Boxed, captionskip=5pt,frameset={\fboxrule1pt\fboxsep12pt}} \DeclareFloatVCode{lowthickrule}{\par\vskip2pt\rule{\hsize}{.8pt}\par} \DeclareFloatVCode{grayruleabove}{{\color{gray}\par\rule\hsize{2.8pt}\vskip4pt\par}} \DeclareFloatVCode{grayrulebelow}{{\color{gray}\par\vskip4pt\rule\hsize{2.8pt}}} \DeclareObjectSet{colorred}{\parskip2pt\parindent15pt\color{red}} \DeclareMarginSet{hangleft}% {\setfloatmargins {\hskip-\marginparwidth\hskip-\marginparsep}{\hfil}} \DeclareMarginSet{hangtoheads}% {\setfloatmargins {\hfil}{\hskip-.7\headheight\hskip-\headsep}} \DeclareFloatSeparators{colorsep}% {\begingroup\color{blue}% \floatfacing{\hskip6pt\vrule width4.8pt\hskip6pt}% {\hskip6pt\vrule width4.8pt\hskip6pt}% \endgroup} \DeclareFloatSeparators{none}{} \DeclareFloatSeparators{cicero}{\hskip1cc} \DeclareFloatSeparators{enskip}{\hskip.5em} \DeclareFloatSeparators{mcapwidth}{\hskip-\FCwidth} %^^A ----------------------- %^^A\DeclareCaptionFormat{labelonly}{#1} \DeclareCaptionLabelFormat{numonly}{#2)} \DeclareCaptionLabelFormat{list}{\bothIfFirst{#1}{ }#2)} \DeclareCaptionListOfFormat{comma-separated}{#1,\,#2} \DeclareCaptionFont{green}{\color{green}} \DeclareCaptionFont{magenta}{\color{magenta}} \def\rightlast{\leftskip0ptplus1fil \rightskip0ptplus-1fil\parfillskip0ptplus1fil} \def\leftlast{\leftskip0pt\rightskip0pt\parfillskip0ptplus1fil} %^^A for all versions of caption 3.x? \DeclareCaptionLabelFormat{rightline}{\rightline{\bothIfFirst{#1}{ }#2}} \DeclareCaptionJustification{togglelast}{\floatfacing*\rightlast\leftlast} \captionsetup[table]{labelformat=rightline,textfont=bf,labelfont={md,sl},labelsep=newline} \captionsetup[capbesidefigure]{justification=togglelast} \captionsetup[floatfoot]{format=default} \DeclareCaptionFormat{break}{#1#2\par#3\par} %^^A ----------------------- \advance\oddsidemargin.25\marginparwidth \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*{\package}[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} \newenvironment{Quote}{\par\RestoreSpaces\small\begin{quote}\obeylines\parskip0pt}{\end{quote}\par\@endpetrue} \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}% }% } %maybe there is better solution? \def\DescribeMacro{\let\outer@nobreak\@nobreaktrue \leavevmode\everypar{\@nobreakfalse}\@bsphack \begingroup\MakePrivateLetters\Describe@Macro} \def\DescribeEnv{\let\outer@nobreak\@nobreaktrue \leavevmode\everypar{\@nobreakfalse}\@bsphack \begingroup\MakePrivateLetters\Describe@Env} \def\RestoreSpaces{\@nobreakfalse} \newcommand\FRmpar{\@ifstar{\@nobreaktrue\xFRmpar}{\xFRmpar}} \newcommand\xFRmpar[2]{\label{#2}\marginpar{\footnotesize \raggedleft\advance\leftskip.3\hsize#1}} \providecommand\sectionname{section} \def\SpecialUsageIndex#1{} \def\SpecialEnvIndex#1{} \newcommand\seeIntro{\hyperref[sec:intro]{Intro}} \makeatother%^^A--------------------------------- \OnlyDescription \let\PrintChanges\relax \let\PrintIndex\relax \EnableCrossrefs \RecordChanges \begin{document} \DocInput{floatrow.dtx} \PrintChanges \end{document} % % \fi % % \CheckSum{5209} % % % \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.2a} % \def\filedate{2007/08/24} % \title{The \package{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}\openup.5pt % This package was created as extension of the \package{float} % package. The \package{floatrow} package borrows core code from % the \package{float}\footnote{\package{float} package, version v1.3d dated % 2001/11/08, \copyright{} 1991-2000 Anselm Lingnau.} and % \package{rotfloat}\footnote{\package{rotfloat} package, version v1.2 % dated 2004/01/04, \copyright{} 1995--2004 Axel % Sommerfeldt.} packages, so you \emph{must not} load these packages. % % The \package{float} package has a~good mechanism for the creation (and easy % modification) of common layout for all floats without % adding any repeated code in the document; besides, this package allows to % create new float type; it deals only % with alone (plain) combinations ``object (float contents)---caption''. % The \package{rotfloat} % package changes environments of rotated floats (\package{rotating} package) % to adapt them to \package{float}'s settings. % % Current package extends these possibilities and, at last, it allows: % \begin{itemize}\itemsep0pt\parskip0pt % \item % to use mechanism, borrowed from \package{float} package, for % creation of new float type; % \item % to change width of float box, also % 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 and/or modify special layout for each type of float and % for different positioning of float and its components, e.g. % two-column or rotated float. % \end{itemize} % % The \package{floatrow} package is cooperated with \package{caption} package % (\textit{needs version} 3.0\textbf{q} \textit{and later}). % Also the \package{floatrow} package (like % \package{caption} one) uses \package{keyval} package mechanism for layout % settings. % \medskip % % \begingroup % \slshape % I think I did my best to follow these ideas 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 % % \centerline{\textbf{Document Terminology}\nopagebreak\vspace{1ex}} % \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 by |\floatbox| % command and its modifications; % % \item[float type] % means standard environments \env{figure} and \env{table}, % also their subtypes, like e.g.~\env{wrapfigure} (\package{wrapfig} package), % \env{sidewaysfigure} (\package{rotating} and \package{rotfloat} packages), % \env{longtable} (\package{longtable} package) etc.; % % \item[object]\env{tabular} or graphics, as contents of table % (\env{table}) or figure (\env{figure}) or other type of float; % % \item[caption]text in |\caption|; % % \item[foot material]explications, legends and/or footnotes inside % \emph{float} box (|\footnote|/\allowbreak|\mpfootnotemark|/\allowbreak|\footnotetext|, % and |\floatfoot| macros). % \end{description} % \end{abstract} % % \begingroup\small % \vspace{2ex}\pdfbookmark[1]{Frequently Appeared Design}{FAD}\nopagebreak\centerline{\textbf{Frequently Appeared Design}\nopagebreak} % \begin{multicols}{2}\raggedright\advance\rightskip1em % \makeatletter\let\item\@idxitem\ignorespaces\makeatother % \def\sectionname{sec.} %^^A% \item{``Anchored'' float (option~\texttt{H})} %^^A% \strut\pfill %^^A% \textsl{\sectionname}~\ref{sec:floatborrowII} % % \item{Caption} % \subitem{above float (\env{table}'s object, |\ttabbox|)\kern-1em\allowbreak} % \strut\pfill % \textsl{{\seeIntro}},~%^^A % \textsl{\sectionname}~\ref{sec:floatbox}%^^A; % %^^A\pageref{FAD:CaptionAbove}, % %^^A\pageref{FAD:CaptionAboveTable}, % %^^A\pageref{FAD:CaptionAboveTableII}, % %^^A\pageref{FAD:CaptionAboveIII} % % \subitem{beside float (\env{figure}'s object, |\fcapside|)} % \strut\pfill % \textsl{{\seeIntro}},~%^^A % \textsl{\sectionname}~\ref{sec:floatbox}%^^A;~ % %^^A\pageref{FAD:BesideCaptionII}, % %^^A\pageref{ssec:ffigbox:etc}, % %^^A\pageref{fig:subfig:catsI}, % % \subitem{width equals to \env{longtable}'s (|LTcapwidth=| key)} % \strut\pfill % \pageref{FAD:LTcapwidth} % % \subitem{width equals to object's} % \emph{see}~{float box width equals to object's}{} % % \item{Creation of new float type (|\DeclareNewFloatType|)} % \strut\pfill % \textsl{\sectionname}~\ref{sec:newfloat}%;~^^A % %^^A\pageref{FAD:newfloattype} % % \item{Layout of Float types (|\floatsetup|)} % \strut\pfill % \textsl{\sectionname}~\ref{sec:floatsetup}\nopagebreak % % \item{Float}\nopagebreak % \subitem{box (|\floatbox|)} % \strut\pfill % \textsl{\sectionname}~\ref{sec:floatbox}; % \subsubitem{figure box (|\ffigbox|)} % \strut\pfill % \textsl{{\seeIntro}},~%^^A % \textsl{\sectionname}~\ref{sec:floatbox}; % % \subsubitem{table box (|\ttabbox|)} % \strut\pfill % \textsl{{\seeIntro}},~%^^A % \textsl{\sectionname}~\ref{sec:floatbox}; % % \subitem{rotated (|sideways..|~env.)}\nopagebreak % \strut\pfill % \textsl{\sectionname}~\ref{ssec:rotating}%^^A--\ref{ssec:lscape} % \subsubitem{empty (special) page style (|\emptyfloatpage|)} % \strut\pfill % \pageref{FAD:emptyfloatpage} % % \subsubitem{placing on the facing pages} % \strut\pfill % \pageref{FAD:ContRotated} % % \subitem{\textbf{here!} (option \texttt{H})} % \strut\pfill % \textsl{\sectionname}~\ref{sec:floatborrowII} % % \subitem{row (|floatrow| env.)} % \strut\pfill % \textsl{{\seeIntro}},~%^^A % \textsl{\sectionname}~\ref{sec:floatrow}%^^A; % %^^A\pageref{FAD:BesideFloat}, % %^^A\pageref{ssec:app:besidestart}--\pageref{ssec:app:besidefinish} % % \subsubitem{float(box) in the row occupies the rest space} % \emph{see}~{float width, the rest space of the row} % % \subsubitem{floats of different types side by side} % \strut\pfill % \pageref{FAD:MixedRow}, % \pageref{FAD:MixedRowII}%^^A%, % %^^A\pageref{FAD:Mixrow} % %^^A%^^A% \subsubitem{floats of one type side by side} %^^A%^^A% \strut\pfill %^^A%^^A% \pageref{FAD:floatrow} % % \subitem{like in plain \LaTeX\ (|\RawFloats|)} % \strut\pfill % \textsl{\sectionname}~\ref{sec:rawfloats}%^^A; % %^^A\pageref{FAD:PlainFloat}, % %^^A\pageref{FAD:PlainFloatII} % % \subitem{width} %^^A% \subsubitem{|floatwidth=| key etc.} %^^A% \strut\pfill %^^A% \textsl{\sectionname}~\ref{sec:wd:object} % % \subsubitem{option in |\floatbox| commands} % \strut\pfill % \textsl{\sectionname}~\ref{sec:floatbox}%^^A; % %^^A\pageref{FAD:FBwidthI}, % %^^A\pageref{FAD:FBwidthII} % % \subsubitem{equals to object's (option |\FBwidth| (|\floatbox|))} % \strut\pfill % \textsl{{\seeIntro}},~%^^A % \textsl{\sectionname}~\ref{sec:floatbox}%^^A; % %^^A\pageref{FAD:FBwidthI}, % %^^A\pageref{FAD:FBwidth}, % %^^A\pageref{FAD:FBwidthII} % % \subsubitem{the rest space in the row % (option |\Xhsize| (|\floatbox|))} % \strut\pfill % \pageref{FAD:floatfillspace} % % \subitem{wrapped} % \strut\pfill % \textsl{\sectionname}~\ref{ssec:wrapfig}--\ref{ssec:picins} % % \item{Footnote inside float} % \strut\pfill % \textsl{\sectionname}~\ref{sec:floatfootnote}%^^A; % %^^A\pageref{FAD:FnoteInsideFloat} % %^^A%^^A% \subitem{footnote text (|\footnotetext|)} %^^A%^^A% \strut\pfill %^^A%^^A% \textsl{\sectionname}~\ref{sec:floatfootnote}; %^^A%^^A% \pageref{FAD:FnoteInsideFloat} % % \subitem{footnote mark % (|\mpfootnotemark|)\kern-1em\allowbreak} % \strut\pfill % \pageref{FAD:FnoteInsideFloat} % % \item{Legend-like macro (|\floatfoot|)} % \strut\pfill % \textsl{\sectionname}~\ref{subsec:floatfoot} % % \item{Subfloat} % \strut\pfill % \subitem{subcaption above} % \strut\pfill % \pageref{FAD:subcapabove} % \subitem{subfloat label beside} % \strut\pfill % \pageref{FAD:sublabelbeside} % \end{multicols}% % \endgroup % % \clearpage % \begingroup % \small\openup-.75pt % \pdfbookmark[1]{Contents}{TOC}\nopagebreak\tableofcontents % \pdfbookmark[1]{List of Figures}{LOF}%^^A\setcounter{lofdepth}2 % \nopagebreak\listoffigures % \pdfbookmark[1]{List of Tables}{LOT}%^^A\setcounter{lotdepth}2 % \nopagebreak\listoftables % \endgroup % % \clearpage % \suppressfloats[t] % % \section{Macros for Building Floats} % % \subsection{Introduction}\label{sec:intro} % % One of the first macros of package, created for float contents, % is a macro which builds contents of the table environment with caption % above. The width of caption equals to the width of contents, e.g. % of tabular (see table~\ref{intro:table}).%^^A % \FRmpar{Caption above table object}{FAD:CaptionAbove}%^^A %^^A% \footnote{The table caption in current documentation use a~special layout, %^^A% popular in Russian typographic publications, look for %^^A% \texttt{flushrightlabel} key of \cs{captionsetup} in the preamble of %^^A% source file of this documentation and in sample files %^^A% ({\sectionname}~\ref{sec:samples}).} %\begin{Quote}\openup-.65pt %\meta{preamble} % |\usepackage[|\hyperref[setup:font]{\texttt{font}}|=small,|%^^A % \hyperref[setup:captionskip]{\texttt{captionskip}}|=5pt,|%^^A % \hyperref[setup:objectset]{\texttt{objectset}}|=centering,| % | |\hyperref[setup:margins]{\texttt{margins}}|=centering,...]{floatrow}[2007/08/24]| % |\|\hyperref[sec:floatsetup]{\texttt{floatsetup}}|[table]{|%^^A % \hyperref[setup:style]{\texttt{style}}|=Plaintop}| % |\usepackage[font=small,labelfont=bf,labelsep=period,| % | justification=centerlast]{caption}[2007/04/11]| % |\DeclareCaptionLabelFormat{rightline}{\rightline{\bothIfFirst{#1}{ }#2}}| % |\captionsetup[table]{labelformat=rightline,textfont=bf,| % | labelfont={md,sl},labelsep=newline}| %\meta{preamble} %|\begin{table}| %|\|\hyperref[floatbox:ttabbox]{\texttt{ttabbox}} %| {\caption{A small table ...}\label{...}}| %| {\begin{tabular}...\end{tabular}}| %|\end{table}| %\end{Quote} % \begin{table}[H] % \ttabbox % {\caption{A small table with caption text above (\cmd{\ttabbox})}\label{intro:table}} % {\jot2pt\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 or predefined |\hsize|. %\begin{Quote}\openup-.65pt %|...| %|\begin{figure}| %|\|\hyperref[floatbox:ffigbox]{\texttt{ffigbox}} %| {\caption{A figure...}\label{...}}| %| {...}| %|\end{figure}| %\end{Quote} %\begingroup % \begin{figure}[H] % \ffigbox % {\caption[A simple figure box (\cmd{\ffigbox})] {A plain figure box % with long long long long long long long long % long long long long long long long long long long multilined caption}\label{intro:figure}} % {\unitlength.88\unitlength\input{Doll.picture}} % \end{figure}%^^A %\endgroup % The default % layout of |\ffigbox| (figure~\ref{intro:figure}) is similar to the plain % \env{figure} environment. But if you set option |[\FBwidth]| like below: % \FRmpar{Caption's width equals to object}{FAD:FBwidthI} %\begin{Quote} %|...| %|\begin{figure}|\nopagebreak %|\ffigbox[\|\hyperref[floatbox:FBwidth]{\texttt{FBwidth}}|]| %| {\caption{A figure}\label{...}}| %| {...}| %|\end{figure}| %\end{Quote} % \begin{figure}[H] % \ffigbox[\FBwidth] % {\caption[A figure box (\cmd{\ffigbox}) with the width equal to graphics]{A figure with % the width equal to graphics with long % long long long long multilined % caption}\label{intro:figure:FBwidth}} % {\unitlength1.78\unitlength\input{Horse.picture}} % \end{figure}%^^A % You get caption width equal to the width of picture % (figure~\ref{intro:figure:FBwidth}). % % The third macro---|\fcapside| (figure~\ref{intro:beside})---puts % caption beside: %\begin{Quote} %\meta{preamble} % |\usepackage[...|\hyperref[setup:capbesidesep]{\texttt{capbesidesep}}|=quad,|%^^A % \hyperref[setup:facing]{\texttt{facing}}|=yes,| % | |\hyperref[setup:capbesideposition]{\texttt{capbesideposition}}|=inside,...]{floatrow}[2007/06/24]| %|...| %\meta{preamble} %|\begin{figure}| %|\|\hyperref[floatbox:fcapside]{\texttt{fcapside}} %| {\caption{...}\label{...}}| %| {...}| %|\end{figure}| %\end{Quote} % \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 piece of text to fill % space}\label{intro:beside}} % {{\setlength\unitlength{3.68cm/100}%^^A % \input{Bear.picture}}} % \end{figure} % The width of main text or predefined value of |\hsize| before |\fcapside| command, % by default, divided into two columns, their width equals to the half of current |\hsize| % (figure~\ref{intro:beside}) excluding float margins and % separation material between float and caption. % One column is occupied by object, another---by caption and foot material (explications % or legends and footnotes). % % % If you set the |[\FBwidth]| option: % \FRmpar{Caption's width equals to object}{FAD:FBwidthII} %\begin{Quote} %|...| %|\fcapside[\FBwidth]| %|...| %\end{Quote} % \begin{figure}[H] % \fcapside[\FBwidth] % {\caption[Beside caption (occupies rest space of defined width beside float object)]{Beside caption % (the caption text occupies the rest space of \cs{hsize}) and more text % and some more text and a bit more text and % a little more text and a little piece of text to fill % space}\label{intro:beside:FBwidth}} % {{\setlength\unitlength{3.68cm/100}%^^A % \input{Bear.picture}}} % \end{figure} % The graphic column width will be equal to the graphics and caption occupies the rest space % (see figure~\ref{intro:beside:FBwidth}).\medskip % % \subsection{The \cs{floatbox} Macro}\label{sec:floatbox} % % \DescribeMacro{\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}|}|\footnotemark % \end{Quote}%^^A % \footnotetext{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.} % where\label{floatboxsets}: % \begin{description}\itemsep0pt % \item[\meta{preamble}]there could be |\capbeside|\label{floatbox:capbeside} command which % places caption beside float contents; % |\nocapbeside|\label{floatbox:nocapbeside} % (to put caption above/below, accordingly % to float type's style); % |\captop|\label{floatbox:captop} % (to put caption above); % or another systematic command % (even with usage of |\captionsetup| % and |\|\hyperref[setup:thisfloatsetup]{\texttt{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). % Empty width option, |[]|, and option |[\hsize]| mean the same.\par % The option |[\FBwidth]|\label{floatbox:FBwidth}%^^A % \FRmpar{Caption's width\\ equals to object}{FAD:FBwidthIII} % in~the \meta{width} argument % allows usage of natural width of float contents: \qquad for full float box in the case of caption % above/\allowbreak below; \qquad in~the case of beside caption natural width of float object expands to % object box only.\par % \emph{Note}. If you use the \verb|\FBwidth| command in the \meta{width} % optional argument, please be sure that object contents can be placed % in |\hbox| command (you only allowed to use |\vspace| (not |\vskip|!) % command at the very % beginning and very end of object contents for fine tuning % of vertical spaces and position of contents); % \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} % % The commands |\ttabbox|, |\ffigbox|, and |\fcapside|, used in Introduction, abbreviate |\floatbox| command, which creates % float boxes: % \begin{itemize}\itemsep0pt\parskip0pt % \item[--] the |\ttabbox| command we can replace with the code\\ % | \floatbox[\captop]{table}[\FBwidth]|; % \item[--] the |\ffigbox| one---with |\floatbox{figure}| (simplest definition); and % \item[--] the |\fcapside| one---with |\floatbox[\capbeside]{figure}|. % \end{itemize}% % % You see in example with figure~\ref{intro:figure:FBwidth} that you can change width % for |\ffigbox| command to get caption (and also full float box) width equal to the width % of object. Also you may create your own command based on |\floatbox| command % and set float box's width equal to object's, % see {\sectionname}~\ref{ssec:ffigbox:etc} about this. % % \begingroup % The three examples of float placing. First simplest example: %\begin{Quote} %|\begin{figure}| %|\floatbox{figure}[4cm]| %| {\caption{The simple example ...}%| %| \label{fig:WcatI}}| %| {...}| %|\end{figure}| %\end{Quote} % created the picture in the figure~\ref{fig:WcatI}. The width of box equals to 4cm. % \begin{figure}[H] % \floatbox{figure}[4cm] % {\caption{The simple example of \cmd{\floatbox}}% % \label{fig:WcatI}} % {\unitlength1.24\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. %\begin{Quote} %|\begin{table}|\nopagebreak %|\floatbox[\captpop]{table}[\FBwidth]| %| {\caption{Simple tabular ...}\label{...}}| %| {\begin{tabular}{|l|c|c|}| %| ...}| %|\end{table}| %\end{Quote} % \DeleteShortVerb{\|}% % \begingroup % \floatsetup[table]{style=plain} % \begin{table}[H] % \floatbox[\captop]{table}[\FBwidth] % {\caption{Simple tabular with caption % above (\cmd{\floatbox} with \cmd{\captop} in preamble argument)}\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}% % \endgroup % \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 \meta{preamble} argument consists of rather complex definition, % 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{Quote} %|\begin{figure}| %|\floatbox[{\capbeside| %| \captionsetup[capbesidefigure]{format=break,labelsep=none,| %| justification=raggedleft}%| %| \|\hyperref[setup:thisfloatsetup]{\texttt{thisfloatsetup}}%^^A % |{|\hyperref[setup:capbesideposition]{\texttt{capbesideposition}}|=left}}]{figure}[\FBwidth]| %| {\caption{...}\label{...}}| %| {...}| %|\end{figure}| %\end{Quote} % \begin{figure}[H] % \floatbox[{\capbeside % \captionsetup[capbesidefigure]{format=break,labelsep=none, % justification=raggedleft}% % \thisfloatsetup{capbesideposition=left}}]{figure}[\FBwidth] % {\caption[Beside caption (example width complex preamble in \cmd{\floatbox})]{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}%^^A % \input{Mouse.picture}}} % \end{figure} % Please note that complex preamble, with more than one command option must be placed in group. % (See {\sectionname}~\ref{sec:floatsetup} about settings for floats.) % % \RestoreSpaces % \subsubsection{Creation of Personal Commands for Float Boxes}\label{ssec:ffigbox:etc} % % The usage of |\floatbox| command with options (which could be cumbersome) sometimes is rather complex. % The Introduction demonstrates commands-abbreviations of this commands. % You may define commands-abbreviations (or redefine existing) for your own purposes and % include there some additional style definitions and 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}\itemsep0pt\parskip1ptplus1pt % \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}]the first reason of usage of this option is % to put |\FBwidth| command: \qquad in case of % caption above or below object (there could be defined % |\nocapbeside| in \meta{preamble} option) this command defines width of % full float (object---caption) box (see figure~\ref{intro:figure:FBwidth}); \qquad in the case of caption % beside object (there must be defined |\capbeside| in \meta{preamble} % option) this command defines % width of object (caption occupies the rest space, see figure~\ref{intro:beside:FBwidth}).\par % You may put also any dimension like |6cm| % or |.75\textwidth| but usage of option by % this way is much less reasonable. % \end{description} % % Let's repeat three already defined commands-abbreviations:\label{abbrcom}%^^A % \begin{Quote} % |\newfloatcommand{ffigbox}{figure}[\nocapbeside]|\label{floatbox:ffigbox}\nopagebreak % |\newfloatcommand{fcapside}{figure}[\capbeside]|\label{floatbox:fcapside}\nopagebreak % |\newfloatcommand{ttabbox}{table}[\captop][\FBwidth]|\label{floatbox:ttabbox} % \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).\medskip % % Your defined commands you may use in following way (example for |\ffigbox|): % \begin{Quote} % |\ffigbox|\oarg{width}\oarg{height}\oarg{vert pos} % \end{Quote} % first option, \oarg{width}, cancels the default width settings, which were % used during (re)definition of current command. The other two options % are analogous to the |\floatbox|'s ones (see page~\pageref{sec:floatbox}). % % \par\RestoreSpaces % \subsection{Building Float Row}\label{sec:floatrow} % % If you need to put two or more floats of one type side by side,%^^A % \FRmpar{Floats of one type\\ side by side}{FAD:floatrow} % you may use \env{floatrow} environment. % % \par\RestoreSpaces % This environment looks like: % \begin{Quote} % |\begin{floatrow}[|\meta{number of beside floats}|]|\nopagebreak % |\floatbox...|\nopagebreak % |\floatbox...|\nopagebreak % |...|\nopagebreak % |\end{floatrow}| % \end{Quote} % % The \env{floatrow} environment allows to put floats side by side. % This environment creates necessary number of ``columns'' % (usually two), where floats are placed. You may redefine the width of each float box, % e.g. the table boxes~\ref{tab:row:tabIII} and~\ref{tab:row:tabIV} have the width of their contents % (remember, the |[\FBwidth]| is default option of |\ttabbox|). % % Please note that \emph{for each float box} inside \env{floatrow} you must use |\floatbox|, |\ffigbox|, % |\ttabbox| or your own command, created with |\newfloatcommand| macro: %\begin{Quote} %\meta{preamble} %| \usepackage[...|\hyperref[setup:floatrowsep]{\texttt{floatrowsep}}|=qquad,...]{floatrow}| %| \|\hyperref[sec:floatsetup]{\texttt{floatsetup}}|[table]{|%^^A % \hyperref[setup:style]{\texttt{style}}|=Plaintop}| %\meta{preamble} %|\begin{figure}| %| \begin{table}| %| \ttabbox| %| {\caption{...}\label{...}}| %| {...}| %| | %| \ttabbox| %| {\caption{...}\label{...}}| %| {...}| %| \end{floatrow}| %|\end{table}| %\end{Quote} % \DeleteShortVerb{\|}% % \begin{table}[H] % \begin{floatrow} % \extrarowheight1pt % \ttabbox % {\caption[Beside table~I long header]%^^A % {Beside table~I with long long long long long long and top aligned caption}%^^A % \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{\|}% % Since |\ttabbox| uses |\FBwidth| as default option, the caption width equals to tabular contents. % % The next example with figures uses |[\FBwidth]| for the left float and |[\Xhsize]| for the right. %\begin{Quote} %|...|\nopagebreak %|\begin{figure}|\nopagebreak %| \begin{floatrow}|\nopagebreak %| \ffigbox[\FBwidth]| %| {...}| %| {\caption{...}\label{...}}| %| | %| \ffigbox[\Xhsize]|%^^A % \FRmpar{Float occupies the rest space in the row}{FAD:floatfillspace} %| {...}| %| {\caption{...}\label{...}}| %| \end{floatrow}|\nopagebreak %|\end{figure}| %\end{Quote} % \begin{figure}[H] % \begin{floatrow} % \ffigbox[\FBwidth] % {\caption[Left beside figure (\env{floatrow}), the float box has width of graphic]{Left beside figure, % the width of graphic}% % \label{intro:leftfig:FBwidth}}% % {\unitlength1.12\unitlength\input{Bear.picture}} % % \ffigbox[\Xhsize] % {\caption[Right beside figure (\env{floatrow}), occupies the rest space of row]{Beside figure at the right side of simple figure row, % the box width occupies the rest space of row}%^^A % \label{intro:rightfig:Xhsize}} % {\unitlength1.44\unitlength\input{Doll.picture}} % \end{floatrow} % \end{figure}%^^A % % \emph{Note}. Usually the command |\Xhsize| is used for the last float % box. But if you use \package{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---the next example just uses it. % % And here is more complex 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}), % the last two occupy the rest horizontal space of page which was % counted with command |\Xhsize| and \package{calc} package.%^^A %\begin{Quote} %\meta{preamble} % |\DeclareMarginSet{hangleft}{\setfloatmargins| % | {\hskip-\marginparwidth\hskip-\marginparsep}{\hfil}}| % |\floatsetup[|\hyperref[setup:widefigure]{\texttt{widefigure}}|]{|%^^A % \hyperref[setup:margins]{\texttt{margins}}|=hangleft}| %\meta{preamble} %|\begin{figure*}| %|\begin{floatrow}[4]| %| \ffigbox| %| {\caption{Beside figure~I...}...}| %| {...}| %| | %| \ffigbox[\FBwidth]| %| {\caption{Beside figure~II...}...}| %| {...}| %| | %| \ffigbox[\Xhsize]| %| {\caption{Beside figure~III...}...}| %| {...}| %|\end{floatrow}| %|\end{figure*}| %\end{Quote} % \floatsetup[widefloat]{margins=hangleft} % \begin{figure*}% % \begin{floatrow}[4] % \ffigbox % {\caption{Figure~I in the row (\env{floatrow}), ``column'' width}% % \label{fig:row:Dog}} % {\input{TheDog.picture}} % % \ffigbox[\FBwidth] % {\caption{Figure~II in the row (\env{floatrow}), graphics width}% % \label{fig:row:WcatI}} % {\input{TheCat.picture}} % % \ffigbox[\Xhsize/2] % {\caption{Figure~III in the row, float's width box has the % half of the rest space of row}% % \label{fig:row:BcatI}} % {{\setlength\unitlength{\hsize/58}%^^A % {\input{Mouse.picture}}}} % % \ffigbox[\Xhsize] % {\caption{Figure~IV in the row, % occupies the rest space of row}% % \label{fig:row:mouseI}} % {\input{Cheese.picture}} % \end{floatrow} % \end{figure*}% % The result you see in the row of % figures~\ref{fig:row:Dog}--\ref{fig:row:mouseI}. Please note that in all examples the vertical % alignment of floats lays on the bottom of upper part (here: objects) % of float and the top of lower part (captions). % % \RestoreSpaces % \subsubsection{Mixed Row}\label{sec:mixrow} % % The problem in mixed row 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 % |\|\hyperref[setup:killfloatstyle]{\texttt{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). % % Another 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 the following commands: %\begin{Quote} %|\CenterFloatBoxes|\label{floatbox:CenterFloatBoxes} %|\TopFloatBoxes|\label{floatbox:TopFloatBoxes} %|\BottomFloatBoxes|\label{floatbox:BottomFloatBoxes} %\end{Quote} % which align \emph{full} float boxes by center, top or bottom lines. % These macros were created by |\buildFBBOX|\label{floatbox:buildFBBOX} macro. % There is also |\PlainFloatBoxes|\label{floatbox: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}: %\begin{Quote}\openup-.5pt %|\begin{figure}\CenterFloatBoxes|\nopagebreak %|\begin{floatrow}| %| \ffigbox[\FBwidth]| %| ...| %| \killfloatstyle\ttabbox| %| ...| %\end{Quote} % \DeleteShortVerb{\|}% % \begingroup % \begin{figure}[H]\CenterFloatBoxes % \begin{floatrow} % \ffigbox[\FBwidth] % {\unitlength1.86\unitlength\input{Horse.picture}} % {\caption{A figure in the mixed row}\label{fig:rowmixspec:WcatI}}% % \extrarowheight1pt % \killfloatstyle % \ttabbox % {\caption{A table in the mixed row}\label{tab:rowmixspec:tabI}} % {\tabcolsep5\tabcolsep\begin{tabular}{|c|c|}\hline A & B \\ C & D \\ \hline\end{tabular}} % \end{floatrow} % \end{figure} % \endgroup % \MakeShortVerb{\|}% % \par\RestoreSpaces % % \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}).\label{FAD:MixedRowII} % % \subsection{Running Floats In The Raw \LaTeX\ mode}\label{sec:rawfloats} % % The\label{FAD:PlainFloat} % \package{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 do that by one of three ways. % % 1.\enskip If you want \LaTeX\ behavior for \emph{just for one environment}, % input a |\RawFloats| command \emph{inside} environment: %\begin{Quote}\openup-.5pt %|\begin{figure}\RawFloats|\nopagebreak %|\captionsetup[table]{position=top}| %|\begin{minipage}{0.45\textwidth}| %| \centering ...| %| \caption{...}\label{...}| %|\end{minipage}| %|\begin{minipage}{0.45\textwidth}| %| \captionof{table}{...}\label{...}| %| \centering ...| %|\end{minipage}|\nopagebreak %|\end{figure}| %\end{Quote} % And you'll get figure~\ref{Right:expect:fig} % and table~\ref{Right:expect:tab}\nopagebreak\footnote{That could work correct if % you do not use any fancy float layout at least for one of floats.}. % \begin{figure}[H]\RawFloats % \captionsetup[table]{position=top} % \begin{minipage}{0.45\textwidth} % \centering {\unitlength1.86\unitlength\input{Horse.picture}} % \caption{A figure in raw \LaTeX's mode}\label{Right:expect:fig} % \end{minipage}\quad\hfill % \killfloatstyle\begin{minipage}{0.45\textwidth} % \captionof{table}{A table in raw \LaTeX's mode}\label{Right:expect:tab} % \centering\tabcolsep5\tabcolsep % \begin{tabular}{|c|c|}\hline A & B \\ C & D \\ \hline\end{tabular} % \end{minipage} % \end{figure} % Compare this example with example in the {\sectionname}~\ref{sec:mixrow} and the following example. %\begin{Quote}\openup-.5pt %|\begin{figure}\RawFloats\CenterFloatBoxes|\nopagebreak %|\begin{floatrow}| %| \ffigbox[\FBwidth]|\nopagebreak %| {...}|\nopagebreak %| {\caption{...}\label{...}}| %| | %| \ttabbox|\nopagebreak %| {...}|\nopagebreak %| {\caption{...}\label{...}}| %|\end{floatrow}|\nopagebreak %|\end{figure}| %\end{Quote} % \begin{figure}[H]\RawFloats\CenterFloatBoxes % \begin{floatrow} % \ffigbox[\FBwidth] % {\unitlength1.86\unitlength\input{Horse.picture}} % {\caption{A figure in \cmd{\floatbox} and inside \env{floatrow} in raw \LaTeX's mode}% % \label{intro:leftfig:raw}}% % % \ttabbox % {\caption{A table in \cmd{\floatbox} and inside \env{floatrow} in raw % \LaTeX's mode}\label{intro:righttab:raw}} % {\tabcolsep5\tabcolsep % \begin{tabular}{|c|c|}\hline A & B \\ C & D \\ \hline % \end{tabular}} % \end{floatrow} % \end{figure}%^^A % % 2.\enskip Canceling of \package{floatrow}'s behavior of \emph{all floats of one type} % is set outside any float environment, these settings are better for % preamble. In this case the |\RawFloats| command needs optional % argument with name(s) of float type. You may set that by two ways: % \begin{Quote} % |\RawFloats|\oarg{type,type,\ldots}\quad or\nopagebreak % |\RawFloats|\oarg{type}\oarg{subtype,subtype,\ldots} % \end{Quote} % So, if you set |\RawFloats[figure]|, that will return to all figures % in all subtype environments (\texttt{figure}, \texttt{figure*}, % \texttt{sidewaysfigure}, etc.) plain \LaTeX{} mode. If there is also a table, % |\RawFloats[figure,table]|, you also will set the same for all table % subtypes. % % The second way, with second optional argument, cancels \package{floatrow}'s % behavior for mentioned float ``subtype(s)'' of \emph{one} float type % in second optional argument you may use \texttt{float}, \texttt{widefloat}, % \texttt{rotfloat}, \texttt{widerotfloat}---the meaning of this options % analogous to options of |\floatsetup| macro % (see {\sectionname}~\ref{sec:floatsetup}) but you may use here only options which % include ``float'' word\label{FAD:PlainFloatII}%^^A % %^^A(or short variants without ``float'', like % %^^A\texttt{rot} or \texttt{widerot})%^^A % .%^^A % % \DescribeMacro{rawfloats}\label{setup:rawfloats}%^^A % 3.\enskip This option stores the plain \LaTeX{} mode (i.e. stores usage of standard % \LaTeX{} float macros) for all standard and new % user defined float types. This option can be used only in % |\usepackage| line. % % The \env{floatrow} environment ({\sectionname}~\ref{sec:floatrow}) % and commands of |\floatbox| stuff ({\sectionname}~\ref{sec:floatbox}) % still work after |\RawFloats|' and |rawfloats=| settings % (see example width figure~\ref{intro:leftfig:raw} % and table~\ref{intro:righttab:raw})\label{FAD:MixedRow}%^^A % % \RestoreSpaces % \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| in standard \LaTeX\ always creates the sign of main text footnote. % For these cases current package offers |\mpfootnotemark|%^^A % \FRmpar{Footnotemark \\inside float}{FAD:FnoteInsideFloat} % macro instead of |\footnotemark|%^^A% % \footnote{The same macro also is defined in \package{footmisc} package, % version 4.10, dated 2003/01/20.}. % \begin{Quote}\openup-.35pt% % \meta{preamble} % |\floatsetup{...,|\hyperref[setup:footnoterule]{\texttt{footnoterule}}|=limited,|%^^A % \hyperref[setup:footskip]{\texttt{footskip}}|=\skip\footins,...}| % \meta{preamble} % |\begin{table}| % |\ttabbox| % | {\caption{...}\label{...}}%| % \verb+ {\begin{tabular}{...}+ % | \hline| % | First row & \phantom01 & 2\mpfootnotemark[1] \\| % | Second row & \phantom06\mpfootnotemark[1] & 4\mpfootnotemark[1] \\| % | ...| % | \hline| % | \end{tabular}%| % | \footnotetext[1]{Even numbers.}}| % |\end{table}| % \end{Quote}% % \DeleteShortVerb{\|}% % \begin{table}[H]\floatsetup{footnoterule=limited,footskip=\skip\footins} % \ttabbox % {\caption{Table with footnote}%^^A % \label{tab:floatfnote}}%^^A % {\extrarowheight1pt % \begin{tabular}{|l|c|c|} % \hline % \thead{Column head} & \thead{Data I} & \thead{Data II} \\ % \hline % First row & \phantom01 & 2\mpfootnotemark[1] \\ % Second row & \phantom06\mpfootnotemark[1] & 4\mpfootnotemark[1] \\ % Third row & 28\mpfootnotemark[1] & 8\mpfootnotemark[1] \\ % \hline % \end{tabular}%^^A % \footnotetext[1]{Even numbers.}} % \end{table}% % \MakeShortVerb{\|}% % % The |\floatbox| macro uses special own definition of footnote rule % (the \hyperref[setup:footnoterule]{\texttt{footnoterule}}|=| key) and skip before footnotes and % explications or legends (\hyperref[setup:footskip]{\texttt{footskip}}|=|). (See also % page~\pageref{sec:footnotestyle} for variants of footnote rule.) % % \RestoreSpaces % \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|\label{FAD:Legend} % command. The |\floatfoot| is % build by usage of |\caption| stuff and uses caption's text justification, % but star form (|\floatfoot*|) prints its contents as plain unindented % paragraph (see table~\ref{tab:floatfoot}). % % For defining of explication font use \hyperref[setup:footfont]{\texttt{footfont=}} option % (page~\pageref{setup:footfont}) in |\floatsetup|. You may try to % define special settings for float foot using % \cmd{\captionsetup[floatfoot]}. %\begin{Quote} %|\begin{table}| %|\ttabbox| %| {\caption{...}\label{...}}| % \verb+ {\begin{tabular}{...}+ %| ...| %| \end{tabular}%| %| \floatfoot*{`Data I' column ...}}| %|\end{table}| %\end{Quote} % \DeleteShortVerb{\|}% % \begin{table}[H] % \ttabbox % {\caption[Table with foot material (e.g. legend)]{Table with foot material}%^^A % \label{tab:floatfoot}}%^^A % {\extrarowheight1pt%^^A\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 \package{float} package defines additional % optional argument after main caption text, possibly for explications. % Since this possibility % didn't declared in user part of documentation the current version of % \package{caption} (3.0 and later), and also \package{float\-row} package, % doesn't support this possibility. You may use |\floatfoot| and % |\footnote|/\allowbreak|\footnotemark|/\allowbreak|\footnotetext| stuffs instead. % % 2)\enskip If you use both commands |\floatfoot| 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{setup:footposition} % and sample file \file{frsample01.tex}. In case of caption beside % float object, footnotes and foot text always placed below caption. % % % \RestoreSpaces % \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.\nopagebreak % % 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.}. % % \RestoreSpaces % \subsection{Do not write that with \package{floatrow} package} % % The \package{floatrow} package creates some features or limitations % of float building. If you'll write something like %\begin{Quote} %\meta{preamble} %|\usepackage{floatrow}| %\meta{preamble} %|\begin{figure}| %| \caption{A table caption...}| %| \centering \begin{tabular}{cc} A & B \\ C & D \end{tabular}| %|\end{figure}| %\end{Quote} % please do not expect that caption appears at the top of table. % % \begingroup\clearfloatsetup{table} % \begin{table}[H] % \caption{A table caption must be placed above, wrong expect}\label{Wrong:expect} % \centering \begin{tabular}{cc} A & B \\ C & D \end{tabular} % \end{table} % \endgroup % % If % you want, e.g. to put table captions above its contents, you must % write |\floatsetup[figure]{style=plaintop}| in the preamble % (see also {\sectionname}~\ref{sec:floatsetup} about |\floatsetup| mechanism). % Another example. If you put beside floats by following way: %\begin{Quote} %\meta{preamble} %|\usepackage{floatrow}| %\meta{preamble} %|\begin{figure}|\nopagebreak\parskip0pt %|\begin{minipage}{0.5\textwidth}| %| \centering ...| %| \caption{A figure caption, disappeared, wrong expected row}| %|\end{minipage}| %|\begin{minipage}{0.5\textwidth}| %| \captionof{table}{A table caption, wrong expected row}}| %| \centering | %| \begin{tabular}{cc}| %| A & B \\ C & D | %| \end{tabular}| %|\end{minipage}|\nopagebreak %|\end{figure}| %\end{Quote} % you also won't get expected result. %\begin{figure}[H] %\begin{minipage}{0.5\textwidth} %\centering \input{Horse.picture} %\caption{A figure caption, disappeared, wrong expected row} %\end{minipage} %\begin{minipage}{0.5\textwidth} %\captionof{table}{A table caption, wrong expected row} %\centering \begin{tabular}{cc} A & B \\ C & D \end{tabular} %\end{minipage} %\end{figure} % Read back the {\sectionname}s~\ref{sec:mixrow} and~\ref{sec:rawfloats} and correct the error. % % \clearpage % \section{Float Layout Settings}\label{sec:floatsetup} % % The idea of \package{floatrow} package is to avoid a lot of repeated code % inside document for creation of desired layout for floats % 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 or for one type of % float is possible because of the borrowed code from the \package{float} % package, which allows to modify layout of float boxes as a whole. % % The common layout and modification for captions and special % settings for % each type of float is supported by \package{caption} package, version~3.x. % % The layout settings of \package{floatrow} package are built similarly % to the settings from the \package{caption}~3.x package 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 {\sectionname}~\ref{sec:changed}).} mechanism which is % analog to |\captionsetup| one\footnote{Look also at \package{caption} % documentation (version 3.0 and later)}. % % \DescribeMacro{\floatsetup} % You may use layout settings stuff as \package{floatrow} option in % the |\usepackage| line. % \begin{Quote} % |\usepackage[|\meta{options}|]{floatrow}|\quad. % \end{Quote} % You may write % \begin{Quote} % |\usepackage[style=boxed,font=small]{floatrow}|\quad. % \end{Quote} % The same result you get with the |\floatsetup| command: % \begin{Quote} % |\floatsetup{style=boxed,font=small}|\quad. % \end{Quote} % The lines above declare the \texttt{boxed} style and the |\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}\quad. % \end{Quote} % % For defining of a special style for the floats of one type, you can 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 floating tables: captions are placed above % float objects; in the case of floats are placed in one row, inside the \env{floatrow} % environment, text of captions is aligned by the top lines.%^^A % %^^A \footnote{The keys, % %^^A used in special settings for float of one type, are always % %^^A ``stronger'' than synonym keys in common setting. In other words, % %^^A if you want after example above to redefine float style for all % %^^A floats with \cmd{\floatsetup\{style={\normalfont \meta{option}}\}} % %^^A you won't change tables---use % %^^A \cmd{\floatsetup[table]}\allowbreak % %^^A \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, wrapped floats. The ``strength'' of options in the lists below decreases % from previous item to next one (examples based on \env{figure} % environment)\footnote{In the case of the boolean key \texttt{rawfloats=} is switched to \texttt{true}, % the options below for float layout are canceled.}: % \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; that could be different margins for % floats, different alignment of captions): % \begin{itemize} % \item % |\floatsetup[widefigure]|\label{setup:widefigure}---the ``strongest'' settings; % if they absent, package uses settings from next item; % \item % |\floatsetup[widefloat]|\label{setup: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}, used width \package{wrapfig} package): % \begin{itemize}%\itemsep0pt\parskip.5\parskip % \item |\floatsetup[wrapfigure]|\label{setup:wrapfigure}; % \item |\floatsetup[wrapfloat]|\label{setup:wrapfloat}; % \item |\floatsetup[figure]|; % \end{itemize} % \item % Rotated floats (in environments, like \env{sidewaysfigure}, % used width \package{rotating} package): % \begin{itemize}%\itemsep0pt\parskip.5\parskip % \item |\floatsetup[rotfigure]|\label{setup:rotfigure}; % \item |\floatsetup[rotfloat]|\label{setup:rotfloat}; % \item |\floatsetup[figure]|; % \end{itemize} % \item % Wide or two-column 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]|\label{setup:widerotfigure}; % \item |\floatsetup[widerotfloat]|\label{setup:widerotfloat}; % \item |\floatsetup[rotfigure]|; % \item |\floatsetup[rotfloat]|; % \item |\floatsetup[figure]|; % \end{itemize} % \item % Floats with beside captions (please note, that settings in these options are limited, see below): % \begin{itemize}%\itemsep0pt % \item |\floatsetup[capbesidefigure]|\label{setup:capbesidefigure}; % \item |\floatsetup[capbesidefloat]|\label{setup:capbesidefloat}; % \item % setting of outer environments from previous items: % \env{sidewaysfigure*}, \env{sidewaysfigure}, \env{figure*} and \env{figure}. % \end{itemize} % \end{itemize} % You can also create and change special settings for captions, using % the same \meta{float~type} options in |\captionsetup| stuff.\nopagebreak % % The next few sections describe keys of |\floatsetup| macro. % % \subsection{Floatsetup Keys}\label{sec:floatkeys} % % \subsubsection{Float Style} % % \DescribeMacro{style}\label{setup:style}%^^A % The \emph{float style} could include alignment of float contents, margins, boxes or lines, % if necessary, and other options. % The \emph{float style} is specified by following way: % \par\RestoreSpaces % \begin{Options}{style=float style name } % \item[style=\rmfamily\mdseries\meta{float style name} ,] % the name of the \meta{float style name} option you may take from % table~\ref{tab:floatlayouts}. % \item[...] % You may create your own options with \\|\DeclareFloatStyle| command, % see page~\pageref{ssec:declstyle}. % \end{Options} % % As you may see in the table~\ref{tab:floatlayouts}, there are included all float styles % which emulate co-named ones from the \package{float} package. % % Please note, that usage of \texttt{style=} key for floats with beside captions, % i.e.~using |\floatsetup| settings with options like, e.g., % |[capbesidefigure]| or |[capbesidefloat]| % cancels settings for beside position of caption. Usually the floats with beside captions % can set different alignment of captions, so the radical changes for float layout % with beside caption in current version could get wrong results (see % {\sectionname}~\ref{page:killfloatstyle} how to solve this problem).\medskip % % The \package{caption} package uses its own settings and names for caption layout styles. % The caption's \texttt{ruled} style is the only one from \package{float} % package, which was predefined in \package{caption} package. To use it, % write % \begin{Quote} % |\captionsetup[figure]{style=ruled}|\quad . % \end{Quote} % % \begingroup\vfill % \jot3pt\tabcolsep1.5\tabcolsep % \newlengthtocommand\settowidth\Icolumn{\small\texttt{wshadowboxx}} % \newlengthtocommand\settowidth\IIcolumn{\small\texttt{framestyle=wshadowbox}} % \newlengthtocommand\setlength\IIIcolumn{\textwidth-\Icolumn-\IIcolumn % -6\tabcolsep-1.6pt} % \newcommand\leftcell[2][16.5mm]{%^^A% % \hspace*{-\tabcolsep}\begin{tabular}[t]{>{% % \noindent % \vphantom{\small()\mpfootnotemark[1]}} % p{\hsize}} % #2\unskip\botstrut\end{tabular}\hspace*{-\tabcolsep}% % } % \begin{longtable}{|>{\extrarowheight0pt\def\arraystretch{.75}\ttfamily}p{\Icolumn} % |>{\extrarowheight0pt\def\arraystretch{.75}\ttfamily}p{\IIcolumn} % |>{\parindent1em\topstrut}p{\IIIcolumn}<{\botstrut}|} % \caption{Float layout styles}\label{tab:floatlayouts}\\ % \hline % \hfil\thead{Style} & % \hfil\thead{\cmd{\floatsetup} keys} & % \hfil\thead{Description} \\ % \hline % \endfirsthead % \caption[]{Float layout styles \textmd{(\emph{Continued})}}\\ % \hline % \hfil\thead{Style} & % \hfil\thead{\cmd{\floatsetup} keys} & % \hfil\thead{Description} \\ % \hline % \endhead % \caption[]{Float layout styles \textmd{(\emph{Finished})}}\\ % \hline % \hfil\thead{Style} & % \hfil\thead{\cmd{\floatsetup} keys} & % \hfil\thead{Description} \\ % \hline % \endlasthead % \multicolumn{3}{r@{}}{\topstrut\emph{Continued on next page}} % \endfoot % \multicolumn{3}{r@{}}{\topstrut\emph{Finished on next page}} % \endprelastfoot % \endlastfoot % \multicolumn{3}{|c|}{Offered by \package{floatrow} package\botstrut\topstrut}\\ % \hline \leftcell{\texttt{plain}\label{setup:plain}{\mpfootnotemark[1]\mpfootnotemark[2]\mpfootnotemark[3]}} % & \leftcell{\meta{none}} % &The style \texttt{plain} is standard \LaTeX's layout. Put captions always below float object's contents. % \\\hline % \leftcell{\texttt{plaintop}{\mpfootnotemark[1]} % \botstrut\\ \hline\topstrut\texttt{Plaintop}} % & \leftcell[50mm]{capposition=top\botstrut\\ \hline\topstrut % capposition=TOP} % &The style \texttt{plaintop} is the same as \texttt{plain} style, but puts captions above float object's contents---%^^A % this style is analog of % the co-named style from the \package{float} package.\par Capitalized form, |Plaintop|, % aligns captions of the floats, which were placed in the one row % (in the \env{floatrow} environment), % by top line (see example on the page~\pageref{tab:row:tabIII}) % \\\hline % \leftcell{\texttt{ruled}\label{setup:ruled}{\mpfootnotemark[1]\mpfootnotemark[3]} % \\ \\ \\ \\ \botstrut\\ \hline\topstrut\texttt{Ruled}\smash{\mpfootnotemark[2]}} % & \leftcell[50mm]{capposition=top,\\ precode=thickrule,\\ % midcode=rule,\\ postcode=lowrule,\\ % heightadjust=all\botstrut\\ \hline\topstrut % style=ruled,\\ capposition=TOP} % &The first style, \texttt{ruled}, emulates co-named style from the \package{float} package. % It places thick rule % above float box, and thin rules between caption and object and below float. Rules are separated % from contents by small 2pt skip.\par % Capitalized form, |Ruled|, aligns captions of the floats, which were placed % in the one row (in the \env{floatrow} environment), % by top line (see example on the page~\pageref{example:ruledcapposTOP}) % \\\hline % \leftcell{\texttt{boxed}\smash{\mpfootnotemark[1]\mpfootnotemark[2]\mpfootnotemark[3]\mpfootnotemark[4]} % \\ \\ \\ \botstrut\\ \hline\topstrut\texttt{Boxed}\label{setup:Boxed}\smash{\mpfootnotemark[2]\mpfootnotemark[3]} % \\ \botstrut\\ \hline\topstrut\texttt{BOXED}\smash{\mpfootnotemark[2]}\mpfootnotemark[3]} % & \leftcell[50mm]{captionskip=2pt,\\framestyle=fbox,\\ % heightadjust=object,\\framearound=object\botstrut\\ \hline\topstrut % style=boxed,\\ framefit=yes\botstrut\\ \hline\topstrut % framestyle=fbox,\\ framefit=yes,\\ % heightadjust=all,\\ framearound=all} % &The first style, \texttt{boxed}, emulates (again) co-named style from the \package{float} package. % The width of object equals to the |\textwidth|, predefined \cmd{\hsize}, or % the width in |\floatbox|'s option; % frame climbs out to the right and left sides (see example on the page~\pageref{fig:setup:boxed}). % Frame separation and rule width equal to current \cmd{\fboxsep} and \cmd{\fboxrule} settings. (Default values % are \texttt{3pt} and \texttt{.4pt} consequently.)\par % In capitalized form, |Boxed|, the frame around object fits the % \cmd{\textwidth}, predefined \cmd{\hsize}, or the width in |\floatbox|'s option; the width of object % is reduced to fit inside frame (see example on the page~\pageref{fig:plain:MyBoxed}).\par % Uppercase form, |BOXED|, % draws frame which fits to current \cmd{\textwidth}, predefined \cmd{\hsize}, or the width in |\floatbox|'s option, % but around all float elements: caption, object and foot material % (see example on the page~\pageref{fig:wrapfig:WcatII}) % \\ \hline % \multicolumn{3}{|c|}{Offered by \package{fr-fancy} package. % They also need \package{fancybox} package.\botstrut\topstrut}\\* % \hline \leftcell{\texttt{shadowbox}\smash{\mpfootnotemark[4]} % \\ \botstrut\\ \hline\topstrut\texttt{Shadowbox} % \\ \botstrut\\ \hline\topstrut\texttt{SHADOWBOX}} % & \leftcell[50mm]{style=boxed,\\framestyle=shadowbox\botstrut\\ \hline\topstrut % style=Boxed,\\framestyle=shadowbox\botstrut\\ \hline\topstrut % style=BOXED,\\framestyle=shadowbox} % &The same as \texttt{boxed}, \texttt{Boxed} and \texttt{BOXED} % consequently. The \cmd{\fbox} frame changed to \cmd{\shadowbox} % from \package{fancybox} package (see example on the page~\pageref{fig:subfig:catsI}). % Besides \cmd{\fboxsep} and \cmd{\fboxrule}, there is added parameter % \cmd{\shadowsize}---the width of shadow, % default is \texttt{4pt} % \\ \hline % \leftcell{\texttt{doublebox}\smash{\mpfootnotemark[4]} % \\ \botstrut\\ \hline\topstrut\texttt{Doublebox}\\ % \botstrut\\ \hline\topstrut\texttt{DOUBLEBOX}} % & \leftcell[50mm]{style=boxed,\\ framestyle=doublebox\botstrut\\ \hline\topstrut % style=Boxed,\\ framestyle=doublebox\botstrut\\ \hline\topstrut % style=BOXED,\\ framestyle=doublebox} % &The same as \texttt{boxed}, \texttt{Boxed} and \texttt{BOXED} % consequently. The \cmd{\fbox} frame changed to \cmd{\doublebox} % from \package{fancybox} package. The frame shape control \cmd{\fboxrule} and \cmd{\fboxsep} parameters % \\ \hline\noalign{\penalty-500} % \multicolumn{3}{|c|}{Additional float styles. They also need % \package{fancybox} package.\botstrut\topstrut}\\* \hline % \leftcell{\texttt{wshadowbox}\smash{\mpfootnotemark[4]} % \\ \botstrut\\ \hline\topstrut\texttt{Wshadowbox} % \\ \botstrut\\ \hline\topstrut\texttt{WSHADOWBOX}} % & \leftcell[50mm]{style=boxed,\\framestyle=wshadowbox\botstrut\\ \hline\topstrut % style=Boxed,\\framestyle=wshadowbox\botstrut\\ \hline\topstrut % 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 \package{fancybox} package % (see example on the page~\pageref{fig:floatflt:WcatI}), you may use the same frame parameters like % \texttt{shadowbox} style. % \\\hline % %^^A \multicolumn3{@{}p{\hsize}@{}} % \noalign % {\floatfoot*{When there is set float style with frame around object is % fitted to the box 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.\vspace{-3pt}\par % \rule{1in}{.4pt}\vspace{2pt}\parindent15pt % % \mpfootnotemark[1]{The styles co-named and analogous to \package{float} package style.} % % \mpfootnotemark[2]{This style used in the sample file \file{frsmaple01.tex}} % % \mpfootnotemark[3]{This style used in the sample file \file{frsmaple02.tex}} % % \mpfootnotemark[4]{During usage of these styles in % \env{floatrow} environment you ought to enlarge % space between floats, using key \texttt{floatrowsep}.} % }} % \end{longtable} % % % \endgroup % % % % \RestoreSpaces % %^^A\pagebreak[4] % % \subsubsection{Font settings}\label{setup:start} % % \DescribeMacro{font}\label{setup:font}%^^A % 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}\allowitembreaks[-4] % \item[footnotesize] {\footnotesize The size usually used for footnotes}\allowitembreaks % \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}\pagebreak[2] % % \item[md] {\mdseries Medium series}\pagebreak[2] % \item[bf] {\bfseries Bold series}\pagebreak[2] % % \item[rm] {\rmfamily Roman family} % \item[sf] {\sffamily Sans Serif family} % \item[tt] {\ttfamily Typewriter family} % \item[...] % You may create your own options with |\DeclareFloatFont| command, % see page~\pageref{ssec:declfont}. % \end{Options} % % You may set font for float object like % \begin{Quote} % |font=small| % \end{Quote} % this option is used in current documentation, or % \begin{Quote} % |font={small,sf}|\quad . % \end{Quote} % % \addvspace\medskipamount\noindent % \DescribeMacro{footfont}\label{setup:footfont}%^^A % Defines font for legends or explications (defined by |\floatfoot| command, % see~\textsl{\sectionname}~\ref{subsec:floatfoot}). This macro % uses |\captionsetup| mechanism (because |\floatfoot| macro % uses \package{caption} mechanism). By default the font size % of float foot text equals to footnote text: |footfont=footnotesize|. % % \RestoreSpaces % \subsubsection{Position of Caption and of Other Elements} % % \DescribeMacro{capposition}\label{setup:capposition}%^^A % Defines position of captions. It is similar to \texttt{position=} % key in \package{caption} package, but it has two additional % options\footnote{The option \texttt{auto} isn't used by % \texttt{capposition=}.}: \texttt{TOP}%^^A % \FRmpar{Caption above\\ table object}{FAD:CaptionAboveTableII}, 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}): % \par\RestoreSpaces % \begin{Options}{\OptionLabel} % \item[top] caption above object; % \item[TOP] caption above object and also aligned by top line in float % row. % For example the \texttt{Plaintop} style is the variant of % \texttt{plaintop} where used |capposition=TOP| settings, % see tables~\ref{tab:row:tabIII:CAPTOP}--\ref{tab:row:tabIV:CAPTOP}; % \item[bottom] caption below object; % \item[beside] caption beside object.%^^A %^^A% \FRmpar{Beside caption and float object}{FAD:BesideCaptionII} % \end{Options} % % Compare two examples: % \begin{Quote} % |\floatsetup[table]{|\hyperref[setup:style]{\texttt{style}}%^^A % |=plain,capposition=top}%|${}\equiv\texttt{style=plaintop}$ % \end{Quote} % \DeleteShortVerb{\|}% % \begingroup % \floatsetup[table]{style=plain,capposition=top} % \begin{table}[H] % \begin{floatrow}\tabcolsep2\tabcolsep % \extrarowheight1pt % \ttabbox % {\caption[Long caption of table~I with key \texttt{capposition=top}]%^^A % {The table~I in the row with long, long, long, long, long, long caption}\label{tab:row:tabIII:captop}}%^^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[Table~II in the row with caption with key \texttt{capposition=top}]%^^A % {Table~II in the row with caption}\label{tab:row:tabIV:captop}}%^^A % {\begin{tabular}{|l|c|c|c|} % \hline % \multirowthead{2}[-1ex]{Column Head} % & \multicolumn{3}{c|}{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} % \endgroup % \MakeShortVerb{\|}% % % \begin{Quote} % |\floatsetup[table]{|\hyperref[setup:style]{\texttt{style}}%^^A % |=plain,capposition=TOP}%|${}\equiv\texttt{style=Plaintop}$ % \end{Quote} % \DeleteShortVerb{\|}% % \begingroup % \floatsetup[table]{style=plain,capposition=TOP} % \begin{table}[H] % \begin{floatrow}\tabcolsep2\tabcolsep % \extrarowheight1pt % \ttabbox % {\caption[Long top-aligned caption of table~I key \texttt{capposition=TOP}]%^^A % {The table~I in the row with long, long, long, long, long, long caption, % aligned by the top line}\label{tab:row:tabIII:CAPTOP}}%^^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[Table~II in the row with caption, aligned % at the top line with key \texttt{capposition=TOP}]{Table~II in the row with caption, aligned % at the top line}\label{tab:row:tabIV:CAPTOP}}%^^A % {\begin{tabular}{|l|c|c|c|} % \hline % \multirowthead{2}[-1ex]{Column Head} % & \multicolumn{3}{c|}{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} % \endgroup % \MakeShortVerb{\|}% % % \emph{Note}. The option \texttt{TOP} uses |\label|---|\ref| % mechanism, so, to get necessary result with it, you need to run \LaTeX{} % twice (when you make changes in contents which could change number % of lines you get correct result also on the second run).\pagebreak[3] % % \medskip\noindent % \DescribeMacro{capbesideposition}\label{setup:capbesideposition}%^^A % Defines position of beside captions: vertical and horizontal. % For horizontal position there are defined four options: % \par\RestoreSpaces % \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} % See examples in file \file{frsample02.tex} with all variants of % position of captions beside float objects. % % \medskip\noindent % \DescribeMacro{capbesidewidth}\label{setup:capbesidewidth}%^^A % 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=sidefil} (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{intro:beside:FBwidth} on the page~\pageref{intro:beside:FBwidth}). % % \medskip\noindent % \DescribeMacro{capbesideframe}\label{setup:capbesideframe}%^^A % This boolean key declares whether the beside caption stays near the 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}). % This key was switched on in the example on the page~\pageref{fig:subfig:catsI}. % \newcommand\TEXTBOX[1][]{\par % Here goes first line of text \text\par % There goes second line of text#1\par % Thence goes third line of text \text\par % Hence goes fourth line of text} % \def\text{{\mdseries And more text and some more text and a bit more text and % a little more text and a little piece of text to fill space}} %\begingroup % \begin{Quote} % \meta{preamble} % |\floatsetup[figure]{|\hyperref[setup:style]{\texttt{style}}|=Boxed,|%^^A % \hyperref[setup:frameset]{\texttt{frameset}}|={\fboxsep8pt},| % | |\hyperref[setup:objectset]{\texttt{objectset}}|=justified,|%^^A % |capbesideframe=no,capbesideposition={right,top}}| % |\captionsetup[figure]{...,strut=no}| % \meta{preamble} % |\|\hyperref[setup:thisfloatsetup]{\texttt{thisfloatsetup}}%^^A % |{|\hyperref[setup:capposition]{\texttt{capposition}}|=beside,| % | |\hyperref[setup:floatwidth]{\texttt{floatwidth}}|=sidefil,|%^^A % \hyperref[setup:capbesidewidth]{\texttt{capbesidewidth}}|=4cm}| % |\begin{figure}| % | ...| % | \caption{...}\label{...}| % |\end{figure}| % \end{Quote}% % \floatsetup[figure]{style=Boxed,frameset={\fboxsep8pt},capbesideframe=no,objectset=justified, % capbesideposition={right,top},footnoterule=limited} % \captionsetup[figure]{strut=no} % \thisfloatsetup{capposition=beside,floatwidth=sidefil,capbesidewidth=4cm} % \begin{figure}[H] % {\TEXTBOX} % {\caption{Caption beside framed object, (caption has width 4\,cm), aligned by top of object contents}%%^^A % \label{capbesideframeI}}% % \end{figure} % \begin{Quote} % \meta{preamble} % |\floatsetup[figure]{...,capbesideframe=yes,...}| % |...| % \meta{preamble} % |\|\hyperref[setup:thisfloatsetup]{\texttt{thisfloatsetup}}%^^A % |{|\hyperref[setup:capposition]{\texttt{capposition}}|=beside,| % | |\hyperref[setup:floatwidth]{\texttt{floatwidth}}|=9cm,|%^^A % \hyperref[setup:capbesidewidth]{\texttt{capbesidewidth}}|=sidefil}| % \end{Quote}% % \floatsetup[figure]{capbesideframe=yes} % \thisfloatsetup{capposition=beside,floatwidth=9cm,capbesidewidth=sidefil} % \captionsetup{strut=no} % \begin{figure}[H] % {\TEXTBOX} % {\caption{Caption beside framed object, (object has width 9cm), aligned by top of frame}% % \label{row:text:I}}% % \end{figure} %\endgroup % % \emph{Floatrow note.} For examples above was also used |\captionsetup{strut=no}| sentence, % which cancels struts at the beginning and end of caption (|\strut|: the rules with height % and depth, which are set accordingly to current |\baselineskip|). % % \penalty-5000 % \RestoreSpaces % \subsubsection{Defining Float Foot Position (Legends and Footnotes)}% % \label{sec:footposition} % % \DescribeMacro{footposition}\label{setup:footposition}%^^A % Defines position of |\footnote|'s and |\floatfoot|'s in float box % with above/below captions. % \par\RestoreSpaces % \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}\label{setup:heightadjust}%^^A % Defines whether the common maximum height of objects % or/and captions in the \env{floatrow} environment will be used. It has % following options % \par\RestoreSpaces % \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 \texttt{Plaintop} style); % \item[object] % adjust object heights (e.g. for \texttt{Boxed} style); % \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} % % \addvspace\medskipamount\noindent % \DescribeMacro{valign}\label{setup:valign}%^^A % Defines vertical alignment of % float objects in \env{floatrow} if |heightadjust=all| or % |heightadjust=object|, or |\floatbox| stuff uses \meta{height} % argument with value, which differs from the 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). % \par\RestoreSpaces % \begin{Options}{cc}\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} % % The settings |heightadjust=object,valign=c| were used % in the example with figures \ref{intro:leftfig:valigned} % and \ref{intro:rightfig:valigned}. (Please look at the width options of |\ffigbox| commands: % you may set the widths in this way with \package{calc} package.) %\begin{Quote}% %\meta{preamble}\nopagebreak %|\floatsetup{...,heightadjust=object,valign=c,...}|\nopagebreak %\meta{preamble} % |\begin{figure}| % |\begin{floatrow}| % | \ffigbox[\FBwidth+2cm]| % | {...}| % | {\caption{The left ...}\label{...}}%| %| | % | \ffigbox[\FBwidth+2cm]| % | {\caption{The beside ...}\label{...}}| % | {...}| % |\end{floatrow}| % |\end{figure}| %\end{Quote}% % \begin{figure}[h!]\floatsetup{heightadjust=object,valign=c}\killfloatstyle % \begin{floatrow} % \ffigbox[\FBwidth+2cm] % {\input{BlackCat.picture}} % {\caption{The left beside figure uses settings for vertical centering}% % \label{intro:leftfig:valigned}}% % % \ffigbox[\FBwidth+2cm] % {\caption{The beside figure at the right side uses settings for vertical centering}%^^A % \label{intro:rightfig:valigned}} % {\unitlength1.25\unitlength\input{Cat.picture}} % \end{floatrow} % \end{figure}%^^A % % \subsubsection{Facing Layout} % % \DescribeMacro{facing}\label{setup:facing}%^^A % This key defines whether facing layout is used % for floats. This key works if |twoside| option switched on in % document class. The combination of settings |facing=yes,|\allowbreak % |capbesideposition=inside| (see above) is used in current documentation. % % The most popular usage of |facing| key is in the case, when beside captions are placed to the inner sides % of pages. The figures~\ref{intro:beside} and~\ref{intro:beside:FBwidth} at beginning of the document % illustrate these options---%^^A % \texttt{facing=yes,\allowbreak capbesideposition=inside}. % % \RestoreSpaces % \subsubsection{Defining Float Margins and Object Settings} % \label{sec:set:box} % % \DescribeMacro{margins}\label{setup:margins}%^^A % 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: % \par\RestoreSpaces % \begin{Options}{\OptionLabel} % \item[centering] % float box centered; % \item[raggedright] % float box flushed to the left; % \item[raggedleft] % float box flushed to the right. % \item[...] % You may create your own alignment settings with \\|\DeclareMarginSet| command, see % page~\pageref{ssec:decl:marg}. % \end{Options} % % \noindent % \DescribeMacro{objectset}\DescribeMacro{justification}\label{setup:objectset}%^^A % Defines justification of float object % (float contents). Predefined options are similar to % \texttt{justification=} key in |\captionsetup|. % \par\RestoreSpaces % \begin{Options}{RaggedRigh} % \item[justified] % Blocks (in the case of a~picture or text box) % moved to the left, the text aligned as a normal paragraph (without indentation). (This is the default.) % % \item[centering] % Blocks centered, each line of the object text will be centered. % % \item[raggedright] % Blocks moved to the left, each line of the text shoved to the left margin. % % \item[RaggedRight] % As in previous item, each line of the text shoved to the % left margin, too. % But this time the command |\RaggedRight| of the \package{ragged2e} package % will be used to achieve this. This difference is that this time % the word breaking algorithm of \TeX\ will work inside the text. % % \item[raggedleft] % Blocks moved to the right, % each line of the text shoved to the right margin. % % \item[RaggedLeft] % Analogous to |RaggedRight|. % % \item[...] % You may also create your own settings with |\DeclareObjectSet| command (see % page~\pageref{ssec:decl:oset}) % \end{Options} % % \RestoreSpaces % \subsubsection{Defining Width of Object}\label{sec:wd:object} % % \noindent % \DescribeMacro{floatwidth}\label{setup:floatwidth}%^^A % It is used for redefinition of width of objects. % This key, similar to |captionwidth=|, page~\pageref{setup:capbesidewidth}, % could be used at first % for settings of one float environment: % \begin{Quote} % |floatwidth=.3\hsize| % \end{Quote} % or % \begin{Quote} % |floatwidth=7cm| % \end{Quote} % (see page~\pageref{thisfloatsetup} about settings for current float environment and |\thisfloatsetup|).\pagebreak[1] % % \begingroup % \begin{Quote}\openup-.65pt % \meta{preamble}\nopagebreak % |\floatsetup[figure]{|\hyperref[setup:capposition]{\texttt{capposition}}|=bottom}|\nopagebreak % \meta{preamble} % |\|\hyperref[setup:thisfloatsetup]{\texttt{thisfloatsetup}}%^^A % |[figure]{floatwidth=.3\hsize,capposition=bottom}|\nopagebreak % |\begin{figure}| % | \includegraphics[width=\hsize]{Bear}| % | \caption{...}\label{...}| % |\end{figure}| % \end{Quote}% % % \floatsetup[figure]{capposition=bottom} % \thisfloatsetup{floatwidth=.3\hsize} % \begin{figure}[H] % \setlength\unitlength{\hsize/100}\input{Bear.picture}%^^A % \caption{Graphics with \texttt{floatwidth=0.3}\cmd{\hsize}}% % \label{fig:rot} % \end{figure}% % \endgroup % % \begingroup % \begin{Quote}% % |\|\hyperref[setup:thisfloatsetup]{\texttt{thisfloatsetup}}%^^A % |{floatwidth=.3\hsize,|\hyperref[setup:capbesidewidth]{\texttt{capbesidewidth}}|=sidefil,| % | capposition=beside}| % \end{Quote}% % % \thisfloatsetup{floatwidth=.3\hsize,capbesidewidth=sidefil, % capposition=beside} % \begin{figure}[H] % \setlength\unitlength{\hsize/100}\input{Bear.picture}%^^A % \caption{Caption beside graphics with \texttt{floatwidth=0.3}\cmd{\hsize}}%^^A % \label{fig:bear} % \end{figure}% % \endgroup % % If you use option \texttt{floatwidth=sidefil} for objects with beside % captions (in the case of key \texttt{capbesidewidth=}, % \DescribeMacro{capbesidewidth}%^^A % uses absolute % value, like \texttt{capbesidewidth=4cm}) the object contents (instead of caption) % occupy the rest space of float box (see % figure~\ref{capbesideframeI} on the page~\pageref{capbesideframeI} and appendix, figure~\ref{fig:capbeside:trick} on the % page~\pageref{fig:capbeside:trick}) % % \RestoreSpaces % \subsubsection{Defining Float Separators}\label{sec:set:sep} % % \noindent % \DescribeMacro{floatrowsep}\label{setup:floatrowsep}%^^A % Sets separation material between beside float boxes in one row % inside \env{floatrow} environment (see page~\pageref{sec:floatrow}). % % \addvspace\smallskipamount\noindent % \DescribeMacro{capbesidesep}\label{setup:capbesidesep}%^^A % Sets separation material between object and beside caption. % % \RestoreSpaces % Both key settings work similarly to |labelsep=| key % from |\captionsetup|. %^^A % They use following predefined options: % \begin{Options}{\OptionLabel} % \item[columnsep] % horizontal skip${}={}$|\columnsep| (default); % \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. % \item[...] % You may also create your own settings with\\ |\DeclareFloatSeparators| command (see % page~\pageref{setup:DeclareFloatSeparators}) % \end{Options} % This documentation uses settings |floatrowsep=qquad| for separation of % beside floats and\allowbreak\ |capbesidesep=quad| % for floats with beside captions. % % \subsubsection{Defining Float Rules/Skips}\label{sec:set:rule} % % \DescribeMacro{precode}\label{setup:precode}%^^A % Defines skip, rule or other analogous code above float box. % % \addvspace\smallskipamount\noindent % \DescribeMacro{rowprecode}\label{setup:rowprecode}%^^A % 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}). % % \addvspace\smallskipamount\noindent % \DescribeMacro{midcode}\label{setup:midcode}%^^A % Defines skip, rule or other analogous code between % caption above/below and float object. % % \addvspace\smallskipamount\noindent % \DescribeMacro{postcode}\label{setup:postcode}%^^A % Defines skip, rule or other analogous code below float box. % % \addvspace\smallskipamount\noindent % \DescribeMacro{rowpostcode}\label{setup:rowpostcode}%^^A % 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 \package{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 (default). % \item[...] % You may create your own options with |\DeclareFloatVCode| command, % see page~\pageref{ssec:decl:rule}. % \end{Options} % % \subsubsection{Defining Float Frames} % % \DescribeMacro{framestyle}\label{setup:framestyle}%^^A % Defines type of frame; the % \package{floatrow} package offers only one type of frame: % \par\RestoreSpaces % \begin{Options}{\OptionLabel} % \item[fbox] % Standard frame. % \end{Options} % There are options for additional frames, offered by \package{fr-fancy} % package, installed with \env{floatrow}: % \begin{Options}{\OptionLabel} % \item[colorbox] % colored frame, needs also \package{color} package; % if not defined, there is used |\fbox|; % \item[doublebox] % double frame, needs also \package{fancybox} package; % \item[shadowbox] % frame with shadow, needs also \package{fancybox} package; % \item[wshadowbox] % modified \texttt{shadowbox} frame (frame with ``white shadow''), % needs also \package{fancybox} package; % \end{Options} % % \enlargethispage{\baselineskip} % \addvspace\medskipamount\noindent % \DescribeMacro{frameset}\label{setup:frameset}%^^A % 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{framearound}\label{setup:framearound}%^^A % Declares element of float box to be framed: % \par\RestoreSpaces % \begin{Options}{\OptionLabel} % \item[object] % float object contents; % \item[all] % full float box including object, caption, and any foot text. % \end{Options} % % \addvspace\medskipamount\noindent % \DescribeMacro{framefit}\label{setup:framefit}%^^A % 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 % (see~page~\pageref{fig:plain:MyBoxed} and all boxed figures in current % documentation); % 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}). % \begingroup % \begin{Quote}% % |\floatsetup[figure]{framestyle=fbox,|\hyperref[setup:heightadjust]{\texttt{heightadjust}}|=object,|\nopagebreak % | framearound=object,frameset={\fboxrule1pt\fboxsep10pt},| % | framefit=no}%|$\approx\texttt{style=boxed}$ % |\begin{figure}| % |\ffigbox[4cm]| % | {...}{\caption{...}}| % |\end{figure}| % \end{Quote}% % \floatsetup[figure]{framestyle=fbox,heightadjust=object, % framearound=object,frameset={\fboxrule1pt\fboxsep10pt},framefit=no}%^^A$\equiv\texttt{style=boxed}$ % \begin{figure}[H]% % \ffigbox[4cm] % {\input{Cat.picture}}{\caption{The frame around graphics climbs out to the right and left sides}\label{fig:setup:boxed}} % \end{figure}% % \begin{Quote}% % |\floatsetup[figure]{...,framefit=yes}%|$\approx\texttt{style=Boxed}$ % |\begin{figure}|% % |\ffigbox[4cm]| % | {...}{\caption{...}}|\nopagebreak % |\end{figure}|% % \end{Quote}% % \floatsetup[figure]{framestyle=fbox,heightadjust=object, % framearound=object,frameset={\fboxrule1pt\fboxsep10pt},framefit=yes}%%^^A$\equiv\texttt{style=Boxed}$ % \begin{figure}[H]% % \ffigbox[4cm] % {\input{Cat.picture}}{\caption{The frame around graphics fits to the width of float box (here: caption)}} % \end{figure}% % \endgroup % % \addvspace\medskipamount\noindent % \DescribeMacro{colorframeset}\label{setup:colorframeset}%^^A % Offered by \package{fr-fancy} package\footnote{Use % \texttt{fancyboxes=yes} option in \cmd{\usepackage} line, also you ought to load \package{color} package.} % and also needs % \package{color} package: defines % concrete color box (default is standard |\fbox|). % You may use |\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}\label{setup:captionskip}%^^A % 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} % The settings above are default. % The settings of current documentation: |captionskip=5pt|. % % \addvspace\medskipamount\noindent % \DescribeMacro{footskip}\label{setup:footskip}%^^A % 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}\label{setup:footnoterule}%^^A % Defines type of footnote rule for footnotes inside float environment. % \par\RestoreSpaces % \begingroup % \begin{Options}{\OptionLabel} % \item[normal] % standard \LaTeX{} definition, used in \env{minipage} environments, the % width of it equals to 0.4 of current width 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. % \item[...] % You may create your own options with |\DeclareFloatFootnoterule| command, % see page~\pageref{ssec:fnoterule}. % \end{Options} % \endgroup % % \label{setup:end} % % %^^A ???needed? % \subsubsection{Loading Style for Fancy Boxes} % % \DescribeMacro{fancyboxes}\label{setup:fancyboxes}%^^A % This boolean key loads \package{fr-fancy} package. This key you may use % only in optional argument in |\usepackage| line. % % \RestoreSpaces % \subsubsection{Managing Floats with \texttt{[H]} placement option} % % \DescribeMacro{doublefloataswide}\label{setup:doublefloataswide}%^^A % This boolean key redefines starred float in onecolumn layout % like non-starred ones. (In this case the \texttt{[H]} option works % in starred environments also; layout settings from |\floatsetup| % as \texttt{widefloat} still work.) % % \medskip\noindent % \DescribeMacro{floatHaslist}%^^A % This boolean key adds values of penalties before and after % this ``anchored'' float like in the list environment and cancels % paragraph indentation, if no blank line appears after environment % (see also section~\pageref{sec:listpen}). % % \RestoreSpaces % \subsection{Settings for Current Float Environment} % % \DescribeMacro{\thisfloatsetup}\label{thisfloatsetup}\label{setup: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 %^^A co-named key declarations from settings like %^^A |\floatsetup[|\meta{options}|]|---this command created e.g %^^A for temporary change of float or caption widths: keys %^^A \texttt{captionwidth=} \texttt{floatwidth=} do not used usually %^^A in |\floatsetup| stuff. % % % \RestoreSpaces % \subsection{Clearing of Settings for Current Float Type} % % \DescribeMacro{\clearfloatsetup}\label{setup:clearfloatsetup}%^^A % If you want to get rid of parameters marked % for an automatic use within a particular environment % you can use the command\footnote{Created as additional macro for % \cs{clearcaptionsetup} macro, see also documentation % of \package{caption} package about \cmd{\clearcaptionsetup} command}: % \begin{Quote} % |\clearfloatsetup|\marg{float type}\quad. % \end{Quote} % where \marg{float type}---types as \texttt{figure}, \texttt{widefloat} etc. % % \subsection{Temporary Clearing of All Float Settings}\label{page:killfloatstyle} % % \DescribeMacro{\killfloatstyle}\label{setup:killfloatstyle}%^^A % In some cases like mixed rows of floats where figure stays beside table % you need to cancel layout of ``foreign'' float (see page~\pageref{mixrow}). % The |\killfloatstyle| command is used before any % command of |\floatbox| stuff (see {\sectionname}~\ref{sec:floatbox}). % Other situation---layout with beside captions is quite different from other subtypes: % |[figure]| option of % floatsetup defined with \texttt{style=plain} and % |[cabesidefigure]| defined with \texttt{style=boxed}. % In this case you may define your command, based on predefined % |\fcapside|: % \begin{Quote} % |\newcommand\myfcapside{\killfloatstyle| % | \floatsetup[figure]{style=Boxed}\fcapside}|\quad. % \end{Quote} % The option |[figure]| is necessary if you defined settings for this option % globally in the preamble. % % %^^A !!!for footnotes! % %^^A \newpage % % \subsection{The Default Float Type Settings}\label{sec:default} % % The following keys and options are switched on when \package{floatrow} % package loaded. They equal to \texttt{plain} style: % \begin{Options}{\OptionLabel}\par\small\openup-.5pt % \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] %^^A($\equiv$\texttt{justification=centering}, \package{caption}) % \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 (Do it yourself!)} % % In the next few sections goes a list of commands, which % define key options for |\floatsetup|. % % \subsubsection{Float Style option (\texttt{style=})}\label{ssec:declstyle} % % \DescribeMacro{\DeclareFloatStyle}\label{setup:DeclareFloatStyle}%^^A % 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. % \par\RestoreSpaces %\begin{Quote} %|\DeclareFloatStyle{MyBoxed}{|\hyperref[setup:style]{style}|=Boxed,|\hyperref[setup:captionskip]{captionskip}|=5pt,| %| |\hyperref[setup:frameset]{frameset}|={\fboxrule1pt\fboxsep12pt}}| %|\floatsetup[figure]{style=MyBoxed}| %\end{Quote} % % \begingroup % % \floatsetup[figure]{style=MyBoxed} % \begin{figure}[H] % {\unitlength1.44\unitlength\input{Horse.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: % \par\RestoreSpaces %\begin{Quote} %|\floatsetup[figure]{style=Boxed,captionskip=5pt,| %| frameset={\fboxsep12pt\fboxrule1pt}}| %\end{Quote} % \endgroup % % \subsubsection{Option for Float Rules/Skips (\texttt{precode=} etc.)} % \label{ssec:decl:rule} % % \DescribeMacro{\DeclareFloatVCode}\label{setup:DeclareFloatVCode}%^^A % 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}\openup.5pt % \meta{preamble} % |\DeclareFloatVCode{grayruleabove}%| % | {{\color{gray}\hrule height2.8ptdepth0pt\vskip4pt}}| % |\DeclareFloatVCode{grayrulebelow}%| % | {{\color{gray}\vskip4pt\hrule height2.8ptdepth0pt}}| % |\floatsetup{...,| % | |\hyperref[setup:rowprecode]{rowprecode}|=grayruleabove,|%^^A % \hyperref[setup:rowpostcode]{rowpostcode}|=grayrulebelow}| % \meta{preamble} % |\begin{figure}| % |\begin{floatrow}| % | \ffigbox| % | {...}{\caption{The left ...}\label{...}}%| %| | % | \ffigbox|\nopagebreak % | {...}{\caption{The beside ...}\label{...}}| % | \end{floatrow}|\nopagebreak % |\end{figure}| %| | %| | % |\begin{figure}| % | ...| % | \caption{The figure ...}\label{...}%| % |\end{figure}| % \end{Quote} %\begingroup % \advance\intextsep-.5\intextsep % \begin{figure}[H]\floatsetup{heightadjust=object,valign=c,rowprecode=grayruleabove, % rowpostcode=grayrulebelow}\killfloatstyle % \begin{floatrow} % \ffigbox % {\unitlength.65\unitlength\input{BlackCat.picture}} % {\caption{The left beside figure inside float row with defined row rules above and below}% % \label{intro:leftfig:row}}% % % \ffigbox % {\caption{The beside figure at the right inside float row with defined row rules above and below}%^^A % \label{intro:rightfig:row}} % {\unitlength.85\unitlength\input{Cat.picture}} % \end{floatrow} % \end{figure}%^^A % \begin{figure}[H]\floatsetup{heightadjust=object,valign=c,rowprecode=grayruleabove, % rowpostcode=grayrulebelow}\killfloatstyle % \ffigbox % {\caption{Alone figure with defined row rules above and below}%^^A % \label{intro:alone:row}} % {\unitlength.85\unitlength\input{TheCat.picture}} % \end{figure}%^^A % \begin{Quote}\openup-.65pt % \meta{preamble}\nopagebreak % |...|\nopagebreak % |\floatsetup{...,|\hyperref[setup:precode]{precode}|=grayruleabove,|%^^A % \hyperref[setup:postcode]{postcode}|=grayrulebelow}| % \meta{preamble} % |...| % \end{Quote}%^^A % \advance\intextsep-.5\intextsep % \begin{figure}[H]\floatsetup{heightadjust=object,valign=c, % precode=grayruleabove,postcode=grayrulebelow}\killfloatstyle % \begin{floatrow} % \ffigbox % {\unitlength.65\unitlength\input{BlackCat.picture}} % {\caption{The left beside figure inside float row with defined rules for float box}% % \label{intro:leftfig:box}}% % % \ffigbox % {\caption{The beside figure at the right inside float row with defined rules for float box}%^^A % \label{intro:rightfig:box}} % {\unitlength.85\unitlength\input{Cat.picture}} % \end{floatrow}% % \end{figure}\kern-\lastskip%^^A % \begin{figure}[H]\floatsetup{heightadjust=object,valign=c, % precode=grayruleabove,postcode=grayrulebelow}\killfloatstyle % \ffigbox % {\caption{Alone figure with defined rules above and below for float box}%^^A % \label{intro:alone:box}} % {\unitlength.85\unitlength\input{TheCat.picture}} % \end{figure}%^^A %\endgroup % \RestoreSpaces % \subsubsection{Object Justification Option (\texttt{objectset=})}\label{ssec:decl:oset} % % \DescribeMacro{\DeclareObjectSet}\label{setup:DeclareObjectSet}%^^A % 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 \package{caption} package % as options for \texttt{objectset=} key.}.\par % \strut\par\kern-\baselineskip % % \subsubsection{Option for Float Box Alignment/Settings (\texttt{margins=})} % \label{ssec:decl:marg} % % \DescribeMacro{\DeclareMarginSet}\label{setup:DeclareMarginSet}%^^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 % |\DeclareMarginSet{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{Notes}. 1)\enskip The \package{floatrow} expands some settings of table layout % to the \env{longtable} environment, so you may set |\LTleft| and % |\LTright| parameters inside |\DeclareMarginSet| settings. For example, % \texttt{centering} option was defined like: % \begin{Quote} % |\DeclareMarginSet{centering}{\setfloatmargins{\hfill}{\hfill}%| % | \LTleft=\fill \LTright=\fill}| % \end{Quote} % % 2)\enskip The font settings loaded in |\floatsetup| % in \env{longtable} environment expand to captions. % In this case, when you write something like % \begin{Quote} % |\floatsetup{font={sf,scriptsize,it}...| % \end{Quote} % or % \begin{Quote} % |\floatsetup[longtable]{font={sf,scriptsize,it}...| % \end{Quote} % for floats (or for [long]tables only), you ought to restore correct % font size, family, shape (here) and series for caption contents and write\footnote % {The version 3.1 of \package{caption} package will correct that.}: % \begin{Quote} % |\captionsetup{font={rm,small,up}...| % \end{Quote} % or % \begin{Quote} % |\captionsetup[longtable]{font={rm,small,up}...| % \end{Quote} % % % \subsubsection{Float Separators Options (\texttt{floatrowsep=}, \texttt{capbesidesep=})} % % \DescribeMacro{\DeclareFloatSeparators}\label{setup:DeclareFloatSeparators}%^^A % You may to define separator % between float boxes, or float object and beside caption: % \begin{Quote} % |\DeclareFloatSeparators{columnsep}{\hskip\columnsep}| % \end{Quote} % or more complex, using \package{color} package, and |\floatfacing| macro % (do not forget the \texttt{facing=yes} key). % 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 % \begin{Quote} % \meta{preamble} % |\DeclareObjectSet{colorred}{\parskip2pt\parindent15pt\color{red}}| % |\DeclareMarginSet{hangleft}%| % | {\setfloatmargins| % | {\hskip-\marginparwidth\hskip-\marginparsep}{\hfil}}| % |\DeclareFloatSeparators{colorsep}%| % | {\begingroup\color{blue}%| % | \floatfacing{\hskip6pt\vrule width4.8pt\hskip6pt}%| % | {\hskip6pt\vrule width4.8pt\hskip6pt}%| % | \endgroup}| % |\floatsetup[|\hyperref[setup:widefigure]{\texttt{widefigure}}|]{|%^^A % \hyperref[setup:margins]{\texttt{margins}}|=hangleft,|%^^A % \hyperref[setup:capbesidesep]{\texttt{capbesidesep}}|=colorsep,| % \hyperref[setup:objectset]{\texttt{objextset}}|=colorred,| % | |\hyperref[setup:floatwidth]{\texttt{floatwidth}}|=\textwidth,|%^^A % \hyperref[setup:facing]{\texttt{facing}}|=yes}| % |\captionsetup[figure]{justification=justified,| % | labelfont={magenta,bf},textfont=green,labelsep=newline}| % \meta{preamble} % |\begin{figure*}|\nopagebreak % |...|\nopagebreak % |\end{figure*}| % \end{Quote} % \begingroup % \floatsetup[widefigure]{margins=hangleft,capbesidesep=colorsep,objectset=colorred, % floatwidth=\textwidth,facing=yes,capposition=beside,capbesideposition=left} % \captionsetup[figure]{justification=justified, % labelfont={magenta,bf},textfont=green,labelsep=newline} % \begin{figure*}[H]% % {\TEXTBOX}{\caption[Multi-colored figure and beside caption]{Multi-colored figure with beside caption. And A bit more text, and some more text}} % \end{figure*}% % \endgroup % % \subsubsection{Float Font Option (\texttt{font=})}\label{ssec:declfont} % % \DescribeMacro{\DeclareFloatFont}\label{setup:DeclareFloatFont}%^^A % With this macro you may define new option % for font (\texttt{font=} key) of float contents. This macro works % like |\DeclareCaptionFont| in \package{caption} package. (You may also % use key options declared by |\DeclareCaptionFont| command.) % % To get red color for text in the example above, you may define the red color by following way: % \begin{Quote}% % |\DeclareFloatFont{red}{\color{red}}| % \end{Quote}% % and then % \begin{Quote}% % |\floatsetup[figure]{font={small,red},...}|\quad. % \end{Quote}% % % % \subsubsection{Option for Footnote Rule's Style (\texttt{footnoterule=})} % \label{ssec:fnoterule} % % \DescribeMacro{\DeclareFloatFootnoterule}\label{setup:DeclareFloatFootnoterule}%^^A % You may define new footnoterule (\texttt{footnoterule=} key) like: % \begin{Quote} % |\DeclareFloatFootnoterule{limited}{\kern-3pt| % | \@tempdima.4\columnwidth| % | \ifdim\@tempdima>\frulemax\@tempdima=\frulemax\fi| % | \hrule width\@tempdima\kern2.6pt}| % \end{Quote} % Remember, that summary vertical height for footnote rule must be % equal to~0pt. % %\newpage % \section{Creation of New Float Type}\label{sec:newfloat} % % \DescribeMacro{\DeclareNewFloatType}\label{setup:DeclareNewFloatType}%^^A % For creation of new float type there was created % |\DeclareNewFloatType|\label{FAD:newfloattype} % command which also uses % \meta{key}${}=\nobreak {}$\meta{value} mechanism: % \begin{Quote} % |\DeclareNewFloatType|\marg{type}\marg{options} % \end{Quote} % The \meta{type} argument includes the new float environment name.\\ % The \meta{options} could include following keys: % % \noindent % \DescribeMacro{placement}\label{setup:placement}%^^A % 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}\label{setup:name}%^^A % Defines the name of environment in the caption % label. (As default for caption label is declared the % name of environment.) % % \noindent % \DescribeMacro{fileext}\label{setup:fileext}%^^A % Defines the file extension from which % gathered list of floats. (As default, new captions % are gathered in \texttt{lox}-file). This option is required in the case of % creation of a~separate float lists. % % \noindent % \DescribeMacro{within}\label{setup:within}%^^A % 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}\label{setup:relatedcapstyle}%^^A % In \package{float} package the non-starred % \cmd{\newfloat}/\cmd{\restylefloat} macros attach related % caption style for float styles (see {\sectionname} \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} % % \subsection{How to replace \cmd{\newfloat} with % \cmd{\DeclareNewFloatType}}\label{sec:oldtonew} % % The |\newfloat| command takes three required and % one optional argument: % \begin{Quote} % |\newfloat|\marg{type}^^A % \marg{placement}\marg{ext}\oarg{within} % \end{Quote} % which could be replaced with % \begin{Quote} % |\DeclareNewFloatType|\marg{type}|%| % | {placement=|\meta{placement}|,fileext=|\marg{ext}|,widthin=|\oarg{within}|}| % \end{Quote} % % \clearpage % \section{Borrowed code}\label{sec:borrow} % % \subsection{\package{float} Package: Compatibility}\label{sec:floatst} % % The \package{floatrow} package includes some macros of \package{float} % (version v1.3d, dated 2001/11/08) % with necessary modifications. In the case of loaded \package{float} % package before \package{floatrow} you'll get error message. % % \emph{Note}. % In the case of some packages % could call \package{float} package\footnote{I'm aware about \package{algorithm} % package.} the \package{floatrow} package loads code which emulates % already loaded \package{float} package v1.3, so next requests for % \package{float} are ignored. This will help to avoid strange error messages % in the case of these packages loaded \emph{after} \package{floatrow}. % Please note that packages, which load \package{float} must be loaded % \emph{after} \package{floatrow}. % % I hope that old documents could work with \package{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 \package{floatrow} package % supports obsolete macros but there is no guarantee. See also % section~\ref{float-obs} about translation of these commands % into \cmd{\floatsetup} command.}. % % Sections, signed with ``[\package{float}]'' were borrowed from % \package{float}'s documentation. The section about commands which % describes setting commands of \package{float} package was moved % in the section~\ref{sec:changed} % (subsection~\ref{sec:floatborrowI}, ``The User Interface---New % Floats [\package{float}]''). % % % \RestoreSpaces % \subsubsection{How macros from \package{float} package % work in \package{floatrow}}\label{float-obs} % % The combination of commands |\floatstyle|\marg{style} and any of % \cmd{\newfloat}\marg{float} or\allowbreak\ % \cmd{\restylefloat}\marg{float} commands in \package{floatrow} package % set float layout in the following way: % \begin{Quote} % |\floatsetup|\oarg{float}|{style=|\meta{style}|}| % \end{Quote} % Please note that there is used |\floatsetup|\oarg{float}|{...}| % settings for current type of float, but not |\floatsetup{...}|. % % The |\floatname| command replaces the |name=| key of |\DeclareNewFlotaType| % command. The |\floatplacement|---|placement=| key. % % \subsubsection{Printing of Float List [\package{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 % \begin{Quote} % \hspace*{\MacroIndent}|\listof{|\meta{type}|}{|\meta{title}|}|^^A % \end{Quote} % \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|. % % \noindent\emph{Floatrow note}. % Please remember that for each float type list % you must set file extension where the entries of each float type gathered. % Use key \texttt{fileext=...} in |\DeclareNewFloatType|. % If two or more float types will have the same file % for list of floats, you will get all floats in the % first appeared |\listof|, and all next will be empty. % % \subsubsection{The User Interface---\texttt{[H]} % Placement Specifier [\package{float}]}\label{sec:floatborrowII} % % Many%^^A % \FRmpar{Anchored float}{FAD:AnchoredFloat} % 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. % % \RestoreSpaces % The same effect can be achieved by changing the actual method of % placing floats. David Carlisle's \package{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 \package{here}. David suggests that the \package{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{Quote} % |\begin{table}|\nopagebreak % |\begin{tabular}{cl}| % |\tt t & Top of the page\\| % \dots\ more stuff \dots\\ % |\end{tabular}| % \end{Quote} % (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 \package{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:\nopagebreak % \par\RestoreSpaces % \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} % % \emph{Floatrow note}. Please don't mix meaning of % \texttt{[H]} and \texttt{[h]} options. % Float with \texttt{[h]} and \texttt{[!h]} option, if succeed, appears % \emph{after completing line} of text, % where it was appeared in the source file. That could be visible if you % put float environment at the middle of paragraph. % % The [H] option places the float just \emph{at the point} where it appeared % in the source file, it is used (\emph{but that in books strongly % not recommended}!) for floats after text like ``\dots{}shown in this % \textbf{figure:}'', i.e. the \texttt{[H]} float continues current % paragraph. % % \RestoreSpaces % \subsubsection{The {[H]} % Placement Specifier---Managing of Page Breaks}\label{sec:listpen} % % During usage of |[H]| option I found that it is necessary % to set common penalties before and after ``anchored'' floats. % % The rules for page breaking around such floats similar to % page breaking of lists in the book. % % To follow the idea of |\allowdisplaybreaks| command from % \package{amsmath} package there is created a \emph{beta-temp}\footnote{I % hope that such support sooner or later could appear in % \package{paralist} package and think it is better to follow % grammar of master-package for similar situations.} version % of \package{listpen} package, which offers following commands: % \begin{Options}{\OptionLabel} % \item[\cmd{\allowprelistbreaks}]sets penalty before lists % (and also ``anchored'' floats); % \item[\cmd{\allowpostlistbreaks}]sets penalty after lists; % \item[\cmd{\allowitembreaks}]sets penalty between list items % (surely, this command not for floats!). % \end{Options} % All they set globally, inside group or inside % environments. These penalties are set accordingly to digits % from |[-4]| (never break) to |[4]| (always break). The positive % values of optional argument in these commands analogous to values % of optional arguments in |\pagebreak| command. The negative % ones---to optional arguments |[1]|--|[4]| in |\nopagebreak| command. % The default value of all three commands is |[-1]| which equal % to settings of standard \LaTeX{} classes: \cls{book}, \cls{article} % etc. (|[-1]| option equal to |-\@lowpenalty| value). % % \DescribeMacro{floatHaslist}\label{setup:floatHaslist}%^^A % This is the late attempts of backwards compatibility. The key, if true, % uses list penalties, otherwise anchored float works without any penalty, i.e. like % defined in \package{float} package and in \package{floatrow}'s version 0.0g % and earlier. (I hope there could not much difference, % unless you redefined penalties of lists.) % % Also (added in version 0.1k with current key): % since list environments do \emph{not make indentation} in following % paragraph, in the case of \emph{no blank} line after environment, % the ``anchored'' float environment does % the same, if this option is true. Default value of \texttt{floatHaslist} % is \texttt{false} % (for backward compatibility with previous version 0.1j). % % \DescribeMacro{\floatHpenalties}\label{setup:floatHpenalties}%^^A % This macro, defined with |\renewcommand| can include settings for % list penalties around anchored float. If you define % \begin{Quote} % |\renewcommand\floatHpenalties{\@beginparpenalty\@M}| % \end{Quote} % or, with \package{listpen} package % \begin{Quote} % |\renewcommand\floatHpenalties{\allowprelistbreaks[-4]}|\quad, % \end{Quote} % you'll never get page breaks before anchored float. % % \medskip\noindent % \DescribeMacro{\RestoreSpaces} % There was added one simple command, the external alias % of internal command |\@nobreakfalse|. % It switches off |\if@nobreak| flag. % The main (and most visible) usage of this flag---managing of % vertical spaces between two sectioning commands (it cancels the space before for next % section command of the pair); spaces before list environments (cancels the space % before list just after sectioning command) and other similar cases. % % Usually this flag turned off at the next paragraph (or |\par| command), % but in some cases this ``turn off'' cannot be happen in necessary point. % The |\RestoreSpaces| command would help. % % \subsection{The \package{rotfloat} Package} % % Code of \package{rotfloat} package was also borrowed by \package{floatrow} % package. In the case of loaded \package{rotfloat} package before % \package{floatrow} you will get error message. % % The \package{floatrow} package loads code which pretends that % \package{rotfloat} already loaded, so next loads are ignored. % The \package{rotfloat} allowed in the |\usepackage| % line with \package{rotating} package, which could have options. It is % necessary to delete \package{rotfloat} package from |\usepackage| line % where also \package{rotating} package loaded with options: otherwise % you may get `option clash' error message. % %\clearpage % \section{Style Tandems} % % The next few sections show examples and explain some noticed % features with usage of \package{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 \package{caption} Package}\label{ssec:caption} % % Tested (and compatible) with version v3.0q. % % The \package{caption} package has strong mechanism of creating of % caption layout, so \package{floatrow} addresses the creation of new % caption styles to this package (see documentation for \package{caption} % package). % % The \package{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 \package{subfig} Package}\label{ssec:subfig} % % Tested (and compatible) with version 1.3, % dated 2005/06/28. For the \package{subfig} package there are additional % macros in \package{floatrow} which create of row of subfloats; % put subcaption label beside contents of subfloat; put alone % subcaption label. % % \subsubsection{Additions in \package{floatrow}} % % The example with \cmd{\subfloat}'s (table~\ref{tab:tabIII}). The % setting command in preamble |\floatsetup[table]{style=Plaintop}|%^^A % \FRmpar{Subcaption above subtable}{FAD:subcapabove} % includes also settings for subcaption positions used with % \package{subfloat} package (like |\captionsetup[table]{position=top}| in % \package{caption} package): %\begin{Quote}\obeylines\parskip-.15pt %|\begin{table}\extrarowheight1pt|\nopagebreak %| \floatbox{table}[\FBwidth]| %| {\caption{Two ...}\label{...}}| %| {\begin{subfloatrow}| %| \subfloat[First table]| %\verb+ {\begin{tabular}{|l|c|c|}+ %| ...\end{tabular}}| %| \subfloat[Second table...]| %\verb+ {\begin{tabular}{|l|c|c|}+ %| ...\end{tabular}%| %| \end{subfloatrow}}}| %|\end{table}| %\end{Quote} % \DeleteShortVerb{\|}% % \captionsetup[subtable]{textfont=md} % \begin{table}[h]\extrarowheight1pt\tabcolsep1.25\tabcolsep % \floatbox{table}[\FBwidth] % {\caption{Two \cmd{\subtable}'s % (created with \package{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 \\ % \hline % \end{tabular}}% % \end{subfloatrow}} % \end{table}% % \MakeShortVerb{\|}% % % The \env{subfloatrow} 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{setup:DeclareFloatSeparators}). % %^^A To use \env{subfloatrow} environment load %^^A \package{fr-subfig}\footnote{This package could have only beta-status, %^^A because of it redefines two macros of \package{subfig} package for %^^A creation of subcaption and subfloat boxes.} package installed %^^A together with \package{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 %^^A% \footnote{In version 1.2 the beside boxed and non-boxed subfloat %^^A% contents (like in figure~\ref{fig:subfig:catsI}) could not get aligned %^^A% bottom (top) subcaptions. In this example I ought to use following %^^A% lines for subfigure~\ref{subfig:b}, when \package{pstricks} package is %^^A% loaded:\\[2ex]\ttfamily %^^A% \cmd{\raisebox}\{\cmd{\depth}\}\{\cmd{\input}\{\texttt %^^A% {Cat.picture}\}\}} %\begin{Quote} %\meta{preamble}\nopagebreak %|\floatsetup[figure]{|\hyperref[setup:style]{\texttt{style}}|=Shadowbox,|%^^A % \hyperref[setup:capbesidesep]{\texttt{capbesidesep}}|=columnsep,| %| |\hyperref[setup:capbesideframe]{\texttt{capbesideframe}}|=yes,|%^^A % \hyperref[setup:capbesideposition]{\texttt{capbesideposition}}|={left,top}}| %|\floatsetup[subfigure]{|\hyperref[setup:style]{\texttt{style}}|=plain}| %|\DeclareCaptionLabelFormat{list}{\bothIfFirst{#1}{ }#2)}| %|\captionsetup[subfigure]{labelformat=list,justification=centerlast,| %| strut=no}|\nopagebreak %\meta{preamble} %|\fcapside[\FBwidth]| %| {\begin{subfloatrow}| %| \subfloat[...\label{...}]{...}| %| \subfloat[...\label{...}]{...}%| %| \end{subfloatrow}}| %|{\caption{...}}| %\end{Quote} % \floatsetup[figure]{style=Shadowbox,capbesidesep=columnsep, % capbesideframe=yes,capbesideposition={left,top}} % \floatsetup[subfigure]{style=plain} % \captionsetup[subfigure]{labelformat=list,justification=centerlast,strut=no} % \begin{figure}[h] % \fcapside[\FBwidth] % {\begin{subfloatrow} % \subfloat[One cat\label{subfig:w}]{% % {\input{Cat.picture}}} % \subfloat[Another cat\label{subfig:b}]{\input{TheCat.picture}}% % \end{subfloatrow}} % {\caption[Subfloat row]{Beside % caption vertically top aligned; fancy % \texttt{Shadowbox} layout. There are two subfigures: % \protect\ref{subfig:w} and \protect\ref{subfig:b}}\label{fig:subfig:catsI}} % \end{figure} % % \DescribeMacro{\sidesubfloat} % Another addition in \package{floatrow} for subfloats is command,%^^A % \FRmpar{Subcaption beside subfloat}{FAD:sublabelbeside} % which puts subcaption label beside subfloat. The subcaption label always % appears on the left side. The key |subcapbesideposition=| % \DescribeMacro{subcapbesideposition}\label{setup:subcapbesideposition}%^^A % sets vertical alignment of beside subcaption and subfloat. % The options analogous to options for |capbesideposition=| key: % \par\RestoreSpaces % \begin{Options}{\OptionLabel}\samepage % \item[top] % subcaption label aligned to the top of object; % \item[bottom] % subcaption label aligned to the bottom of object; % \item[center] % subcaption label aligned to the center of float contents. % \end{Options} % % The figure~\ref{fig:subfig:catsII} shows layout with subfloat labels beside. % \begingroup % \begin{Quote}% %\meta{preamble}\nopagebreak %|...| %|\floatsetup[figure]{|\hyperref[setup:style]{\texttt{style}}|=plain,|%^^A % \hyperref[setup:subcapbesideposition]{\texttt{subcapbesideposition}}|=top}| %\meta{preamble} % |\begin{figure}[H]| % | \ffigbox[\FBwidth]| % | {\begin{subfloatrow}| % | \sidesubfloat[]{...\label{...}}%| % | | % | \sidesubfloat[]{...\label{...}}%| % | \end{subfloatrow}}| % |{\caption[...]{...}\label{...}}| % |\end{figure}| % \end{Quote} % \floatsetup[figure]{style=plain,subcapbesideposition=top} % \begin{figure}[h] % \ffigbox[\FBwidth] % {\begin{subfloatrow} % \sidesubfloat[]{% % {\input{Cat.picture}\label{subfig:wI}}} % % \sidesubfloat[]{\input{TheCat.picture}\label{subfig:bI}}% % \end{subfloatrow}} % {\caption[Subfloat row (labels beside)]{Beside caption vertically centered. % There are two subfigures: % \protect\ref{subfig:wI} and \protect\ref{subfig:bI}}\label{fig:subfig:catsII}} % \end{figure} % \endgroup % % \DescribeMacro{\subfloatlabel} % There are cases when usage of something like |\subfloat[]{\label{..}}| % is needed. The first case shows the figure~\ref{fig:subfig:catsIII}---the % funny \env{picture} environment where subfloat labels were |\put| % as a part of subfigures. % Other---when you use mechanism of \package{psfrag} package and replace text entries % from PostScript file with \LaTeX{} ones. Unfortunately, the \package{subfig} package % creates unnecessary spaces around alone subfloat label in the % |\subfloat[]{\label{..}}| combination. The \package{fr-subfig} tries to fix this problem. % % This command based on |\subfloat[]{\label{..}}| sentence and % puts alone subcaption label with necessary number. The full variant % of |\subfloatlabel| % \begin{Quote} % |\subfloatlabel|\oarg{subfloat number}\oarg{label entry} % \end{Quote} % is the abbreviation of the following: % \begin{Quote} % |\setcounter|\marg{sub{\upshape\texttt{\char`\\@captype}}}\marg{subfloat number-1} % |\subfloat[]{\label{|\meta{label entry}|}}| % \end{Quote} % % % \begingroup % \begin{Quote}% %\meta{preamble}\nopagebreak %|...| %|\floatsetup[figure]{|\hyperref[setup:style]{\texttt{style}}|=plain}| %|\DeclareCaptionListOfFormat{comma-separated}{#1,\,#2}| %|\captionsetup[subfigure]{listofformat=comma-separated}| %\meta{preamble} % |\begin{figure}[h]| % |\fcapside[\FBwidth]| % | {\unitlength2\unitlength\fboxsep-.4pt| % | \begin{picture}(90,30)(0,0)| % | \put(0,0){\framebox(40,30)[bl]{}}| %|...| % \end{Quote} % \floatsetup[figure]{style=plain} % \captionsetup[subfigure]{listofformat=comma-separated} % \begin{figure}[h] % \fcapside[\FBwidth] % {\unitlength2\unitlength\fboxsep-.4pt % \begin{picture}(90,30)(0,0) % \put(0,0){\framebox(40,30)[bl]{}} % \put(2,2){\makebox(0,0)[bl]{\subfloat[]{\label{subfig:wII}}}} % \put(0,0){ % \put(8,10){\put(4.5,4.5){\oval(9,9)[t]} % \put(4.5,4.5){\line(0,1){4.5}} % \put(0,4.5){\line(1,0){9}}} % \put(23,10){\put(4.5,4.5){\oval(9,9)[t]} % \put(4.5,4.5){\line(0,1){4.5}} % \put(0,4.5){\line(1,0){9}}}} % % \put(50,0){\framebox(40,30)[bl]{}} % \put(52,2){\makebox(0,0)[bl]{\subfloatlabel[3][subfig:bII]{}%^^A % }}%^^A\label{} % \put(50,0){ % \put(6,18){\put(0,0){\line(2,3){5}} % \put(10,0){\line(-2,3){5}}} % \put(24,18){\put(0,0){\line(2,3){5}} % \put(10,0){\line(-2,3){5}}}} % \end{picture}} % {\caption[The graphic with subfloat labels]{%^^A % Here are two simple subfigures. % First shows cat's eyes (\protect\ref{subfig:wII}), labeled with % \cs{subfloat}\texttt{[]\char`\{\char`\}} macro; % with \cs{subfloatlabel}\texttt{[3][subfig:bII]} sentence were labeled the cat's ears % (\protect\subref{subfig:bII})}%^^A % \label{fig:subfig:catsIII}} % \end{figure} % Please look at the definition of reference to the subfigure, key |listofformat=|. % This format is used, in particular, by |\subref| command: the |\subref{subfig:bII}| gives % reference to the subfigure \subref{subfig:bII}. % \endgroup % % \clearpage % \par\RestoreSpaces % \subsection{The \package{longtable} Package}\label{ssec:longtable} % % Tested with version v4.11, dated 2004/02/01. % % \subsubsection{Additions in \package{floatrow}} % \label{ssec:LTcapwidth} % % There was added a patch to the |\LT@array| macro (\package{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}\label{setup:LTcapwidth}%^^A % \FRmpar{Caption width equals to longtable's}{FAD:LTcapwidth} % This key could have any value, like |5cm| or |\hsize|. In this cases this % key does work of |\LTcapwidth| command. 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.\medskip % % \emph{The addition with version 0.1k}. There is added a % \textrm{beta-temp}\footnote{Again, like with \package{listpen} package, I % hope that such support sooner or later could appear in % \package{longtable} and think it is better to follow % grammar of master-package for similar situations.} package % with simple additions, which allow creation of special head for last % page of longtable environment and special foot for pages before last. % %^^A% \DescribeMacro{\LTlastpage} % \DescribeMacro{\endlasthead} % \DescribeMacro{\endprelastfoot} %^^A% The command |\LTlastpage|, defined by hand, tells to \package{longtable}'s %^^A% redefined macro the number of pages in longtable environment. % The |\endlasthead| command defined for last head of longtable; second command, % |\endprelastfoot|, defined for foot on the page before last. % Since these names of commands ``intrude'' in the \package{longtable} naming % territory they defined if they are still unknown, i.e. the main, % \package{longtable}, package didn't defined them. % The syntax also analogous as for commands |\endhead|, |\endfirsthead| etc. % (See examples and additional explanation in the sample file % \texttt{sample-longtable.tex} file.) % %^^A% \DescribeMacro{\floatfoot} % The footnote stuff inside \env{longtable} works like in main % text and put text of footnotes % at the bottom of page\footnote{See also \env{longtable} documentation.}. % The command for legends or explications, |\floatfoot|, in current version % inside \env{longtable} has emulation mode, and needs stuff, % similar to |\noalign{\floatfoot{...}}|. Since default font definition for explications (|\floatfoot|) also % set to |\footnotesize|, like for footnotes, you may put footnotes-emulations at this % explication block, using |\mpfootnotemark| commands. % % \clearpage % \subsection{The \package{wrapfig} Package}\label{ssec:wrapfig} % % \begingroup % \def\FBaskip{-12pt} % \floatsetup[figure]{style=ruled,relatedcapstyle=yes, % footposition=caption} % \begin{wrapfigure}[10]{O}{40mm} %^^A \ffigbox[40mm] % {\caption{Wrapped plain figure (\package{wrapfig} package)}% % \floatfoot{Plain figure fails with package version % 3.3}\label{fig:wrapfig:WcatI}} % {\unitlength1.095\unitlength % \input{TheCat.picture}} % \end{wrapfigure} % % Tested with version 3.3 dated 1999/10/12 (style from \package{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}%|\nopagebreak % \strut\quad\oarg{number}\marg{placement}|%|\nopagebreak % \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}|\nopagebreak % \meta{figure}\nopagebreak % |\end{wrapfigure}| % \end{Quote} % \endgroup % % \begingroup % \def\FBaskip{-12pt} % \floatsetup[figure]{style=BOXED,frameset={\fboxsep12pt}} % \par\begin{wrapfigure}[12]{o}{0mm} % \ffigbox[44mm] % {\par{\setlength\unitlength{.75\hsize/48}%^^A % \input{Cat.picture}}} % {\caption{Wrapped figure in \cmd{\ffigbox} (\package{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, \package{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 {\sectionname}~\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}|]{...}| % \package{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]{...}| % \package{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 inside |\usepackage| command). % \end{itemize} % % % \emph{Founded limitations}.\nopagebreak % % The usage of plain float environment in version 3.3 will % not succeed with current version of \package{floatrow}---use |\floatbox| % stuff. The version 3.6 allows usage of plain \env{wrap...} % environment with \hyperref[setup:plain]{\texttt{plain}} (or \hyperref[setup:ruled]{\texttt{ruled}}) styles, but % the framed styles, like \texttt{Boxed} (which use key |framefit=yes|, 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 \package{floatflt} package}\label{ssec:floatflt} % % \begin{floatingfigure}[v]{44mm}\def\FBaskip{-2.5pt} % \ffigbox[44mm] % {\setlength\unitlength{\hsize/60}%%^^A % \input{BlackDog.picture}} % {\caption{\hyphenpenalty-100\pretolerance-1% % Wrapped figure inside \env{floating\-figure} environment % (\package{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, like |\ffigbox|). % % % The next limitations could not tied with \package{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). % % \RestoreSpaces % % %^^A\newpage % % \subsection{The \package{picins} Package}\label{ssec:picins} % % \floatsetup[figure]{style=ruled} % % \parpic[l]{{%\def\floatrowsep{}\let\FBiffloatrow\iftrue % \def\FBaskip{6pt}\def\FBbskip{14pt} % \ffigbox[42mm] % {{\setlength\unitlength{20mm/72}%^^A % \input{TheDog.picture}}} % {\caption{Wrap\-ped figure (\cmd{\parpic}); % \cmd{\floatbox}}\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 \package{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: %^^A \begin{Quote}% %^^A |\def\floatrowsep{}|\allowbreak %^^A |\let\FBiffloatrow\iftrue| %^^A \end{Quote}% %^^A to get correct layout. % % The next limitations could not tied with \package{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}%^^A %^^A \input{TheDog.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 \package{rotating} Package and \env{sideways\ldots} % Environment}\label{ssec:rotating} % % Tested with version v2.13 dated Sep. 1992. % % There is example (figure~\ref{fig:rot}) with rotated float, using % \env{sidewaysfigure}. %\begin{Quote} %\meta{preamble} %|\floatsetup[|\hyperref[setup:rotfigure]{\texttt{rotfigure}}|]{|%^^A % \hyperref[setup:style]{\texttt{style}}|=WSHADOWBOX}| %\meta{preamble} %|\begin{sidewaysfigure}\emptyfloatpage| %|\ffigbox[\FBwidth]| %| {...}| %| {\caption{Figure ...}%| %| \label{...}}| %|\end{sidewaysfigure}%| %\end{Quote} % \floatsetup[rotfigure]{style=WSHADOWBOX} % \begin{sidewaysfigure}\emptyfloatpage % \ffigbox[\FBwidth] {\includegraphics[width=4in]{pslearn}} % {\caption{Figure inside \env{sidewaysfigure} environment}% % \label{fig:rot:ii}} % \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 % \par\RestoreSpaces % \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 % (command |\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}|]{...}| package % %^^A 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%^^A % \FRmpar{Continued rotated floats}{FAD:ContRotated} on facing pages, % the better way is to gather them to binder margin. For this reason you % may define\footnote{In case of \package{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 parameter |\textwidth| of the % 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|.%^^A % \FRmpar{Empty page style for rotated floats}{FAD:emptyfloatpage} % It is offered by \package{floatpagestyle} package, (installed with % \package{floatrow} package). Macro |\emptyfloatpage| is abbreviation of % |\floatpagestyle{empty}|. The last macro redefines page style for % the page where \emph{current} float environment appears. % % The version 0.1h patches the core \LaTeX{} macro % |\@outputpage|\footnote{At the start of document % \package{floatpagestyle} package puts additional code at the very beginning % of this output routine.} % and I hope that it could work.\footnote{If you know more honest % way to get the same result---the redefinition of \emph{alone} % \emph{float} page style (in the case when this page can \emph{float} % inside document)---please let me know.} Since this package uses % |\label|---|\ref| mechanism, the |\floatpagestyle| command works % after \emph{second} \LaTeX{} run. % % \RestoreSpaces % \subsection{The \package{lscape} Package and \env{landscape} % Environment}\label{ssec:lscape} % % 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 % \package{lscape} package on the page~\pageref{fig:rotrow:WcatI}, figures % \ref{fig:rotrow:WcatI}--\ref{fig:rotrow:FcatI}): % \par\RestoreSpaces %\begin{Quote} %\meta{preamble} %|\DeclareFloatVCode{lowthickrule}{\kern2pt\rule{\hsize}{.8pt}}| %|\floatsetup[figure]{style=ruled,rowprecode=thickrule,| %| rowpostcode=lowthickrule,capposition=TOP}| %\meta{preamble} %|\begin{landscape}| %|\begin{figure}\emptyfloatpage| %|...| %\end{Quote} % |\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 rotate the whole 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 \package{hypcap} package. % % \subsection{The \package{listings} Package}\label{ssec:listings} % % Tested with version v1.3 dated 2004/09/07.\nopagebreak % % This package has its strong layout mechanism for creation for floating % algorithms itself. The usage of |\lstset| command and \package{caption} % package settings gives you necessary result\footnote{Please note and read % \package{caption} documentation: the co-operation of \package{caption}3.x and % \package{listings} succeeds 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, which get settings from \package{floatrow} package, % there is a limitation: you can't put \env{lstlisting} inside % |\floatbox| contents. % % \subsection{The \package{hyperref} and \package{hypcap} Packages} % % There were tested versions v6.74i (\package{hyperref}) % and v1.3 (\package{hypcap}). % % The \package{floatrow} tries not to expand its code to |\caption| stuff. % I hope that environments supported by \package{floatrow} won't % make harm to \package{caption}---\package{hyperref}/\package{hypcap} tandem. % % \subsection{The Incompatibilities} % % The incompatibilities at first could follow the incompatibilities of % \package{caption} 3.x package: % \begin{Quote} % \package{ccaption}, \package{hvfloat}, \package{nonfloat}, \package{captcont}, \package{ccaption}, % \package{ftcapt}, (\package{hvfloat}), \package{multicap}, \package{topcapt}, \package{nonfloat} % \end{Quote} % % The known incompatibilities of \package{floatrow} package itself: % \quad 1)\nobreak\enskip \package{sidecap} package\footnote{Despite that % I'm trying to follow all 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 \package{floatrow} package doesn't expands its % layouts to \env{SCfigure} and \env{SCtable} environments. % \quad 2)\nobreak\enskip \package{ctable} package; if you used to use % \package{ctable}'s tools, e.g. for tables, please set |\RawFloats[table]| % in the preamble, and remember that commands like |\ttabbox| won't % loose its strength (see also {\sectionname}~\ref{sec:rawfloats}). % % \addtocontents{toc}{\string\pagebreak[3]} % \section{Limitations} % % There are known limitations, which were found during usage of % \package{floatrow}: % \begin{itemize} % %^^A \item % % %^^A Limitations for boxed and ruled styles in beside floats: be % %^^A careful with usage of \emph{alone} minipage environment in object % %^^A or caption in |\floatbox| macro. Since the object and caption are % %^^A created in minipage environment already, the added \texttt{minipage} % %^^A could get wrong layout (vertical alignment). But, as I % %^^A found, you may use a few \texttt{minipage}s in object without harm. % \item % % You cannot use |\floatbox| stuff for floats with \texttt{verbatim} % environment and/or |\verb|. % \item % % This limitation was mentioned above: some tools of the package use % |\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 \package{caption} and % \package{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} % %^^A could get wrong 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 \package{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\begingroup % \ifx\landscape\relax\else % \clearfloatsetup{figure} % \floatsetup[figure]{style=ruled,rowprecode=thickrule, % rowpostcode=lowthickrule,capposition=TOP,margins=hangtoheads, % footposition=caption} % \newlength\Mylen\Mylen\textwidth % % \begin{landscape} % % \begin{figure}\emptyfloatpage % % \begin{floatrow}[4]\label{example:ruledcapposTOP}%^^A % \ffigbox[][][t] % {{\input{TheCat.picture}}%^^A % \footnotetext[1]{The % picture was created with \cmd{\qbezier} % macro}}% % {\caption[Figure in the row~I, top of object box]% % {Figure in the row~I, top of object box\protect\mpfootnotemark}% % \label{fig:rotrow:WcatI}}% % % \floatbox{figure}[2\FBwidth][][b] % {\caption{Figure in the row~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 % \input{Cat.picture}}\footnote[2]% % {Look at funny footnotemark!}} % {\caption{Figure in the row~III, center of object box}% % \label{fig:rotrow:mouseI}\floatfoot{The Mouse-animal image}}% % % \floatbox{figure}[\Xhsize][\Mylen] % {\caption{Figure in the row~IV}\label{fig:rotrow:FcatI}} % {\Resizebox\hsize\vsize{35}{136}{\input{BlackCat2.picture}}} % \end{floatrow} % % \end{figure} % % \end{landscape} %\endgroup\fi\fi % % \clearpage % \suppressfloats[t] % \section{Appendix} % % \subsection{Miscellaneous} % % \subsubsection{Usage of Captionsetup % Inside Floatbox Stuff}\label{ssec:app:besidestart} % % 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{Quote} %|\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{Quote} % % \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 % \input{Cat.picture}} % {\caption[Float in the row with beside caption (graphic box has width of its contents)]{%^^A % Float box (\cmd{\fcapsideleft}) % width of graphics}\label{floatbox:FR:lfig}}% % \hsize\Xhsize \fcapsideright[\hsize] % {\setlength\unitlength{\hsize/61}%^^A % \input{BlackCat.picture}}% % {\caption[Float in the row with beside caption (occupies rest space)]{%^^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{Quote} %|\DeclareCaptionFormat{break}{#1#2\par#3\par}| %\end{Quote} % % For these figures created following \verb|\floatsetup| settings: %\begin{Quote} %|\floatsetup[figure]| %| {style=Boxed,capposition=beside,| %| objectset=centering,floatwidth=\columnwidth,| %| capbesidewidth=5.75cc,capbesidesep=cicero,margins=centering,| %| capbesideframe=yes,floatwidth=sidefil}| %\end{Quote} % The key \texttt{floatwidth=sidefil} 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{Quote} %|\hsize\Xhsize| %\end{Quote} % 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{setup:DeclareMarginSet}). %\begin{Quote} %\meta{preamble} %|\floatsetup[figure]{style=plain}| %\meta{preamble} %|\begin{figure}| %|\floatbox[\capbeside\useFCwidth]{figure}[\FBwidth]| %| ...| %|\end{figure}| %\end{Quote} % \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}%^^A % \input{BlackDog.picture}}} % \end{figure}% % % % \subsubsection{Predefined Beside Caption Width with % The Rest Space for Object}\label{FAD:RestSpaceforObject} % % 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 \package{hyperref} %^^A creates unwanted result with empty argument of caption title. The %^^A same settings used for figures~\ref{floatrow:pre:figI} and %^^A \ref{floatrow:pre:figII}} %\begin{Quote} %\meta{preamble} %|\renewlengthtocommand\settowidth\Mylen{\captionfont\captionlabelfont| %| \figurename\ \thefigure}| %\meta{preamble} %|\floatsetup[figure]| %| {style=Boxed,capposition=beside,objectset=centering,| %| floatwidth=\columnwidth,capbesidewidth=\Mylen,| %| capbesideposition=left,capbesidesep=cicero,| %| margins=centering,capbesideframe=yes,| %| floatwidth=sidefil}| %\end{Quote} % The \verb|\Mylen| dimension was defined as width of caption label. % % \clearfloatsetup{figure} % \floatsetup[figure] % {style=Boxed,capposition=beside,objectset=centering, % floatwidth=\columnwidth,capbesidewidth=\Mylen, % capbesideposition=left,capbesidesep=cicero, % margins=centering,capbesideframe=yes,floatwidth=sidefil} % \renewlengthtocommand\settowidth\Mylen{\captionfont\captionlabelfont % \figurename\ \thefigure} % %\begingroup % \begin{figure}[H] %^^A \captionsetup[capbesidefigure]{format=default,labelsep=none} % \fcapside % {\unitlength1.44\unitlength % \input{Horse.picture}} % {\caption[The box of beside caption has width of caption contents (here: caption label)]{}\label{fig:capbeside:trick}} % \end{figure}% %\endgroup % % % \subsubsection{Caption Beside with Centered Object}\label{FAD:CapandCenterObj} % % The figure \ref{fig:plain:trick} uses tricky float style: %\begin{Quote} %\meta{preamble} %|\DeclareFloatSeparators{mcapwidth}{\hskip-\FCwidth}| %\meta{preamble} %|\floatsetup[figure]| %| {style=plain,capposition=beside,objectset=centering,| %| floatwidth=\columnwidth,capbesidewidth=6cc,| %| capbesideposition=left,capbesidesep=mcapwidth,| %| margins=centering,capbesideframe=yes,| %| floatwidth=sidefil}| %\end{Quote} % 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}[H] % \unitlength1.1\unitlength % \input{Doll.picture} % \caption[Beside caption with ``hidden'' width (\texttt{=6cc}), object is centered at the full hsize]{%^^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}:\label{ssec:app:besidefinish} % \par\RestoreSpaces %\begin{Quote} %|\captionsetup[capbesidefigure]{format=break,labelsep=none,| %| justification=raggedright}| %\end{Quote} % % \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{Quote} %|\setlength\hsize{1.2\hsize}%| %\end{Quote} % as was defined for first figure, or %\begin{Quote} %|\setlength\hsize\Xhsize| %\end{Quote} % before second (here is clear that you can set % |\setlength\hsize{.8\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. % %\begingroup % \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.2\hsize}% % \fcapside % {\setlength\unitlength{\hsize/100}%^^A % \input{Bear.picture}} % {\caption[Left figure with beside caption in the row]{%^^A % }\label{floatrow:pre:figI}} % \setlength\hsize\Xhsize % \fcapside % {\setlength\unitlength{\hsize/44}%^^A % \input{Doll.picture}} % {\caption[Right figure with beside caption in the row]{%^^A % }\label{floatrow:pre:figII}} % \end{floatrow}% % \end{figure}% %\endgroup % There was used following setup for figures: %\begin{Quote} %|\floatsetup[figure]| %| {style=plain,capposition=beside,objectset=centering,| %| capbesideposition=left,capbesidesep=enskip,| %| margins=centering,capbesideframe=yes,floatwidth=sidefil}| %\end{Quote} % % \subsubsection{Caption Above/Below and Caption Beside at % The Float Row}\label{FAD:CapBesideandBelow} % % 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{Quote} %|\begin{figure}\CenterFloatBoxes| %|\begin{floatrow}| %|\hsize1.098\hsize| %| \fcapside[\FBwidth][3.6cm]| %| ...| %| | %| \ffigbox[\Xhsize][3.6cm]| %| ...| %|\end{floatrow}%| %|\end{figure}| %\end{Quote} % % \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}[H]\CenterFloatBoxes % \begin{floatrow} % \hsize1.098\hsize \fcapside[\FBwidth][3.6cm] % {\unitlength1.44\unitlength % \input{Cat.picture}} % {\caption[Float box \cmd{\fcapside} in float row beside \cmd{\ffigbox}]{%^^A % Float box (\cmd{\fcapside}) with beside caption in float row % width float with caption below}\label{flrow:mix:figI}}% % % \ffigbox[\Xhsize][3.6cm] % {\unitlength1.44\unitlength % \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: % \allowprelistbreaks[-4]\par\RestoreSpaces %\begin{Quote} %|\begin{figure}\CenterFloatBoxes|\nopagebreak %|\begin{floatrow}| %| \ffigbox[1.2\FBwidth][3.6cm]| %| ...| %| | %| \hsize\Xhsize| %| \fcapside[\FBwidth][3.6cm]| %| ...| %|\end{floatrow}%| %|\end{figure}| %\end{Quote} % % \begin{figure}[H]\CenterFloatBoxes % \begin{floatrow} % \ffigbox[1.2\FBwidth][3.6cm] % {\unitlength1.44\unitlength % \input{BlackDog.picture}} % {\caption{%^^A % Float box (\cmd{\ffigbox}) % in mirror float row}\label{floatrow:mirrmix:figII}}% % \hsize\Xhsize % % \fcapside[\FBwidth][3.6cm] % {\unitlength1.44\unitlength % \input{Cat.picture}} % {\caption[Float box (\cmd{\fcapside}) in mirror float row]{%^^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: % \par\RestoreSpaces %\begin{Quote} %|\floatsetup[figure]| %| {style=Boxed,frameset={\fboxsep4pt},captionskip=5pt,| %| capposition=bottom,objectset=centering,capbesidewidth=none,| %| capbesideposition=inside,capbesidesep=enskip,margins=centering,| %| capbesideframe=yes}| %\end{Quote} % % \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{Quote} %|\begin{figure}\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{Quote} % % \floatsetup[figure]{heightadjust=none} % \begin{figure}[H]\BottomFloatBoxes % \begin{floatrow} % \hsize1.2\hsize % \ffigbox[][6.7cm] % {\setlength\unitlength{\hsize/58}%^^A % \input{Mouse.picture}}% % {\caption[Photo-album-like layout: left float]{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[Photo-album-like layout: upper right float]{%^^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[Photo-album-like layout: lower right float]{%^^A % Lower float in right column}% % \label{floatrow:threemirr:figII}}}% % \end{floatrow}% % \end{figure} % % The ``mirror'' layout created by following commands: % \par\RestoreSpaces %\begin{Quote} %|\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{Quote} % 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 \package{caption}'s version not older than 3.0d.} % (here were used \package{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[Photo-album-like layout, mirror: upper left float]{%^^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[Photo-album-like layout, mirror: lower left float]{%^^A % Float box in photo-album-like layout: lower float in the left column}% % \label{floatrow:three:figII}}\vskip0pt}\floatrowsep % % \ffigbox[\Xhsize][7cm-11pt] % {\setlength\unitlength{\hsize/58}%^^A % \input{Mouse.picture}}% % {\caption[Photo-album-like layout, mirror: right float]{%^^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?). % % \clearpage % \par\RestoreSpaces % \subsection{Sample files}\label{sec:samples} % % 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 % \package{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 % \package{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} % % There is also added sample file \file{sample-longtable.tex} which % uses \emph{beta-temp} package-patch \package{fr-longtable} % with defined commands |\endlasthead| and |\endprelastfoot| which % defines captions for continued and last pages of long table in three % possible ways. %\vfil % % \subsection{Obsolete Commands}\label{sec:changed} % % \begin{small} % \subsubsection{The User Interface---New Floats [\package{float}]} % \label{sec:floatborrowI} % % \DescribeMacro{\newfloat} % The most important command in \package{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}\advance\itemsep2ptplus2pt % \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).\pagebreak[2] % \begin{Example}[H] % \begin{Quote}\openup-.5pt % |\floatstyle{ruled}| % |\newfloat{Program}{tbp}{lop}[section]|\pagebreak[3] % \dots\ loads o' stuff \dots % |\begin{Program}| % |\begin{verbatim}| % \dots\ program text \dots % |\end{verbatim}| % |\caption{|\dots\ caption \dots|}| % |\end{Program}| % \end{Quote} % \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}\pagebreak[3] % \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} % % \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 \package{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 \package{caption} 3.x package. % To emulate \texttt{boxed} style from \package{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}[h] \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{\|} % % \end{small}\pagebreak[2] %\RestoreSpaces % \begingroup\extrarowheight1.75pt\small\openup-.5pt\tabcolsep.5\tabcolsep\LTpre=0ptplus3pt\LTpost\LTpre % \subsubsection{The \cmd{\floatsetup} keys, renamed or deleted after version 0.1b} % % \parindent0pt % \begin{longtable}{@{\extracolsep{-.3ptplus1fill}}| % >{\rightskip0ptplus1fil}p{.35\hsize}| % >{\rightskip0ptplus1fil}p{.6\hsize}|} % \multicolumn{2}{c}{Removed or changed commands} % \\\hline % \thead{Command} % & % \thead{Changed to} % \\\hline % \endhead % \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{longtable} % % \vskip1pt % \begin{longtable}{@{\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 % \endhead % \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 % \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 % \extrarowheight0pt\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{longtable} % % \RestoreSpaces\vskip1pt\pagebreak[3] % % \begin{longtable}{@{\extracolsep{-.3ptplus1fill}}| % >{\rightskip0ptplus1fil}p{.35\hsize}| % >{\rightskip0ptplus1fil}p{.6\hsize}|} % \multicolumn{2}{c}{Renamed keys} % \\\hline % \thead{Key} % & % \thead{Changed to} % \\\hline % \endhead % \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 \package{caption} % package)\\ % \texttt{raggedright},\\ \texttt{raggedleft},\\ \texttt{centering} % \end{tabular} % \\\hline % \end{longtable} % \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 \package{float} and % \package{rotfloat} are loaded or not. If yes, there go error messages. % \changes{v0.1d}{2005/02/07}{Added test for \package{rotfloat} package} % \changes{v0.1j}{2006/03/12}{Try to say `good bye' % in the case of \package{float} or/and \package{rotfloat} loaded before} % \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}{}} \@ifundefined{float@caption}{% \@ifundefined{rotfloat@float}{}% {\PackageError{floatrow}{Do not use rotfloat package with floatrow}{}% \@namedef{opt@floatrow.sty}{}\endinput}}% {\PackageError{floatrow}{Do not use float package with floatrow}{}% \@namedef{opt@floatrow.sty}{}\endinput} % \end{macrocode} % % The next lines emulate already loaded \package{float} and \package{rotfloat} % packages. % % If in preamble, after loading of \package{floatrow} package is used % |\usepackage| with \package{float} package (the \package{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 \package{rotfloat} package allows to transfer options of % \package{rotating} package in the case of appearance % of both packages in one |\usepackage| line. Thus, if someone loads % options in \package{rotating}---\package{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 option in this way will do not harm % to document, but now you aware of ``non-necessity'' of loading % of \package{rotfloat} package. % \changes{v0.1e}{2005/03/22}{Restoring code of emulation of loading % for \package{float} and \package{rotfloat} packages.} % \changes{v0.1f}{2005/06/14}{The version, date and description of % \package{float} and \package{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 \package{keyval} package. % \changes{v0.1c}{2004/10/22}{Bug fix: added request for \package{keyval} % package.} % \begin{macrocode} \RequirePackage{keyval} % \end{macrocode} % % Here goes request for \file{caption3} file, core part of \package{caption} % package. % \changes{v0.1f}{2005/06/14}{Added request for \package{caption3} package.} % \changes{v0.1j}{2006/06/18}{Added date request for \package{caption3} % package.} % \changes{v0.2a}{2007/08/24}{Added check and error message for version older 3.0q} % The |\caption@keydepth| is used as test for \package{caption}'s version 3.0q. % \begin{macrocode} \RequirePackage{caption3} \@ifpackagelater{caption3}{2007/04/11 v3.0q}{}{\PackageError {floatrow}{For a successful cooperation we need at least\MessageBreak version `2007/04/11 v3.0q' of package caption,\MessageBreak but only version\MessageBreak `\csname ver@caption.\@pkgextension\endcsname'\MessageBreak is available}\@eha} \providecommand*\caption@fnum[1]{% \caption@lfmt{\@nameuse{#1name}}{\@nameuse{the#1}}} % \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 \package{caption}, \package{hyperref}, (\package{pdfpages}) packages.} % \begin{macrocode} \@ifdefinable\float@caption{\let\float@caption\@caption} % \end{macrocode} % \end{macro} % % \subsection{Borrowed Code (with original comment) from \package{float} % package} % % From this point starts \package{float} package's core code (version 1.3). % The necessary explanation of macro code also borrowed from \package{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. % % \begin{macro}{\flrow@package} % {\em \textit{Floatrow note.} \package{float}'s error message % (the command \cmd{\float@error}\meta{arg}) changed to % \package{floatrow}'s one (\cmd{\flrow@error}\meta{arg}).} % \changes{v0.1k}{2007/01/20}{Added % macro analogous to \cmd{\caption@package}.} % \begin{macrocode} \newcommand\flrow@package{floatrow} % \end{macrocode} % \end{macro} % % \begin{macro}{\flrow@error} % \changes{v0.1k}{2007/01/20}{Created more % universal macro for all \cmd{\PackageError}s.} % \begin{macrocode} \newcommand*\flrow@error[1]{% \PackageError\flrow@package{#1}\flrow@eh} % \end{macrocode} % \end{macro} % % \begin{macro}{\flrow@eh} % The |\caption@eh|-analog. % \changes{v0.1k}{2007/01/20}{Added % special help for \cmd{\PackageError}s.} % \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{macrocode} \newcommand\floatstyle[1]{\@ifundefined{flrow@sty@#1}% {\flrow@error{Unknown float style `#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}. |\|\meta{float}|name| expands % to the name that appears in \meta{float} captions, e.g., `Figure'. % (This is our own definition.) % and |\@floatboxreset| macros. % \changes{v0.1p}{2007/06/24}{The \cmd{\fname@}\meta{floatname} changed to % \cs{}\meta{floatname}\texttt{name} macros redefined locally (AS).} % \begin{macrocode} \newcommand\floatname[2]{\@namedef{#1name}{#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 \package{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 \package{wrapfig}'s floats).} % \changes{v0.1h}{2005/10/02}{Added setting for \cmd{\linewidth}} % \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 \linewidth\hsize \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.} % \changes{v0.1k}{2007/01/18}{Deleted \cmd{\global}---it could make macro universal for multilevel usage.} % \begin{macrocode} \newcommand\killfloatstyle{\FBbuildtrue \if@@FS\hsize\FB@wd\fi\@@FSfalse} % \end{macrocode} % \end{macro} % % \begin{macro}{\RawFloats} % This macro restores plain \LaTeX{} mode for floats. i.e. returns core % macros for commands of float environment. % Non-optional variant can be used inside environments only. % Variant with option better to be used in preamble. (Option allow % to restore plain \LaTeX{} mode for necessary float type.) % \changes{v0.1f}{2005/06/14}{Added Macro which restores raw float % behavior.} % \changes{v0.1g}{2005/07/15}{Added \cmd{\@parboxrestore} macro.} % \changes{v0.1k}{2007/01/18}{Added optional arguments which % allow usage of macro outside any float.} % \begin{macrocode} \newcommand\RawFloats{\@ifnextchar[%] \flrow@rawfloatschk\flrow@rawfloats} \newcommand\flrow@rawfloats{\killfloatstyle\@parboxrestore \let\@makecaption\FR@makecaption \expandafter\ifx\csname end\@captype\endcsname\float@endH \@namedef{end\@captype}{\FBbuildfalse\float@endH}% \else \@namedef{end\@captype}{\end@float}% \fi \@namedef{end\@captype*}{\end@dblfloat}% \@ifundefined{@rotfloat}{}{% \@namedef{endsideways\@captype}{\end@rotfloat}% \@namedef{endsideways\@captype*}{\end@rotdblfloat}% }% \@ifundefined{wrapfloat}{}{% \@namedef{endwrap\@captype}{\endwrapfloat}% }} \@ifdefinable\flrow@rawfloatschk{} \def\flrow@rawfloatschk[#1]{\@ifnextchar[%] {\flrow@RawFloats[#1]}{\flrow@@RawFloats#1,;}} \@ifdefinable\flrow@RawFloats{} \def\flrow@RawFloats[#1][#2]{\flrow@RawFloats@[#1]#2,;} \def\flrow@RawFloats@[#1]#2,{% \caption@ifinlist{#2}{float}{\@namedef{#1}{\@float{#1}}% }{\caption@ifinlist{#2}{widefloat,wide}{\@namedef{#1*}{% \let\@xdblfloat\@xfloat\@dblfloat{#1}}% }{\caption@ifinlist{#2}{rotfloat,rot}{% \@ifundefined{@rotfloat}{}{\@namedef{sideways#1}{\@rotfloat{#1}}}% }{\caption@ifinlist{#2}{widerotfloat,widerot}{% \@ifundefined{@rotfloat}{}{\@namedef{sideways#1*}{\@rotdblfloat{#1}}}% }{\caption@ifinlist{#2}{wrapfloat,wrap}{% \@ifundefined{wrapfloat}{}{\@namedef{wrap#1}{\wrapfloat{#1}}}}% }{\caption@ifinlist{#2}{all,allfloats}{% \flrow@@RawFloats{#1}% }{\flrow@error{Undefined float subtype `#2'}% }}}}}\@ifnextchar;\@gobble{\flrow@RawFloats@[#1]}} \@ifdefinable\flrow@@RawFloats{} \def\flrow@@RawFloats#1,{% \@namedef{#1}{\@float{#1}}% \@namedef{#1*}{\let\@xdblfloat\@xfloat\@dblfloat{#1}}% \@ifundefined{@rotfloat}{}{% \@namedef{sideways#1}{\@rotfloat{#1}}% \@namedef{sideways#1*}{\@rotdblfloat{#1}}% }% \@ifundefined{wrapfloat}{}{% \@namedef{wrap#1}{\wrapfloat{#1}}% }\@ifnextchar;\@gobble\flrow@@RawFloats } % \end{macrocode} % \end{macro} % % \begin{macro}{\flrow@Raw@restyle} % \changes{v0.1k}{2007/05/24}{The key-val support for raw float mode. % Macro \cmd{\flrow@Raw@restyle} replaces \cmd{\flrow@restyle}}. % This macro is used by |rawfloats=| key. % \begin{macrocode} \newcommand\flrow@Raw@restyle[1]{% \@namedef{#1}{\@float{#1}}% \@namedef{#1*}{\@dblfloat{#1}}% \@namedef{end#1}{\end@float}% \@namedef{end#1*}{\end@dblfloat}% \@ifundefined{@rotfloat}{}{% \@namedef{sideways#1}{\@rotfloat{#1}}% \@namedef{sideways#1*}{\@rotdblfloat{#1}}% \@namedef{endsideways#1}{\end@rotfloat}% \@namedef{endsideways#1*}{\end@rotdblfloat}% }% \@ifundefined{wrapfloat}{}{% \@namedef{wrap#1}{\wrapfloat{#1}}% \@namedef{endwrap#1}{\endwrapfloat}% }% } % \end{macrocode} % \end{macro} % % \begin{macro}{\FB@capsetup} % This only additional definition which is used with \package{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 \package{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. \package{wrapfig}, % which uses |\float@restyle| as recognition of \package{float} v1.3 package) % \package{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.} % Here added flag which, if true, allows redefinition of starred float % environment like non-starred but with special layout. This redefinition % allows usage of |[H]| option. % \changes{v0.1k}{2007/01/18}{Added \cmd{\FR@ifdoubleaswide} flag: % starred floats could be used for wide alternative layout} % \begin{macrocode} \let\@xdblfloat\@xfloat\relax \FR@ifdoubleaswide \if@twocolumn\else\let\@dblfloat\@float\fi\fi \@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 (\package{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 \package{rotfloat}'s definition form % for wide rotated float} % \begin{macrocode} \ifx\@rotdblfloat\undefined \@namedef{sideways#1*}{% \flrow@error{% You need rotating version 2.10 or newer to do this}% \@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 (\package{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 \package{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@}% % \end{macrocode} % \changes{v0.1k}{2007/05/24}{Commented \cmd{\capstart} for a while} % \begin{macrocode} % \@ifundefined{capstart}{}{\capstart}% \the\FR@everyfloat\ignorespaces}% }{}% \@namedef{wrap#1}{\killfloatstyle\def\@captype{#1}% % \end{macrocode} % ^^A The \cmd{\FloatHBarrier} for \package{flafplins}. % ^^A \changes{v0.1j}{2006/03/12}{Added \cmd{\FloatHBarrier} in wrapfloat} % \begin{macrocode} \FR@redefs\FBc@wd\z@ \flrow@setlist{{#1}{wrapfloat}{wrap#1}}% % \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\flrow@typ@tmpset\undefined \global\let\WF@box\@currbox \fi}% \@ifnextchar[\WF@wr{\WF@wr[]}}%] % \expandafter\let\csname endwrap#1\endcsname\endwrapfloat} \@namedef{endwrap#1}{\endwrapfloat \@ifundefined{FloatHBarrier}{}\FloatHBarrier }} %^^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 \package{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).} % \changes{v0.1k}{2007/05/24}{The check macro for subfig package % changed.} % \begin{macrocode} \@ifundefined{sf@@@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 \package{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 \package{here}. % The following is thus lifted from \package{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 \package{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} %^^A {\em\textit{Floatrow note}. If we want to put barrier %^^A (i.e. use beta-package \package{flafplins}).} % \changes{v0.1j}{2006/03/12}{Added \cmd{\FloatHBarrier}} % \begin{macrocode} \@ifundefined{FloatHBarrier}{}\FloatHBarrier % \end{macrocode} % Locally redefine the end of the environment. % \changes{v0.1k}{2007/05/24}{Added \cmd{\FR@ifdoubleaswide} to allow usage of [H] option in wide floats} % \begin{macrocode} \expandafter\let\csname end#1\endcsname\float@endH \FR@ifdoubleaswide \expandafter\let\csname end#1*\endcsname\float@endH \fi % \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. % \changes{v0.1h}{2005/10/25}{Added special settings for H-floats} % \begin{macrocode} \let\@currbox\float@box \flrow@setlist{{floatH}{#1H}}% % \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 \package{floatrow} always uses preloaded style % the stuff of flag \cmd{\@flstyle} moved out.} % Here added zeroing of list margins in the case of appearance of |\floatbox| % inside list environment. % \changes{v0.1h}{2005/10/02}{Added setting for \cmd{\linewidth}} % \changes{v0.1k}{2007/05/24}{Margins zeroed for the case of appearance % of \cmd{\floatbox} inside list environment.} % \begin{macrocode} \def\@captype{#1}\setbox\@floatcapt=\vbox{}% \setbox\@currbox\color@vbox\normalcolor \vbox\bgroup \hsize\columnwidth \linewidth\columnwidth \@parboxrestore\leftmargin\z@\rightmargin\z@ \@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 \package{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 \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. % \changes{v0.1h}{2005/10/02}{Added setting for \cmd{\linewidth}} % \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\linewidth\hsize \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 \flrow@error{You didn't define width of caption\MessageBreak for plain float environment.}% \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. % \changes{v0.1h}{2005/10/02}{Added setting for \cmd{\linewidth}} % \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\linewidth\hsize\columnwidth\FBc@wd\linewidth\hsize \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 \package{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. % Here added zeroing of list margins in the case of appearance of |\floatbox| % inside list environment. % \changes{v0.1f}{2005/06/14}{The argument used for defining of % dimension---restored for (\package{float}) compatibility with % \package{hyperref} package.} % \changes{v0.1k}{2007/05/24}{Margins zeroed for the case of appearance % of \cmd{\floatbox} inside list environment.} % \begin{macrocode} \newcommand\flrow@FB[1]{\vbox{\@tempdima=#1\vskip\FBaskip \@parboxrestore\leftmargin\z@\rightmargin\z@ \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---restored for (\package{float}) compatibility with % \package{hyperref} package.} % \changes{v0.1k}{2007/05/24}{Margins zeroed for the case of appearance % of \cmd{\floatbox} inside list environment.} % Here added zeroing of list margins in the case of appearance of |\floatbox| % inside list environment. % \begin{macrocode} \newcommand\flrow@FC[1]{\vbox{\@tempdima=#1\@parboxrestore \leftmargin\z@\rightmargin\z@\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. % \changes{v0.1h}{2005/10/02}{Added setting for \cmd{\linewidth}} % \begin{macrocode} \newcommand\FBafil{\vfill}\newcommand\FBbfil{\vfill} \newcommand\FBw@box[1]{\hsize#1\columnwidth#1\linewidth#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@{\global\let\flrow@typ@tmpset\undefined \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 % \end{macrocode} % Here added zeroing of list margins in the case of appearance of |\floatbox| % inside list environment. % \changes{v0.1k}{2007/05/24}{Margins zeroed for the case of appearance % of \cmd{\floatbox} inside list environment.} % \begin{macrocode} \@parboxrestore\leftmargin\z@\rightmargin\z@ \@@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@{\global\let\flrow@typ@tmpset\undefined \FB@frame{\begin@FBBOX \adj@dim\FBo@wd+\FBo@wadj=\hsize \settowidth\@tempdimb{\floatcapbesidesep}\advance\hsize\@tempdimb % \end{macrocode} % \changes{v0.1k}{2007/05/24}{Margins zeroed for the case of appearance % of \cmd{\floatbox} inside list environment.} % Here added zeroing of list margins in the case of appearance of |\floatbox| % inside list environment. % \begin{macrocode} \advance\hsize\FBc@wd\@parboxrestore\leftmargin\z@\rightmargin\z@ \@@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 \package{rotating} used, % in replaces usage of |\float@makebox| to \LaTeX's standard box |\@currbox| % |\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 \package{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} % \changes{v0.1h}{2005/10/25}{Added penalties \cmd{\@beginparpenalty} % and \cmd{\@endparpenalty}} % \changes{v0.1k}{2007/01/14}{Added \cmd{\floatHpenalties} settings and flag for % usage of list penalties} % There is also added flag for loading of list penalties around anchored float. % \begin{macrocode} \newcommand\floatHpenalties{} \newcommand\float@endH{\@endfloatbox\par \FR@iffloatHaslist \floatHpenalties\relax \addpenalty\@beginparpenalty \fi \vskip\intextsep \ifFBbuild\setbox\@currbox\float@makebox\columnwidth\fi \box\@currbox\par \FR@iffloatHaslist\addpenalty\@endparpenalty\@endpetrue\fi \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{\package{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 \package{float} are used {\em[\dots]}. % {\em \textit{Floatrow note.} The \package{float}'s caption layout stuff % replaced by \package{caption}'s |\captionsetup|. In \package{floatrow} % package redefined |\@makecaption| command (\LaTeX's definition % of |\caption| 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---\package{floatrow} package uses \package{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{Unknown float style `#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 \package{floatrow} message about % finishing of loading of \package{float} package's corrected code.} % \begin{macrocode} \PackageInfo{floatrow}{Modified float package code loaded} % \end{macrocode} % % \subsection{Borrowed Code (with original comment) % from \package{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 \package{rotfloat} (|\flrow@restyle| stuff) purposes % were made above (in \package{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 \package{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 % \package{rotfloat} package. And here goes message about loading of % \package{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 \package{footmisc} v5.3, these macros are defined at the beginning of % document in the case only if \package{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 \package{ccaption}'s |\legend| % macro and uses its style. It uses |\caption| mechanism. % \changes{v0.1p}{2007/06/24}{The creation of float foot contents extracted % for usage in longtable.} % \begin{macrocode} \captionsetup[floatfoot]{labelformat=empty,labelsep=none} \newcommand\floatfoot{\@ifstar {\def\FR@tmp{\@parboxrestore\captionfootfont}\floatfoot@}% {\def\FR@tmp{\captionfootfont}\floatfoot@}} \newcommand\floatfoot@[1]{% \global\setbox\flrow@foot\vbox{% \floatfoot@box{#1}}}% % \end{macrocode} % For the case of usage outside of |\floatbox| and float environments. E.g. % inside \env{longtable} environment. % \begin{macrocode} \newcommand\floatfoot@box[1]{% \@ifundefined{@captype}{\def\@captype{floatfoot}}{}% % \end{macrocode} % The |\if@@FS| flag stored for \env{wrap...} environments. % \changes{v0.1h}{2005/10/02}{Added setting for \cmd{\linewidth}} % \begin{macrocode} \if@@FS\hsize\columnwidth\linewidth\columnwidth\fi \@parboxrestore\reset@font\color@begingroup % \end{macrocode} % Apply current float settings. % \begin{macrocode} \caption@setoptions{\@captype}% % \end{macrocode} % Apply floatfoot settings. % \begin{macrocode} \caption@setoptions{floatfoot}% % \end{macrocode} % No captionlabel. % \begin{macrocode} \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: % \begin{Quote}% % |\newfloatcommand{|\meta{command}|}{|\meta{captype}|}|^^A % |[|\meta{preamble}|][|\meta{default width}|]| % \end{Quote}% % 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{Quote} % |\newfloatcommand{ffigbox}{figure}| % |\newfloatcommand{ttabbox}{table}[\captop][\FBwidth]| % \end{Quote} % % 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}{}% {\flrow@error{\string#1 already defined}}% \@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 % \end{macrocode} % \changes{v0.1k}{2007/05/24}{The option with settings for float % box saved to temporary command} % \begin{macrocode}% \def\FB@tmpset{#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|. % \changes{v0.1h}{2005/10/25}{The \cmd{\FR@loc@refcnt} uncommented.} % \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. % \changes{v0.1h}{2005/10/25}{The \cmd{\refstepcounter} and % \cmd{\refsteponlycounter} localized (for \cmd{\ContinuedFloat} % with \package{subfig}).} % \changes{v0.1p}{2007/06/24}{The \cmd{\stepcounter} also % localized (for \cmd{\ContinuedFloat} % with \package{subfig} and \package{caption}).} % \begin{macrocode} \newcommand\FR@loc@{\let\label\@gobble \let\refstepcounter\FR@loc@refcnt \let\stepcounter\FR@loc@refcnt \let\refsteponlycounter\FR@loc@refcnt % \end{macrocode} % The |\cl@@ckpt| is macro which ``globalizes'' all counters. 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 (\package{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. % \changes{v0.1h}{2005/10/31}{The \cmd{\caption@lfmt} used instead of % \cmd{\fnum@}\cmd{\@captype}.} % \changes{v0.1p}{2007/06/24}{Added \cmd{\relax} for compatibility with % caption 3.1.} % \begin{macrocode} \def\FBtmp@cap#1[#2]#3{\sbox\@tempboxa % {\caption@@@make{\csname fnum@\@captype \endcsname}{#3}}% {\caption@@@make{\caption@lfmt{\@nameuse{\@captype name}}% {\@nameuse{the\@captype}}\relax}{#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{code: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. % \changes{v0.1h}{2005/10/02}{Added settings for \cmd{\linewidth}} % \begin{macrocode} \FBifcapbeside\hsize\FB@wd\fi \linewidth\hsize % \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\linewidth\hsize \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\linewidth\hsize \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}.} % \changes{v0.1h}{2005/10/30}{The \cmd{\refstepcounter} and % \cmd{\refsteponlycounter} localized (for \cmd{\ContinuedFloat} % with \package{subfig}).} % \begin{macrocode} \ifx\FCwidth\relax \setbox1\vbox{\FR@loc@ \let\caption\FB@caption \let\@caption\FBtmp@cap #2}% \FBc@wd=\@tempdimb \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 are manipulating with metre dimensions (I hope you're not % preparing a metre book!) or set more than % |5\FBwidth| (|5\FBheight|) in \meta{width} (\meta{height}) option. % \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. % \changes{v0.1k}{2007/05/24}{The option with settings for float % box saved to temporary command} % \changes{v0.1p}{2007/06/24}{Added \cmd{\floatbox@depth} counter for possible % multilevel including box in box} % \begin{macrocode} \newcommand\floatbox[2][]{\begingroup \def\FB@tmpset{#1}\def\@captype{#2}% \@ifnextchar[{\@floatbox}{\@floatbox[]}} \@ifdefinable\@floatbox{}\@ifdefinable\@@floatbox{} \def\@floatbox[#1]{% \@ifnextchar[{\@@floatbox[#1]}{\@@floatbox[#1][]}} \@ifdefinable\floatbox@depth{\newcount\floatbox@depth} \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{\advance\floatbox@depth\@ne \@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 \ifcase\floatbox@depth\or \flrow@setlist{{\@captype}}\or \flrow@setlist{{subfloat}{subtype}{sub\@captype}}\fi \FRifFBOX\@@setframe\fi\@@FStrue \fi % \end{macrocode} % \changes{v0.1k}{2007/05/24}{Put temporary command with option settings % for float box} % \begin{macrocode} \FB@tmpset % \end{macrocode} % Then load settings for beside captions, in the case we use this % layout---the beside caption could use a bit different layout. % \begin{macrocode} \FBifcapbeside\flrow@FClist\fi % \end{macrocode} % Restoring standard justified paragraph settings${{}+{}}$|\parindent\z@|. % \changes{v0.1f}{2005/06/14}{Added zeroed \cmd{\leftmargin} and % \cmd{\rightmargin} in the case % of appearance inside list environment. Canceling \package{caption} % of package calculations?} % \begin{macrocode} \@parboxrestore\leftmargin\z@\rightmargin\z@ \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} argument (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} argument (in float row).} % \changes{v0.1h}{2005/10/02}{Added setting for \cmd{\linewidth}} % \changes{v0.1k}{2007/05/24}{Added \cmd{\relax} for \cmd{\FBB@wd} to allow multilevel boxes} % \begin{macrocode} \adj@dim\FB@wd+\FB@wadj=\hsize\linewidth\hsize \ifx\FBB@wd\relax\edef\FBB@wd{\the\hsize}\fi \FBsetbox@obj{\@ifundefined{capstart}{}{\capstart}\let\FBB@wd\relax #4#5}\FBbuildtrue \FBifcapbeside\flrow@FC\FBB@wd\else\flrow@FB\FBB@wd\fi \global\FBbuildfalse % \global\FB@wd\hsize \fi\advance\floatbox@depth\m@ne % \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 % \package{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} % \changes{v0.1k}{2007/01/18}{IF \cmd{\FBB@wd} still not defined, % here it equals to \cmd{\hsize}} % \changes{v0.2a}{2007/08/24}{Redefined boxes for building of above and below % material} % \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 \ifx\FBB@wd\relax\edef\FBB@wd{\the\hsize}\fi \vbox\bgroup\vskip\FBaskip\hsize\FBB@wd \hb@xt@\hsize{\vbox{\settowidth\@tempdima{{\FRleftmargin}{\FRrightmargin}}{\advance\hsize-\@tempdima \settowidth\leftskip\FRleftmargin\@@FRabove}}\hss}\unskip \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 \hb@xt@\hsize{\vbox{\settowidth\@tempdima{{\FRleftmargin}{\FRrightmargin}}{\advance\hsize-\@tempdima \settowidth\leftskip\FRleftmargin\@@FRbelow}}\hss}% \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} % % \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. % \changes{v0.2a}{2007/08/24}{The \cmd{\subfloatrow} moved in main package body} % \begin{macrocode} \newcommand\subfloatrow[1][2]{\c@FRobj=#1%local \ifdim\parindent<\z@\leavevmode\else\noindent\fi\hbox\bgroup \let\FBiffloatrow\iftrue \Xhsize\hsize\count@#1\advance\count@-1% \settowidth\@tempdima{\subfloatrowsep}\let\floatrowsep\subfloatrowsep \advance\Xhsize-\count@\@tempdima \@tempdimb\Xhsize\divide\@tempdimb#1% \hsize\@tempdimb\ignorespaces\killfloatstyle} % \end{macrocode} % Macro for sub float row end. % \begin{macrocode} \def\endsubfloatrow{\ifdim\lastskip>\z@\unskip\fi \egroup\@ifundefined{adjustsubfloats}{}\adjustsubfloats } % \end{macrocode} % \end{environment} % % The definition of subfloat separator. % \begin{macrocode} \newcommand\subfloatrowsep{\hskip\columnsep} % \end{macrocode} % % The caption label only. Commented % \begin{macrocode} %\newcommand\captionlabel[1]{% % \def\@makecaption##1##2{\hbox{\caption@@@make{##1}{##2}}}\caption{#1}} % \end{macrocode} % % \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{macro}{\newdimentocommand} % \begin{macro}{\renewdimentocommand} % \begin{macro}{\newskiptocommand} % \begin{macro}{\renewskiptocommand} % \begin{macro}{\newlengthtocommand} % \begin{macro}{\renewlengthtocommand} % \changes{v0.1p}{2007/06/24}{Added substitution commands for usage instead skip % or dimension parameters.} % These macros substitute usage of \LaTeX's macro |\newlength| and \TeX's % macros |\newdimen| and |\newskip|. These commands are are placed as prefix % before \LaTeX's commands |\settowidth|/\allowbreak|\settoheght|/\allowbreak % |\settodepth|, |\setlength| and |\addtolength|. % \begin{macrocode} \providecommand\newdimentocommand [3]{% #1\@tempdima{#3}\@ifdefinable#2{\xdef#2{\the\@tempdima}}} \providecommand\renewdimentocommand[3]{% #1\@tempdima{#3}\xdef#2{\the\@tempdima}} \providecommand\newskiptocommand [3]{% #1\@tempskipa{#3}\@ifdefinable#2{\xdef#2{\the\@tempskipa}}} \providecommand\renewskiptocommand[3]{% #1\@tempskipa{#3}\xdef#2{\the\@tempskipa}} % \end{macrocode} % \begin{macrocode} \providecommand\newlengthtocommand{\newskiptocommand} \providecommand\renewlengthtocommand{\renewskiptocommand} % \end{macrocode} % \end{macro} % \end{macro} % \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 \package{caption}'s ones} % % The next bundle of definitions follow \package{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 }{\flrow@error{Undefined boolean value `#2'}% }}} % \end{macrocode} % \end{macro} % % \changes{v0.1f}{2005/06/14}{The macro \cmd{\l@addto@macro} % deleted---it repeats \package{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} % % \changes{v0.1k}{2007/01/20}{\cmd{\caption@setkeys[floatrow]} instead of % \cmd{\setkeys} (AS).} % \begin{macro}{\flrow@setup} % \begin{macro}{\flrow@esetup} % \begin{macro}{\flrow@settype} % Macros analogous to |\caption@setup|, |\caption@esetup| and % |\caption@setoptions|. % \begin{macrocode} %\@ifundefined{caption@keydepth}{\@tempswatrue}{\@tempswafalse}% %\if@tempswa % \def\flrow@setup{\setkeys{floatrow}}% % \@ifundefined{caption@setkeys}{}% % {\let\flrow@caption@setkeys\caption@setkeys}% % \def\caption@setkeys[#1]#2{\setkeys{#2}}% % \AtEndOfPackage{\@ifundefined{flrow@caption@setkeys}{}% % {\def\caption@setkeys\flrow@caption@setkeys % \let\flrow@caption@setkeys\undefined}}% %\else \def\flrow@setup{\caption@setkeys[floatrow]{floatrow}} %\fi \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{tmpset};% \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 \package{caption} package % (code suggestions of Axel Sommerfeldt). % \begin{macrocode} \@ifundefined{caption@setoptions}{\let\caption@setoptions\caption@settype}{} \newcommand\@cap@setlist[1]{\caption@setoptions{#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 \package{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}{\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} % % \begin{macro}{rawfloats} % The default behavior of floats is like in \package{float}-like mode after % |\restylefloat|. % \changes{v0.1k}{2007/05/24}{Key for raw float mode added.} % \begin{macrocode} \let\FR@ifrawfloats\iffalse % \end{macrocode} % The boolean key which defines, whether floats run in plain \LaTeX{} mode. % \begin{macrocode} \DeclareFROpt*{rawfloats}[0]{\flrow@setbool{\FR@ifrawfloats}{#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{doublefloataswide} % Starred environments work like non-starred with special |\floatsetup| settings. % \begin{macrocode} \let\FR@ifdoubleaswide\iffalse % \end{macrocode} % The boolean key which defines, whether starred non-rotated float in onecolumn % layout work like non-starred one but with special |\floatsetup| settings % for wide floats. % \begin{macrocode} \DeclareFROpt{doublefloataswide}[0]{\flrow@setbool{\FR@ifdoubleaswide}{#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{floatHaslist} % The anchored float has list penalties around. If there are not blank line or % |\par| command, next paragraph starts without indentation. % \begin{macrocode} \let\FR@iffloatHaslist\iffalse % \end{macrocode} % The boolean key which defines, whether anchored float % uses the same penalties before and after environment as list environments. % \begin{macrocode} \DeclareFROpt{floatHaslist}[0]{\flrow@setbool{\FR@iffloatHaslist}{#1}} % \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@setoptions} in definition % of \cmd{\flrow@capsetup} (AS).} % \changes{v0.2a}{2007/08/24}{Added star to \cmd{\caption@setstyle} % (AS).} % \begin{macrocode} \newcommand*\flrow@setstyle[1]{% \@ifundefined{flrow@sty@#1}% {\flrow@error{Undefined float style `#1'}}% {\FBstyle@reset \def\flrow@capsetup{% \@ifundefined{caption@sty@#1}{}{\caption@setstyle*{#1}}% \caption@setoptions {#1}}% \flrow@esetup{\csname flrow@sty@#1\endcsname}}} % \end{macrocode} % Declarations of \package{float} package's emulating styles and new % \package{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 \package{caption} 3.0 package defines only one related caption % style to \package{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 % \package{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 \package{caption} package mechanism, so the name of this % font follows rules of font naming in \package{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.} % \changes{v0.1p}{2007/06/24}{Changed definition of \cmd{\flrowsetfont} % for compatibility with caption (AS).} % \begin{macrocode} %\newcommand*\flrow@setfont[2]{% % \let\caption@tempa\@empty % \begingroup\caption@setkeys[floatrow]{caption@fnt}{#2}\endgroup % \expandafter\let\csname float#1\endcsname\caption@tempa} \newcommand*\flrow@setfont[2]{% \caption@setfont{@tempa}{#2}% \expandafter\let\csname float#1\endcsname\caption@tempa} % \end{macrocode} % \end{macro} % \changes{v0.1f}{2005/06/14}{\cmd{\DeclareFloatFont} bundle % removed---\package{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 }{\flrow@error{Undefined caption position `#1'}% }}}}} % \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. % \changes{v0.2a}{2007/08/24}{Removed \cmd{\global}.} % \begin{macrocode} \let\FBifcapbeside\iffalse \newcommand\capbeside{\let\FBifcapbeside\iftrue} \newcommand\nocapbeside{\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,sidefil}{\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\caption@setkeys[floatrow]{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\caption@setkeys[floatrow]{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\caption@setkeys[floatrow]{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. % \changes{v0.1h}{2006/06/16}{Changed \cmd{\vfill} to \cmd{\vss}-like code for vertical alignments} % \begin{macrocode} \newcommand\@FB@vpos[1]{% \if#1t\def\FBafil{}\def\FBbfil{\vss}\else \if#1b\def\FBafil{\vss}\def\FBbfil{}\else \if#1c\def\FBafil{\vskip0ptplus1fillminus1000pt}\def\FBbfil{\vskip0ptplus1fillminus1000pt}\else \if#1s\def\FBafil{\vskip0ptminus1000pt}\def\FBbfil{\vskip0ptminus1000pt}% \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}% {\flrow@error{Undefined float alignment `#1'}}% {\@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 \package{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---\package{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}% {\flrow@error{Undefined object setting `#1'}}% {\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 \package{caption} macros.} % \begin{macrocode} \newcommand\flrow@FBo@wd[1]{% \caption@ifinlist{#1}{none,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 |subfloatrowsep| sets separations for beside captions. % \begin{macrocode} \DeclareFROpt{subfloatrowsep}{\flrow@setFRsep\subfloatrowsep{#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 \package{caption} macros.} % \begin{macrocode} \newcommand*\flrow@setFRsep[2]{% \@ifundefined{caption@lsep@#2}% {\flrow@error{Undefined float separator `#2'}}% {\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 \package{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 float box, % 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}% {\flrow@error{Undefined rule `#3'}}% {\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}% {\flrow@error{Undefined rule `#3'}}% {\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}% {\flrow@error{Undefined rule `#1'}}% {\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}{\par\rule{\hsize}{.8pt}\vskip2pt\par} \DeclareFloatVCode{rule}{\vskip2pt\hrule\vskip2pt} \DeclareFloatVCode{lowrule}{\par\vskip2pt\rule\hsize\@wholewidth\par} \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.} % \changes{v0.2a}{2007/08/24}{Removed \cmd{\gdef}.} % \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{}\def\FB@frame{}\def\FBo@frame{}% \def\FBo@wadj{}\def\FBo@hadj{}\def\FB@wadj{}\def\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 \package{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 }{\flrow@error{Undefined framed object `#1'}% }}}} % \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} % \end{macro} % % \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 \package{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}% {\flrow@error{Undefined footnoterule `#1'}}% {\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{\caption@setkeys[floatrow]{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 \package{float} package's book.) % \changes{v0.1p}{2007/06/24}{Double code with \texttt{ftype@}\meta{captype} % deleted.} % \changes{v0.1p}{2007/06/24}{The \cmd{\fname@}\meta{floatname} changed to % \cs{}\meta{floatname}\texttt{name} macros redefined locally.} % \changes{v0.2a}{2007/08/24}{Corrected bug with \texttt{ftype@} definition (AS).} % \begin{macrocode} \@ifdefinable\flrow@types{\newtoks\flrow@types} \newcommand\DeclareNewFloatType[2]{\def\FB@captype{#1}% \expandafter\edef\csname ftype@#1\endcsname{\the\c@float@type}% \addtocounter{float@type}{\value{float@type}}% \@namedef{#1name}{#1}\newcounter{#1}% \expandafter\edef\csname fnum@#1\endcsname {\expandafter\noexpand\csname #1name\endcsname\ \expandafter\noexpand\csname the#1\endcsname}% \@namedef{the#1}{\arabic{#1}}% \flnew@setdefault\caption@setkeys[floatrow]{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. % \changes{v0.1p}{2007/06/24}{The \cmd{\fname@}\meta{floatname} changed to % \cs{}\meta{floatname}\texttt{name} macros redefined locally.} % \begin{macrocode} \DeclareFNOpt*{name}{\flnew@fname{#1}} \newcommand\flnew@fname[1]{\@namedef{\FB@captype name}{#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} % % \subsubsection{Processing of floatsetup options} % % \begin{macro}{\ProcessOptionsWithKV} % As in caption style options are processed with usage of the % \package{keyval} package. % \changes{v0.1j}{2006/02/24}{Edited by suggestions of A.Sommerfeldt} % \begin{macrocode} \def\ProcessOptionsWithKV#1{% \let\@tempc\relax \let\FR@tmp\@empty \@for\CurrentOption:=\@classoptionslist\do{% \@ifundefined{KV@#1@\CurrentOption}% {}% {% % \end{macrocode} % In the case of co-named global option, appeared in % |\documentclass| line. % ^^A added line (|\@ifundefined| stuff) % ^^A first part of command % \begin{macrocode} \@ifundefined{KV@#1@\CurrentOption @default}{% \PackageInfo{#1}{Global option `\CurrentOption' ignored}% % \end{macrocode} % ^^A doubling of first line from second part of |\@ifundefined| % ^^A but first line edited (moved |\CurrentOption,|) % ^^A \begin{macrocode} % ^^A \edef\FR@tmp{\FR@tmp,}% % ^^A \end{macrocode} % ^^A end doubling % ^^A added line % \begin{macrocode} }{% % \end{macrocode} % ^^A second part of |\@ifundefined| % \begin{macrocode} \PackageInfo{#1}{Global option `\CurrentOption' processed}% \edef\FR@tmp{\FR@tmp,\CurrentOption,}% \@expandtwoargs\@removeelement\CurrentOption \@unusedoptionlist\@unusedoptionlist % \end{macrocode} % ^^A end of doubled code % ^^A added line % \begin{macrocode} }% }% }% \edef\FR@tmp{% \noexpand\caption@setkeys[floatrow]{#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} % \end{macro} % % 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.) % \changes{v0.1k}{2007/05/24}{The support for raw float mode added.} % \begin{macrocode} \AtBeginDocument{ \FR@ifrawfloats \let\FR@tmp\flrow@Raw@restyle \else \flrow@restyle{table}\flrow@restyle{figure}% \let\FR@tmp\flrow@restyle \fi \the\flrow@types \@onlypreamble\flrow@restyle\@onlypreamble\flrow@Raw@restyle \flrow@types={}} % \end{macrocode} % % \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.} % % \begin{macrocode} %<*frfancy> \RequirePackage{fancybox} % \end{macrocode} % % \subsection{Additional Definitions for Fancy Frames} % % \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}% {\flrow@error{Undefined color box `#1'}}% {\expandafter\let\expandafter\FB@fcolorbox \csname flrow@fcolorbox@#1\endcsname}} \newcommand*\DeclareColorBox[2]{% \@ifundefined{color}{\flrow@error {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 \package{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} % % % % % \begin{macrocode} %<*floatpagestyle> % \end{macrocode} % % \subsection{Empty Floating page} % % Here 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} \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) % \changes{v0.1h}{2005/10/02}{Optimization: the patch instead of % redefinition of \cmd{\@outputpage} command} % \begin{macrocode} \AtBeginDocument {\@ifdefinable\FBori@outputpage{\let\FBori@outputpage\@outputpage} \let\@outputpage\FB@outputpage} \newcommand\FB@outputpage{\@chkfloatpage\FBori@outputpage} % \end{macrocode} % \end{macro} % % \begin{macrocode} % % \end{macrocode} % % % % % \begin{macrocode} %<*listpen> % \end{macrocode} % % \subsection{List Penalties Managing} % % The package \package{listpen} is a beta-temp package, which % offers commands |\allowprelistbreaks|, % |\allowpostlistbreaks| and |\allowitembreaks| which help % to manage page breaking at the beginning and the end of % lists, and between list items consequently. % % This package follows idea of |\allowdisplaybreaks| % (\textsf{amsmath} package) and |\pagebreak|/|\nopagebreak| stuff. % % \DescribeMacro{\allowprelistbreaks} % \DescribeMacro{\allowpostlistbreaks} % \DescribeMacro{\allowitembreaks} % These commands set penalties before lists, after lists and between items. % They set globally or inside group or (also list!) % environment\footnote{Look also at \cmd{\allowdisplaybreaks} % macro from \package{amsmath} package.} penalties accordingly to digits % from |[-4]| (never break) to |[4]| (always break). The values of optional % argument in these commands analogous to values of optional arguments % in, e.g., |\pagebreak| command. The default value of all three commands % is |[-1]| which equal to \cls{book.cls} etc. class settings (which equal to % |-\@lowpenalty| value). % % \begin{macro}{\allowprelistbreaks} % Sets penalty before lists. % \begin{macrocode} \newcommand\allowprelistbreaks{\let\LP@penalty\@beginparpenalty \@testopt{\LP@setlistbreaks}{-1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\allowpostlistbreaks} % Sets penalty after lists. % \begin{macrocode} \newcommand\allowpostlistbreaks{\let\LP@penalty\@endparpenalty \@testopt{\LP@setlistbreaks}{-1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\allowitembreaks} % Sets penalty between items. % \begin{macrocode} \newcommand\allowitembreaks{\let\LP@penalty\@itempenalty \@testopt{\LP@setlistbreaks}{-1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\LP@setlistbreaks} % This macro reverses the $+/-$ signs before digits. % \begin{macrocode} \@ifdefinable\LP@setlistbreaks{} \def\LP@setlistbreaks[#1#2]{\def\tempa{-}\def\tempb{#1}\ifx\tempa\tempb \LP@nolbk[#2]\else\LP@nolbk-[#1]\fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\LP@nolbk} % Macro for setting necessary penalties. % \begin{macrocode} \@ifdefinable\LP@nolbk{}\@ifdefinable\LP@penalty{} \def\LP@nolbk#1[#2]{% \ifcase#2\LP@penalty\z@ \or\LP@penalty#1\@lowpenalty \or\LP@penalty#1\@medpenalty \or\LP@penalty#1\@highpenalty \or\LP@penalty#1\@M \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\RestoreSpaces} % \changes{v0.1b}{2007/05/24}{Adding definition of \cmd{\RestoreSpaces} command} % A simple command to turn off |\if@nobreak| flag. % \begin{macrocode} \providecommand\RestoreSpaces{\@nobreakfalse} % \end{macrocode} % \end{macro} % % \begin{macrocode} % % \end{macrocode} % % % % % \begin{macrocode} %<*floatrow> \AtBeginDocument{% \@ifundefined{sf@@@subfloat}{\@tempswafalse}{\@tempswatrue} \if@tempswa\RequirePackage{fr-subfig}\fi} % % \end{macrocode} % % \begin{macrocode} %<*frforsubfig> % \end{macrocode} % % \subsection{Support for \package{subfig} Package} % % \changes{v0.2a}{2007/08/24}{Added compatibility check.} % \begin{macrocode} \def\@tempb{2005/06/28 ver: 1.3 subfig package} \expandafter\let\csname @tempa\expandafter\endcsname \csname ver@subfig.\@pkgextension\endcsname \ifx\@tempa\@tempb\else \PackageWarning{fr-subfig}{The additions cooperated with \MessageBreak version `2005/06/28 ver: 1.3' of package subfig,\MessageBreak but only version\MessageBreak \csname ver@subfig.\@pkgextension\endcsname'\MessageBreak is available}\relax \fi % \end{macrocode} % % \subsubsection{Building Subfloatrow} % % 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 \package{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} % % \subsubsection{Small Correction of \package{subfig} Macro} % % There is a \package{subfig}'s macro with corrections to put % alone subfloat label. % \begin{macrocode} \long\def\sf@@@subfloat#1[#2][#3]#4{% \@ifundefined{FBsc@max}{}% {\FB@readaux{\let\FBsuboheight\relax}}% \@tempcnta=\@ne \if@minipage \@tempcnta=\z@ \else\ifdim \lastskip=\z@ \else \@tempcnta=\tw@ \fi\fi \ifmaincaptiontop \sf@top=\sf@nearskip \sf@bottom=\sf@farskip \else \sf@top=\sf@farskip \sf@bottom=\sf@nearskip \fi \leavevmode \setbox\@tempboxa \hbox{#4}% % \end{macrocode} % In the case of empty contents of subfloat all vertical spaces zeroed. % subcaption label created like oneline |\vtop|. % \begin{macrocode} \ifdim\wd\@tempboxa=\z@\ht\@tempboxa\z@\dp\@tempboxa\z@ \setbox\z@\hbox{{\caption@@@make {\caption@lfmt{\@nameuse{sub\@captype name}}% {\@nameuse{thesub\@captype}}\relax}{}}}\@tempdima=\wd\z@ \sf@top=\z@ \sf@bottom=\z@ \sf@capskip\z@ \sf@captopadj\z@ \let\sf@ifpositiontop\@firstoftwo \else \@tempdima=\wd\@tempboxa \@ifundefined{FBsc@max}{}% {\global\advance\Xhsize-\wd\@tempboxa \dimen@=\ht\@tempboxa \advance\dimen@\dp\@tempboxa \ifdim\dimen@>\FBso@max \global\FBso@max\dimen@ \fi}% \fi \vtop\bgroup \vbox\bgroup \ifcase\@tempcnta \@minipagefalse \or \vskip\sf@top \or \ifdim \lastskip=\z@ \else \@tempskipb\sf@top\relax\@xaddvskip \fi \fi % \end{macrocode} % In the case of empty contents there is used only first variant. % \begin{macrocode} \sf@ifpositiontop{% \ifx \@empty#3\relax \else \sf@subcaption{#1}{#2}{#3}% \vskip\sf@capskip \vskip\sf@captopadj \fi\egroup % \end{macrocode} % In the case of empty contents the |\@tempboxa| box skipped . % \begin{macrocode} \hrule width0pt height0pt depth0pt \box\@tempboxa }{% \@ifundefined{FBsc@max}% {\box\@tempboxa}% {\ifx\FBsuboheight\relax \box\@tempboxa \else \vbox to \FBsuboheight{\FBafil\box\@tempboxa\FBbfil}% \fi}% \egroup \ifx \@empty#3\relax \else \vskip\sf@capskip \hrule width0pt height0pt depth0pt \sf@subcaption{#1}{#2}{#3}% \fi }% \vskip\sf@bottom \egroup \@ifundefined{FBsc@max}{}% {\addtocounter{FRobj}{-1}% % \end{macrocode} % Here is the small correction: % |\ifnum\c@FRobj>0| instead of |\ifnum\c@FRobj=0\else|. % \begin{macrocode} \ifnum\c@FRobj>0% bugfix \subfloatrowsep \fi}% \ifmaincaptiontop\else \global\advance\@nameuse{c@\@captype}\m@ne \fi \endgroup\ignorespaces} % \end{macrocode} % % \subsubsection{Beside Labels for Subfloats} % % New key for beside caption of subfloat label. Beside label of subfloat % always on the left side. % \begin{macrocode} \DeclareFROpt{subcapbesideposition}{\flrow@SFbesidealign{#1}} \newcommand*\flrow@SFbesidealign[1]{% \caption@ifinlist{#1}{t,top}{% \let\flrow@SFBalign\TopFloatBoxes }{\caption@ifinlist{#1}{b,bottom,default}{% \let\flrow@SFBalign\BottomFloatBoxes }{\caption@ifinlist{#1}{c,center}{% \let\flrow@SFBalign\CenterFloatBoxes }{\PackageError{floatrow}% {Undefined sublabel position `#1'}{\flrow@eh}% }}}} \newcommand\flrow@SFBalign{\BottomFloatBoxes} % \end{macrocode} % % Macro for beside float label. Labels always placed on the left side. % \begin{macrocode} \newcommand\sidesubfloat{% \ifx\@captype\@undefined \@latex@error{\noexpand\subfloat outside float}\@ehd \expandafter\@gobble \else \expandafter\@firstofone \fi {\flrow@sidesubfloat}} % \end{macrocode} % % \begin{macrocode} \def\flrow@sidesubfloat{\flrow@SFBalign \begingroup \@ifundefined{caption@setfloattype}% \caption@settype \caption@setfloattype \@captype % \caption@setoptions\@captype \sf@ifpositiontop{% \maincaptiontoptrue }{% \maincaptiontopfalse }% \caption@setoptions{subfloat}% \caption@setoptions{sub\@captype}% \let\sf@oldlabel=\label \let\label=\subfloat@label % \end{macrocode} % % Next, a decision (based on the \texttt{\char`\\ ifmaincaptiontop} % flag) is made of how to advance the float counter; then the % sub-float counter is advanced and saved and a check is made if an % optional argument is present (if not, one is supplied). % % \begin{macrocode} \ifmaincaptiontop\else \advance\@nameuse{c@\@captype}\@ne \fi \refstepcounter{sub\@captype}% \setcounter{sub\@captype @save}{\value{sub\@captype}}% \@ifnextchar [% %] match left bracket {\flrow@@sidesubfloat}% {\flrow@@sidesubfloat[\@empty]}} % \end{macrocode} % % \begin{macrocode} \long\def\flrow@@sidesubfloat[#1]{% \@ifnextchar [% %] match left bracket {\flrow@@@sidesubfloat{sub\@captype}[{#1}]}% {\flrow@@@sidesubfloat{sub\@captype}[\@empty{#1}][{#1}]}} % \end{macrocode} % % \begin{macrocode} \long\def\flrow@@@sidesubfloat#1[#2][#3]#4{% \@ifundefined{FBsc@max}{}% {\FB@readaux{\let\FBsuboheight\relax}}% \@tempcnta=\@ne \if@minipage \@tempcnta=\z@ \else\ifdim \lastskip=\z@ \else \@tempcnta=\tw@ \fi\fi \sf@bottom=\z@ \sf@top=\z@ \leavevmode \setbox\@tempboxa \hbox{#2}% \@tempdima\wd\@tempboxa \setbox\@tempboxa \hbox{#4}% \advance\@tempdima\wd\@tempboxa \advance\@tempdima\labelsep \@ifundefined{FBsc@max}{}% {\global\advance\Xhsize-\wd\@tempboxa \dimen@=\ht\@tempboxa \advance\dimen@\dp\@tempboxa \ifdim\dimen@>\FBso@max \global\FBso@max\dimen@ \fi}% \begin@FBBOX \ifcase\@tempcnta \@minipagefalse \or \vskip\sf@top \or \ifdim \lastskip=\z@ \else \@tempskipb\sf@top\relax\@xaddvskip \fi \fi \hbox{% \begin@FBBOX \ifx \@empty#3\relax \else \hbox{\caption@@@make {\caption@lfmt{\@nameuse{sub\@captype name}}% {\@nameuse{thesub\@captype}}\relax}{}}% \fi \end@FBBOX\hskip\labelsep\ignorespaces \begin@FBBOX \box\@tempboxa \end@FBBOX }% \vskip\sf@bottom \end@FBBOX \@ifundefined{FBsc@max}{}% {\addtocounter{FRobj}{-1}% \ifnum\c@FRobj>0 \subfloatrowsep \fi}% \ifmaincaptiontop\else \global\advance\@nameuse{c@\@captype}\m@ne \fi \endgroup\ignorespaces} % \end{macrocode} % % \subsubsection{Alone Labels for Subfloats} % % Macro for creation of subfloat label only. That could be useful % for usage with \package{psfrag} package, placing labels inside % \env{picture} environment, using in tabulars etc. % \begin{macrocode} \newcommand\subfloatlabel{\@ifnextchar[%] {\flrow@subfloatlabel}{\subfloat[]{}}} \@ifdefinable\flrow@subfloatlabel{} \def\flrow@subfloatlabel[#1]{% \ifx\@captype\@undefined \@latex@error{\noexpand\subfloat outside float}\@ehd \fi \begingroup \count@#1\advance\count@\m@ne \csname c@sub\@captype\endcsname\count@\relax \@ifnextchar[%] {\flrow@@subfloatlabel[#1]}% {\subfloat[]{}\endgroup}} \@ifdefinable\flrow@@subfloatlabel{} \def\flrow@@subfloatlabel[#1][#2]{% \subfloat[]{\label{#2}}\endgroup} % \end{macrocode} % % \begin{macrocode} % % \end{macrocode} % % % % % \begin{macrocode} %<*floatrow> \AtBeginDocument{% \@ifundefined{LT@array}{\@tempswafalse}{\@tempswatrue} \if@tempswa\RequirePackage{fr-longtable}\fi} % % \end{macrocode} % % \begin{macrocode} %<*forlongtable> % \end{macrocode} % % \subsection{Support for \package{longtable} Package} % % First goes requirement of necessary packages. % \begin{macrocode} \RequirePackage{longtable}[2004/02/01] %\RequirePackage{floatrow}[2007/05/24] % \end{macrocode} % % \subsubsection{Caption Width Settings} % % \changes{v0.1g}{2005/07/15}{The \package{longtable} support moved inside % \package{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} \let\flrow@oriLT@array\LT@array \renewcommand\LT@array{% % \end{macrocode} % Here are added settings for table font (similar to other table % environments). % \changes{v0.1j}{2006/07/24}{The \cmd{\belowcaptionskip} is set % equal to \cmd{\captionskip}.} % \changes{v0.1p}{2006/07/24}{Definition for table foot % material: \cmd{\floatfoot}.} % \begin{macrocode} \flrow@setlist{{table}{longtable}}\flrow@useLTcapwidth\normalfont\floatfont \belowcaptionskip\captionskip % \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\relax \ifdim\LTcapwidth=\z@\else\global\LTcapwidth\LTcapwidth\fi \endgroup\fi}}% \def\floatfoot@{%\par\kern-\normalbaselineskip\kern-\normallineskip \vskip\floatfootskip\def\@captype{table}\floatfoot@box}% % \end{macrocode} % At last goes \package{longtable}'s macro itself. % \begin{macrocode} \flrow@oriLT@array} % \end{macrocode} % % \begin{macrocode} \providecommand\floatfont{} \providecommand\floatfootskip{\skip\@mpfootins} \providecommand\captionskip{10\p@} \providecommand\floatfoot@box[1]{% % \end{macrocode} % The |\if@@FS| flag stored for \env{wrap...} environments. % \changes{v0.1h}{2005/10/02}{Added setting for \cmd{\linewidth}} % \begin{macrocode} % \hsize\columnwidth\linewidth\columnwidth \@parboxrestore\reset@font\color@begingroup % \end{macrocode} % Apply current float settings. % \begin{macrocode} \caption@setoptions{\@captype}% % \end{macrocode} % Apply floatfoot settings. % \begin{macrocode} \caption@setoptions{floatfoot}% % \end{macrocode} % No captionlabel. % \changes{v0.1k}{2007/05/24}{Added settings for emptied caption label} % \begin{macrocode} \captionsetup{labelformat=empty,labelsep=none}% \caption@@make{}{\FR@tmp#1\@finalstrut\strutbox}% \color@endgroup} % \end{macrocode} % % The definition of caption width for \env{longtable} environment. % \begin{macrocode} \let\FBifLTcapwidth\@gobble \providecommand\caption@ifinlist[2]{% \let\next\@secondoftwo \edef\caption@tempa{#1}% \@for\caption@tempb:={#2}\do{% \ifx\caption@tempa\caption@tempb \let\next\@firstoftwo \fi}% \next} \newcommand*\flrow@useLTcapwidth{} \newcommand*\setLTcapwidth[1]{% \caption@ifinlist{#1}{table,contents,LTcapwidthtotable}{\def\flrow@useLTcapwidth {\let\FBifLTcapwidth\@firstofone}}{\def\flrow@useLTcapwidth {\let\FBifLTcapwidth\@gobble\setlength\LTcapwidth{#1}}}} \@ifpackageloaded{floatrow} {\DeclareFROpt{LTcapwidth}{\setLTcapwidth{#1}} \DeclareOption{LTcapwidthtotable}{\setLTcapwidth{table}} \ProcessOptions } {\DeclareOption{LTcapwidthtotable}{\setLTcapwidth{table}} \ProcessOptions \let\flrow@setlist\@gobble} % \end{macrocode} % % \subsubsection{Additional Settings for Last Head and Pre-last Foot} % % The box for last head. Defined in the same way as analog macros in % \package{longtable} package. % \begin{macrocode} \newbox\flrow@LT@lasthead \newbox\flrow@LT@prelastfoot % \end{macrocode} % This counter register is used for checking of last longtable page. % \begin{macrocode} \newcounter{FBLTpage} % \end{macrocode} % % This command defines number of pages in current longtable. % In current version defined by hand for % each table. The default number is~2. % \begin{macrocode} %\newcommand\LTlastpage{2} % \end{macrocode} % % Storing of original definition of |\longtable| macro. % In new definition was is added counting of longtable's pages % with \texttt{FBLTpage} counter defined before. % \begin{macrocode} \@ifdefinable\FB@ori@longtable{\let\FB@ori@longtable\longtable} \def\longtable{% \setcounter{FBLTpage}\@ne \FB@ori@longtable} % \end{macrocode} % % Storing original definition of |\LT@ouput| macro. % Here, in new definition, added increasing of \texttt{FBLTpage}. % In the case of defined |\lasthead| contents and last page was % checked, the contents of last head loaded. % \begin{macrocode} \@ifdefinable\FB@ori@LT@output{\let\FB@ori@LT@output\LT@output} \def\LT@output{% \@ifundefined{FBLTpage@\romannumeral\c@LT@tables}% {\gdef\flrow@LTlastpage{2}}{\@nameuse{FBLTpage@\romannumeral\c@LT@tables}}% \addtocounter{FBLTpage}\@ne \ifvoid\flrow@LT@lasthead\else \ifnum\value{FBLTpage}=\flrow@LTlastpage \let\LT@head\flrow@LT@lasthead \fi \fi % \end{macrocode} % Switching on of the |\LT@prelastfoot| also needs the real value of % |\flrow@LTlastpage| (why???). % \begin{macrocode} \ifvoid\flrow@LT@prelastfoot\else \count@\flrow@LTlastpage\relax%\advance\count@\m@ne\relax \ifnum\value{FBLTpage}=\count@ \let\LT@foot\flrow@LT@prelastfoot \fi \fi \FB@ori@LT@output} % \end{macrocode} % % The definition of last head box and foot of the page before last. % They are defined in the same way as other commands in \package{longtable} % package, like |\endlastfoot|. % Here was used |\def| as for all |\end..| commands. I hope if \package{longtable} % will use these synonyms it will use also synonyms for % || and || box register commands at the very beginning of package. % Use command names with the analogous names % in the hope that their synonyms will appear in the ``host''-package % and in this case current package stops interfere. % \begin{macrocode} \@tempswafalse \ifx\endlasthead\undefined\@tempswatrue\else \ifx\endlasthead\relax\@tempswatrue \fi\fi \if@tempswa \def\endlasthead{\LT@end@hd@ft\flrow@LT@lasthead} \else \PackageError{fr-longtable}{The command \string\endlasthead\MessageBreak already defined by longtable package} \fi \@tempswafalse \ifx\endprelastfoot\undefined\@tempswatrue\else \ifx\endprelastfoot\relax\@tempswatrue \fi\fi \if@tempswa \def\endprelastfoot{\LT@end@hd@ft\flrow@LT@prelastfoot} \else \PackageError{fr-longtable}{The command \string\endprelastfoot\MessageBreak already defined by longtable package} \fi % \end{macrocode} % % Redefined |\endlongtable| command---added code which writes % the number of pages of long table. % \begin{macrocode} \@ifdefinable\FB@ori@endlongtable{\let\FB@ori@endlongtable\endlongtable} \def\endlongtable{% \FB@ori@endlongtable % \end{macrocode} % Here is additional code. % Why it is necessary to reduce counter of pages by~1? % \begin{macrocode} \if@filesw {\advance\c@FBLTpage\m@ne \immediate\write\@auxout{% \gdef\expandafter\noexpand \csname FBLTpage@\romannumeral\c@LT@tables\endcsname {\string\gdef\string\flrow@LTlastpage{\the\c@FBLTpage}} }} \fi } % \end{macrocode} % \begin{macrocode} % % \end{macrocode} % % % \Finale \endinput