diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/floatrow/floatrow.dtx |
Initial commit
Diffstat (limited to 'macros/latex/contrib/floatrow/floatrow.dtx')
-rw-r--r-- | macros/latex/contrib/floatrow/floatrow.dtx | 11617 |
1 files changed, 11617 insertions, 0 deletions
diff --git a/macros/latex/contrib/floatrow/floatrow.dtx b/macros/latex/contrib/floatrow/floatrow.dtx new file mode 100644 index 0000000000..904d61654c --- /dev/null +++ b/macros/latex/contrib/floatrow/floatrow.dtx @@ -0,0 +1,11617 @@ +% \iffalse +% floatrow.dtx - The floatrow package (extension of float package) +% (c) 2004-2007 Olga Lapko (Lapko.O@g23.relcom.ru http://www.ru.net/~Lapko.O/) +% +% 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} +%</dtx> +%<floatrow,frfancy,floatpagestyle,listpen,frforsubfig,forlongtable>\NeedsTeXFormat{LaTeX2e}[1995/06/01] +%<floatrow>\ProvidesPackage{floatrow} +%<frfancy>\ProvidesPackage{fr-fancy} +%<floatpagestyle>\ProvidesPackage{floatpagestyle} +%<listpen>\ProvidesPackage{listpen} +%<frforsubfig>\ProvidesPackage{fr-subfig} +%<forlongtable>\ProvidesPackage{fr-longtable} +% +% \ProvidesFile{floatrow.dtx} +%<floatrow> [2008/08/02 v0.3b floatrow: float package extension] +%<frfancy> [2007/11/28 v0.1i floatrow: fancy boxes] +%<floatpagestyle> [2005/10/02 v0.1h floating page style] +%<listpen> [2007/10/28 v0.1d list penalty managing] +%<frforsubfig> [2007/12/24 v0.1g (beta) floatrow: additions for subfig] +%<forlongtable> [2007/11/28 v0.1b (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}} +\advance\oddsidemargin.25\marginparwidth +\evensidemargin\oddsidemargin + +\IfFileExists{titlesec.sty}{\usepackage[raggedright]{titlesec}}{} +\let\FRorisection\section +\let\FRorisubsection\subsection +\let\FRorisubsubsection\subsubsection +\def\section{\RestoreSpaces\FRorisection} +\def\subsection{\RestoreSpaces\FRorisubsection} +\def\subsubsection{\RestoreSpaces\FRorisubsubsection} + +\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, + footskip=.5\skip\footins,footnoterule=fullsize, + floatrowsep=qquad,capbesidesep=quad,capbesideposition=inside, + facing=yes,floatHaslist=yes,doublefloataswide=yes]{floatrow} + +\usepackage{floatpagestyle,listpen} +\allowprelistbreaks[-4] +\newseparatedlabel\Flabel{\@captype}{sub\@captype} +\newseparatedref\Fref{,\,\textit} + +\usepackage{fr-fancy} + +\usepackage{color} +\definecolor{gray}{gray}{.5} +%\definecolor{emphblue}{rgb}{0,0,0.5} +\definecolor{emphblue}{rgb}{0,0,1} +\def\emphcolor{\color{emphblue}} + +\usepackage[ + linktocpage, + hyperindex,% + plainpages=false,% + bookmarksopenlevel=1,% + bookmarksnumbered=false,% + pdfview=FitH, + pdfstartview=FitH, + ]{hyperref} +\usepackage{hypcap} + +\def\@linkbordercolor{1 .5 .5} + +\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}}{} +\floatsetup[table]{style=Plaintop,footnoterule=none} + +%^^A ----------------------- +\floatstyle{ruled} +\newfloat{Program}{tbp}{lop}[section] + +\DeclareNewFloatType{Example}{placement=tb, + within=section,fileext=loe} + +\newfloatcommand{fcapsideleft}{figure}[{\capbeside + \captionsetup[capbesidefigure]{labelsep=newline, + justification=raggedleft}% + \thisfloatsetup{capbesideposition=left}}][\FBwidth] +\newfloatcommand{fcapsideright}{figure}[{\capbeside + \captionsetup[capbesidefigure]{labelsep=newline, + 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\hrule height2.8pt depth0pt\vskip4pt\par}} +\DeclareFloatVCode{grayrulebelow}{{\color{gray}\par\vskip4pt\hrule height2.8pt depth0pt}} + +\DeclareObjectSet{colorred}{\parskip2pt\parindent15pt\color{red}} + +\DeclareMarginSet{hangtoheads}{\setfloatmargins + {\hfil}{\hskip-.7\headheight\hskip-\headsep}} + +\DeclareFloatSeparators{colorsep}{\begingroup\color{blue}% + \floatfacing* + {\hskip16pt\vrule width4.8pt\hskip6pt}{\hskip6pt\vrule width4.8pt\hskip16pt}% + \endgroup} +\DeclareFloatSeparators{none}{} +\DeclareFloatSeparators{cicero}{\hskip1cc} +\DeclareFloatSeparators{enskip}{\hskip.5em} +\DeclareFloatSeparators{marginparsep}{\hskip\marginparsep} +\DeclareFloatSeparators{mcapwidth}{\hskip-\FCwidth} + +\DeclareColorBox{framedfigure}{\fcolorbox{gray}{white}} +\DeclareColorBox{yellowplate}{\colorbox{yellow}} + +\DeclareCBoxCorners{angles} + {{\color{green}%green llcorner + \linethickness{10pt}\put(-5pt,-5pt) + {{\put(0pt,0pt){\line(0,1){\FRcolorboxht}}}% + {\put(-5pt,0pt){\line(1,0){\FRcolorboxwd}}}}% + }}{{\color{red}%red lrcorner + \linethickness{10pt}\put(0pt,0pt) + {{\put(0pt,0pt){\line(0,1){\FRcolorboxht}}}% + {\put(5pt,0pt){\line(-1,0){\FRcolorboxwd}}}}% + }}{{\color{blue}%blue urcorner + \linethickness{10pt}\put(5pt,-5pt) + {{\put(0pt,0pt){\line(0,-1){\FRcolorboxht}}}% + {\put(5pt,0pt){\line(-1,0){\FRcolorboxwd}}}}% + }}{{\color{magenta}%magenta ulcorner + \linethickness{10pt}\put(0pt,0pt) + {{\put(0pt,0pt){\line(0,-1){\FRcolorboxht}}}% + {\put(-5pt,0pt){\line(1,0){\FRcolorboxwd}}}}% + }} + +%^^A ----------------------- +\DeclareCaptionListOfFormat{comma-separated}{#1,\,#2} + +\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}} +\DeclareCaptionLabelFormat{continued}{\rightline{\bothIfFirst{#1}{ }#2 \textup{(\emph{Continued})}}} +\DeclareCaptionLabelFormat{finished}{\rightline{\bothIfFirst{#1}{ }#2 \textup{(\emph{Finished})}}} + +\DeclareCaptionLabelFormat{thinspace}{\bothIfFirst{#1}{\,}#2} + +\DeclareCaptionJustification{togglelast}{\floatfacing*\rightlast\leftlast} +\DeclareCaptionJustification{rightlast}{\rightlast} + +\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} + +\newcounter{Note} +\newcommand\Note{\ifhmode\ifdim\lastskip>0pt\unskip\fi~\nobreak\quad\fi + \addtocounter{Note}1\textup{\theNote)}\nobreak\enskip} +\newcommand\startNotes{\setcounter{Note}0} +%^^A ----------------------- + +\advance\oddsidemargin.25\marginparwidth +\evensidemargin\oddsidemargin +\@mparswitchfalse +\widowpenalty10000 +\clubpenalty10000 +\@beginparpenalty10000 +\@itempenalty1000 +\@endparpenalty0 +\tolerance2000 +\hbadness8000 +\vbadness5000 +\hfuzz7pt +\def\l@subsection{\@dottedtocline {2}{1.5em}{2.7em}} +\def\l@subsubsection{\@dottedtocline {3}{4.2em}{3.9em}} + +\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]% + {\RemoveSpaces + \allowprelistbreaks[-4]\vspace*{\topsep}\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}[1][\parindent]{\par\hfuzz30pt\setlength{\leftmargini}{#1}\RestoreSpaces + \small\begin{quote}\obeylines\parskip0pt}{\end{quote}\par\@endpetrue} +\def\OptionLabel{RaggedRight} + +\newenvironment{preamble}{{\emphcolor\meta{preamble}}\nopagebreak + \par\begingroup\advance\leftskip1em}{\par\endgroup{\emphcolor\nobreak\meta{preamble}}\par\vskip2ex} + +\newcommand\FRkey[2][setup]{\hyperref[#1:#2]{\texttt{#2}}} + +\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} + +\newcommand\FRmpar{\@ifstar{\@nobreaktrue\xFRmpar}{\xFRmpar}} + +\newcommand\xFRmpar[2]{\label{#2}\marginpar{\footnotesize + \raggedleft\advance\leftskip.3\hsize#1}} + +\providecommand\sectionname{section} +\newcommand\seeIntro{\hyperref[sec:intro]{Intro}} + +\makeatother%^^A--------------------------------- + +\OnlyDescription +\let\PrintChanges\relax +\let\PrintIndex\relax +\def\SpecialUsageIndex#1{} +\def\SpecialEnvIndex#1{} +\EnableCrossrefs +\RecordChanges +%\makeindex +\begin{document} + \DocInput{floatrow.dtx} +\PrintChanges +%\PrintIndex +\end{document} +%</driver> +% \fi +% +% \CheckSum{5863} +% +% \changes{v0.1e}{2005/03/22}{The user documentation loaded inside +% \file{floatrow.dtx}.} +% +% \ifx\pspicture\undefined\else\psset{unit=1pt}\fi +% +% \def\fileversion{v0.3b} +% \def\filedate{2009/08/02} +% \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 of one type without +% adding any repeated code in the document; besides, this package allows to +% create new float types; it deals only +% with alone (plain) combinations ``object (float contents)---caption''. +% +% The \package{rotfloat} +% package changes environments of rotated floats (the |sideways...| +% environment of \package{rotating} package) +% to adapt them to \package{float}'s settings. +% +% The package \package{floatrow} 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 types; +% \item +% to change width of float box, either to a fixed value or 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 |minipage|-like mode); +% and also to 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 +% (needs version 3.0\textbf{q} or later, \emph{the better} cooperation will be with +% version \textbf{3.1\emph{x}}). Also the \package{floatrow} package (like +% \package{caption} one) uses \package{keyval} package mechanism for layout +% settings. +% \medskip +% +% \begingroup +% \slshape +% I do my best to follow this idea and I hope that someone +% likes it: helps to maintain this idea in any way, 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 (float box)] +% could include \emph{object}, \emph{caption}, and +% \emph{foot material}; \emph{float} is created by |figure| or +% |table| environments (\emph{plain float}), or by |\|\FRkey{floatbox} +% command and its modifications (\emph{float box}); +% +% \item[float type] +% means standard environment |figure| or |table|, +% also their \emph{layout subtypes}, like e.g.~|wrapfigure| (\package{wrapfig} package), +% |sidewaysfigure| (\package{rotating} and \package{rotfloat} packages), +% |longtable| (\package{longtable} package) etc.; +% +% \item[object]means |tabular| or graphics, as contents of table +% (|table|) or figure (|figure|) or other type of float; +% +% \item[caption]means text in |\caption|; +% +% \item[foot material]could include explications, legends and/or footnotes inside +% \emph{float box} (|\footnote|/\allowbreak|\mpfootnotemark|/\allowbreak|\footnotetext|, +% and |\|\FRkey{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~|H|)} +%^^A% \strut\pfill +%^^A% \textsl{\sectionname}~\ref{sec:floatborrowII} +% +% \item{Caption} +% \subitem{above float (|table|'s object, |\ttabbox|)\kern-1em\allowbreak} +% \strut\pfill +% \textsl{{\seeIntro}},~%^^A +% \textsl{\sectionname}~\ref{sec:floatbox} +% +% \subitem{beside float (|figure|'s object, |\fcapside|)} +% \strut\pfill +% \textsl{{\seeIntro}},~%^^A +% \textsl{\sectionname}~\ref{sec:floatbox} +% +% \subitem{width equals to |longtable|'s (|LTcapwidth=| key)} +% \strut\pfill +% page~\pageref{FAD:LTcapwidth} +% +% \subitem{width equals to object's} +% \emph{see}~{float box width equals to object's}{} +% +% \subitem{like in plain \LaTeX\ (|\RawCaption|)} +% \strut\pfill +% page~\pageref{setup:RawCaption}, +% \pageref{subcap:RawCaption} +% +% \item{Creation of new float type (|\DeclareNewFloatType|)} +% \strut\pfill +% \textsl{\sectionname}~\ref{sec:newfloat} +% +% \item{Layout of Float types (|\floatsetup|)} +% \strut\pfill +% \textsl{\sectionname}~\ref{sec:floatsetup} +% +% \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{box width} +% +% \subsubitem{option in |\floatbox| commands} +% \strut\pfill +% \textsl{\sectionname}~\ref{sec:floatbox} +% +% \subsubitem{equals to object's (option |\FBwidth| (|\floatbox|))} +% \strut\pfill +% \textsl{{\seeIntro}},~%^^A +% \textsl{\sectionname}~\ref{sec:floatbox} +% +% \subsubitem{the rest space in the row +% (option |\Xhsize| (|\floatbox|))} +% \strut\pfill +% page~\pageref{FAD:floatfillspace} +% +% \subitem{empty (special) page style (|\emptyfloatpage|)} +% \strut\pfill +% page~\pageref{FAD:emptyfloatpage} +% +% \subitem{rotated (|sideways..|~env.)}\nopagebreak +% \strut\pfill +% \textsl{\sectionname}~\ref{ssec:rotating} +% +% \subsubitem{placing on the facing pages} +% \strut\pfill +% page~\pageref{FAD:ContRotated} +% +% \subitem{\textbf{here!} (option |[H]|)} +% \strut\pfill +% \textsl{\sectionname}~\ref{sec:floatborrowII} +% +% \subitem{row (|floatrow| env.)} +% \strut\pfill +% \textsl{{\seeIntro}},~%^^A +% \textsl{\sectionname}~\ref{sec:floatrow} +% +% \subsubitem{float(box) in the row occupies the rest space} +% \emph{see}~{float box width, the rest space of the row} +% +% \subsubitem{floats of different types side by side} +% \strut\pfill +% page~\pageref{FAD:MixedRowII}, +% \pageref{FAD:MixedRow} +% +% \subitem{like in plain \LaTeX\ (|\RawFloats|)} +% \strut\pfill +% \textsl{\sectionname}~\ref{sec:rawfloats} +% +% \subitem{wrapped} +% \strut\pfill +% \textsl{\sectionname}~\ref{ssec:wrapfig}--\ref{ssec:picins} +% +% \item{Footnote inside float} +% \strut\pfill +% \textsl{\sectionname}~\ref{sec:floatfootnote} +% +% \subitem{footnote mark +% (|\mpfootnotemark|)\kern-1em\allowbreak} +% \strut\pfill +% page~\pageref{FAD:FnoteInsideFloat} +% +% \item{Legend-like macro (|\floatfoot|)} +% \strut\pfill +% \textsl{\sectionname}~\ref{subsec:floatfoot} +% +% \item{Subfloat} +% \strut\pfill +% \subitem{subcaption above} +% \strut\pfill +% page~\pageref{FAD:subcapabove} +% \subitem{subfloat label beside} +% \strut\pfill +% page~\pageref{FAD:sublabelbeside} +% \end{multicols}% +% \endgroup +% +% \clearpage +% \begingroup\addtocounter{lofdepth}1\addtocounter{lotdepth}1 +% \small\openup-.65pt +% \pdfbookmark[1]{Contents}{TOC}\nopagebreak\tableofcontents +% \pdfbookmark[1]{List of Figures}{LOF} +% \nopagebreak\listoffigures +% \pdfbookmark[1]{List of Tables}{LOT} +% \nopagebreak\listoftables +% \pdfbookmark[1]{List of Examples}{LOE} +% \nopagebreak\listof{Example}{List of Examples} +% \pdfbookmark[1]{List of Programs}{LOP} +% \nopagebreak\listof{Program}{List of Programs} +% \endgroup +% +% \clearpage +% \suppressfloats[t] +% +% \section{Introduction}\label{sec:intro} +% +% During creation of document, you usually type figures and tables as \emph{floating objects} +% (\emph{floats}), i.e. put their contents +% inside |figure| and~|table| environments consequently. The simplest floating environment +% looks like: +%\begin{Quote} +%|\begin{|\meta{float type}|}| +%\meta{float contents (object)} +%|\caption{|\meta{caption contents}|}| +%|\end{|\meta{float type}|}| +%\end{Quote} +% or (if you want to put caption above): +%\begin{Quote} +%|\begin{|\meta{float type}|}| +%|\caption{|\meta{caption contents}|}| +%\meta{float contents (object)} +%|\end{|\meta{float type}|}| +%\end{Quote} +% +% \subsection{Loading The Package}\label{sec:load}\label{sec:start} +% +% Just now you have loaded the \package{floatrow} package: +%\begin{Quote} +%\begin{preamble} +%|\usepackage{floatrow}|\quad. +%\end{preamble} +%\end{Quote} +% In the time, when this package was loaded, +% all float contents in the document will be centered (unless another alignment command +% appears inside the float contents). All captions appear +% below float contents, regardless of how they were typed in source file. +% But, I'm almost sure, that you want to put table captions above table material. +% If you put in the next line the |\floatsetup| command: +%\begin{Quote} +%\begin{preamble} +%|\usepackage{floatrow}| +%|\|\FRkey[sec]{floatsetup}|[table]{|\FRkey{style}|=plaintop}|\quad, +%\end{preamble} +%\end{Quote} +% after that, again, you will get all table captions above table material, regardless of how +% they were typed in source file. These first minimal settings will arrange all floats +% contents and their captions accordingly to the real typographic rules. +% (The {\sectionname}~\ref{sec:floatsetup} describes and demonstrates various layouts, +% which you can get with the settings of |\|\FRkey[sec]{floatsetup} command.) +% +% But surely the settings above are still not sufficient to you, because you need to get +% the table caption width equal to the width of table material. Also you may want to put some +% figure captions beside graphics. Besides that, it is better to put small floats beside +% in one row. For all these reasons this package offers special commands for building of float boxes +% and a special environment to put these float boxes beside each other. +% +% \subsubsection{Float Box Commands}\label{sec:intro:flbox} +% One of the first macros of this package for creation of float boxes +% is a macro which builds contents of the table environment with caption +% above (|\|\FRkey[FB]{ttabbox}). The width of caption equals to the width of contents, e.g. +% of tabular (see table~\ref{intro:table}). (The first example uses plain \LaTeX{} +% layout---the \package{caption} and \package{floatrow} packages loaded without package setting options; +% the options at the end of |\usepackage| command define dates of package versions +% which support correct work of this tandem today.)%^^A +% \FRmpar{Caption above table object}{FAD:CaptionAbove}%^^A +%\begin{Quote} +%\begin{preamble} +% |\usepackage{caption}[2007/04/11]| +% |\usepackage{floatrow}[2007/08/24]| +%\end{preamble} +%|\begin{table}|\nopagebreak +%|\|\FRkey[FB]{ttabbox} +%| {\caption{A small table ...}\label{...}}| +%| {\begin{tabular}...\end{tabular}}|\nopagebreak +%|\end{table}|\vspace*{-\intextsep} +%\end{Quote} +%\begingroup +%\clearcaptionsetup{table}\clearfloatsetup{table} +%\floatsetup{style=default}\captionsetup{style=default}\def\thead#1{#1}\extrarowheight1pt +% \begin{table}[H]\tabcolsep1.5\tabcolsep +% \ttabbox +% {\caption{A small table with caption text above (\cmd{\ttabbox}) with plain \LaTeX{} +% layout}\label{intro:table}} +% {\jot2pt\begin{tabular}{|c|c|c|} +% \hline +% \thead{First column} & \thead{Second column} & \thead{Third column} \\ +% \hline +% A & B & C \\ +% D & E & F \\ +% \hline +% \end{tabular}} +% \end{table}%^^A +%\endgroup +% +% Another command which creates figures---|\|\FRkey[FB]{ffigbox} (figure~\ref{intro:figure})---puts +% caption below contents. The default width of caption equals +% to the width of text. (In the following example the most popular +% layout settings for captions were added.) +%\begin{Quote} +%\begin{preamble} +% |\usepackage|{\emphcolor|[font=small,labelfont=bf,labelsep=period,| +% | justification=centerlast]|}|{caption}|\vspace{1ex} +% |\usepackage{floatrow}| +%\end{preamble} +%|\begin{figure}| +%|\|\FRkey[FB]{ffigbox} +%| {\caption{A simple figure ...}\label{...}}| +%| {...}| +%|\end{figure}|\vspace*{-\intextsep} +%\end{Quote} +%\begingroup\floatsetup{style=default} +% \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}} +% {\unitlength1\unitlength\input{Doll.picture}} +% \end{figure}%^^A +%\endgroup +% The example above shows that a float box, created by +% the |\ffigbox| command looks similar to the plain |figure| environment. +% But if you set, for example, the option |[\|\FRkey{FBwidth}|]| like below: +% \FRmpar{Caption's width equals to object}{FAD:FBwidthI} +%\begin{Quote} +%|...| +%|\begin{figure}|\nopagebreak +%|\ffigbox[\|\FRkey[FB]{FBwidth}|]| +%| {\caption{A figure}\label{...}}| +%| {...}| +%|\end{figure}|\vspace*{-2\intextsep} +%\end{Quote} +%\begingroup\floatsetup{style=default} +% \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.44\unitlength\input{Horse.picture}} +% \end{figure}%^^A +%\endgroup +% you'll get a~caption width equal to the width of picture +% (figure~\ref{intro:figure:FBwidth}). +% +% The third macro---|\|\FRkey[FB]{fcapside} (figure~\ref{intro:beside})---puts +% caption beside. (In the next example the float layout settings were added, +% which put captions to the binding margin +% and changed value of separation space between caption and object to |\quad|.) +%\begin{Quote}[0pt] +%\begin{preamble} +%|...| +% |\usepackage|{\emphcolor|[|%^^A +% \FRkey{capbesideposition}|=inside,| +% | |\FRkey{facing}|=yes,|\FRkey{capbesidesep}|=quad]|}|{floatrow}| +%\end{preamble} +%|\begin{figure}| +%|\|\FRkey[FB]{fcapside} +%| {\caption{...}\label{...}}| +%| {...}| +%|\end{figure}|\enlargethispage\baselineskip\vspace*{-\intextsep} +%\end{Quote} +%\begingroup\floatsetup{style=default,capbesideposition=inside,facing=yes,capbesidesep=quad}% +%\clearcaptionsetup{capbesidefigure} +% \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.5cm/100}%^^A +% \input{Bear.picture}}} +% \end{figure} +%\endgroup +% The width of text, +% by default, divided into two columns, their width equals to the half text width +% (figure~\ref{intro:beside}) float margins and +% horizontal space (or width of the separation material) between float and caption are taken into account. +% The one column is occupied by the object, the other by the caption and foot material (explications +% or legends and footnotes). +% +% If you set the |[\FBwidth]| option: +% \FRmpar{The width of object box equals to object}{FAD:FBwidthII} +%\begin{Quote} +%|...|\nopagebreak +%|\fcapside[\FBwidth]|\nopagebreak +%|...| +%\end{Quote}\vspace*{-.5\intextsep} +%\begingroup\floatsetup{style=default,capbesideposition=inside,facing=yes,capbesidesep=quad}% +%\clearcaptionsetup{capbesidefigure} +% \begin{figure}[H] +% \fcapside[\FBwidth] +% {\caption[Beside caption (occupies rest space beside float object)]{Beside caption +% (the caption text occupies the rest space beside float 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:FBwidth}} +% {{\setlength\unitlength{3.5cm/100}%^^A +% \input{Bear.picture}}} +% \end{figure} +%\endgroup +% the graphic box width will be equal to the width of the graphics and the caption +% will occupy the rest space (see figure~\ref{intro:beside:FBwidth}). +% +% The examples above show the most frequent and most simple variants of float creation. Read +% {\sectionname}~\ref{sec:floatbox} about usage of these commands in different ways +% and how to create new commands for float creation. +% +% \subsubsection{Float Boxes In The Row}\label{sec:intro:flrow} +% 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 the |floatrow| environment. +% +%\begin{Quote} +%\begin{preamble} +% {\emphcolor %^^A +% |\DeclareCaptionLabelFormat{rightline}{\rightline|\nopagebreak +% | {\bothIfFirst{#1}{ }#2}}| +% |\captionsetup[table]{labelformat=rightline,labelsep=newline,|\nopagebreak +% | labelfont={md,sl},textfont=bf}|}\vspace{1ex} +% |\usepackage[|{\emphcolor\FRkey{font}|=small,|%^^A +% \FRkey{floatrowsep}|=qquad,|\FRkey{captionskip}|=5pt|}|]{floatrow}|\nopagebreak +% |\|\FRkey[sec]{floatsetup}|[table]{|%^^A +% {\emphcolor\FRkey{style}|=Plaintop|}|}|\nopagebreak +%\end{preamble} +%|\begin{table}| +%| \begin{|\FRkey[sec]{floatrow}|}| +%| \|\FRkey[FB]{ttabbox} +%| {\caption{...}\label{...}}| +%| {...}| +%| | +%| \ttabbox| +%| {\caption{...}\label{...}}| +%| {...}| +%| \end{floatrow}|\nopagebreak +%|\end{table}|\vspace*{-\intextsep} +%\end{Quote} +% \DeleteShortVerb{\|}% +%\floatsetup{style=default,font=small,floatrowsep=qquad,captionskip=5pt} +% \begin{table}[H] +% \begin{floatrow} +% \extrarowheight1pt\tabcolsep1.05\tabcolsep +% \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{\|}% +% As you see in the example with tables \ref{tab:row:tabIII} and~\ref{tab:row:tabIV}, +% you \emph{need} to use commands |\ttabbox|, which build box for each table. +% +% In the example with beside floats the special settings for table captions were applied +% (see \package{caption} package documentation). +% Float layout: The value of the separation space between beside floats have been changed to |\qquad|, +% the vertical skip between captions and float objects was changed to 5pt. For the tables +% the style |Plaintop| was used which not only puts captions above, but also aligns them by top line +% (see \sectionname~\ref{sec:floatsetup} of current documentation). +% +% \subsection{Do Not Write That With \package{floatrow} Package}\label{floatrow:wrong} +%\begingroup +% The \package{floatrow} package offers many features, and it causing some limitations +% for writing code of float contents in source file, too. If you'll write something like +%\begin{Quote} +%\begin{preamble} +%|\usepackage{floatrow}| +%\end{preamble} +%|\begin{table}\captionsetup{position=top}| +%| \caption{A table caption must be placed above, ...}| +%| \centering \begin{tabular}{cc} A & B \\ C & D \end{tabular}| +%|\end{table}| +%\end{Quote} +% please do not expect that the caption appears at the top of table: +% +% \begingroup\clearfloatsetup{table} +% \begin{table}[H] +% \captionsetup{position=top} +% \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 +% +% So if you want to put table captions above its contents\startNotes +% \Note change code, using command |\ttabbox|, +% like in table~\ref{intro:table}; \Note +% write |\|\FRkey[sec]{floatsetup}|[table]|\allowbreak|{|\FRkey{style}|=plaintop}| in the preamble +% ({\sectionname}~\ref{sec:floatsetup}); or +% \Note restore the standard \LaTeX{} behavior with the |\RawFloats| command +% or the package option |rawfloats| ({\sectionname}~\ref{sec:rawfloats}). +% +% The next example. If you put beside floats by following way: +%\par\nobreak\vbox{\begin{Quote} +%|...|\nopagebreak +%|\begin{figure}|\nopagebreak +%|\begin{minipage}{0.45\textwidth}| +%| \centering ...| +%| \caption{The figure caption, disappeared, ...}| +%|\end{minipage}\hfill| +%|\begin{minipage}{0.45\textwidth}| +%| \captionof{table}{The table caption ...}}| +%| \centering ...| +%|\end{minipage}|\nopagebreak +%|\end{figure}| +%\end{Quote}}\noindent +% you'll get error message about lost caption. +% Here you may:~\nobreak\quad1)\nobreak\enskip +% to put table contents inside |\|\FRkey[FB]{ttabbox} resp.\ the figure contents inside +% |\|\FRkey[FB]{ffigbox}; then both floats put inside \FRkey[sec]{floatrow} environment, and, since +% there is mixed row (it includes floats of different types, and also with different caption position), +% put the |\|\FRkey{killfloatstyle} command before ``foreign'' float |\ttabbox|, and +% |\|\FRkey[FB]{CenterFloatBoxes} command before |floatrow| environment +% (see~{\sectionname}~\ref{sec:mixrow} about mixed rows); or~\nobreak\quad2)\nobreak\enskip +% to restore the standard \LaTeX{} behavior, using command |\|\FRkey{RawFloats} +% or package option \FRkey{rawfloats} ({\sectionname}~\ref{sec:rawfloats}). +% +%\endgroup +%\clearpage +% \section{Macros for Building Floats} +% \FRorisubsection{The \texorpdfstring{\cs{floatbox}}{floatbox} Macro}\label{sec:floatbox} +% +% \DescribeMacro{\floatbox} +% The examples in Introduction ({\sectionname}~\ref{sec:intro:flbox}) +% use three commands |\ttabbox|, |\ffigbox| and |\fcapside|. All these commands +% were built using the |\floatbox| macro. +% This macro creates the float box with defined positioning of its elements (object, +% caption, foot material) and applies the layout of current float type. +% The usage of the |\floatbox| macro looks like: +% \begin{Quote} +% |\floatbox|\oarg{preamble}\marg{captype}\oarg{width}\oarg{height}\oarg{vert pos} +% | |\marg{caption}\marg{object} +% \end{Quote}%^^A +% The |\floatbox|'s arguments\label{floatboxsets}: +% \begin{description}\itemsep0pt +% \item[\meta{preamble}]there could be |\capbeside|\label{FB:capbeside} command which +% places caption beside float contents; +% |\nocapbeside|\label{FB:nocapbeside} +% (to put caption above/below, accordingly +% to float type's style); +% |\captop|\label{FB:captop} +% (to put caption above); +% or another systematic command +% (even with usage of |\captionsetup| +% and |\|\FRkey{thisfloatsetup}, +% see examples in documentation and appendix). +% \item[\meta{captype}]the type of float this command is created for. Since this command +% is supposed to appear outside floating environments or in ``foreign'' environments +% (see {\sectionname}~\ref{sec:mixrow} below), +% we write here, usually, the \emph{actual} name of float type; +% \item[\meta{width}]the width of object---caption box +% (in case of caption above or below object), +% or width of object box (if caption stays beside object). +% The empty width option, |[]|, and option |[\hsize]| mean the same; +% \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). With the empty height +% option, |[]|, is used the natural height of object; +% \item[\meta{vert pos}]vertical alignment of object contents in +% object's box in case of the \meta{height} argument differs from the natural value of +% object height, or in the float layout there are used settings +% for common (max) height for float objects inside |floatrow| environment. +% Arguments are analogous to |minipage|'s ones: +% \begin{Options}{cc} +% \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}\pagebreak[1] +% \item[\meta{caption}]text of caption; you +% may also use the |\footnote|/\allowbreak|\mpfootnotemark|/\allowbreak|\footnotetext| stuff +% for footnotes inside float, and/or |\floatfoot| command; +% \item[\meta{object}]contents of float; you may also use the +% |\footnote|/\allowbreak|\mpfootnotemark|/\allowbreak|\footnotetext| stuff and/or +% |\floatfoot| command. +% \end{description}\enlargethispage{\baselineskip} +% \emph{Note}. The order of the two last mandatory arguments, +% \meta{caption} and \meta{object}, and their contents makes no +% difference during building of float box. The |\floatbox| macro +% historically needs two mandatory arguments, but they could +% be filled freely, i.e. you may fill only one mandatory argument with object contents, caption etc. +% and left another one empty. +% +% \subsubsection{Float Box Width Equals to The Width of Object Contents} +% \DescribeMacro{\FBwidth}\label{FB:FBwidth}%^^A +% The |[\FBwidth]| option%^^A +% \FRmpar{Caption's width\\ equals to object}{FAD:FBwidthIII} +% in~the \meta{width} argument +% allows usage of natural width of float contents:\startNotes\Note +% for full float box in the case of caption +% above/\allowbreak below; \Note in~the case of caption beside float object, +% the natural width of float object expands to the +% object box only. +% +% \RestoreSpaces +% \emph{Note}. If you use the \verb|\FBwidth| command in the +% optional argument \meta{width}, please get 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.)\medskip +% +% \DescribeMacro{\FBheight}\label{FB:FBheight}%^^A +% The similar command, |[\FBheight]|, was +% created for the \meta{height} argument. The usage of this command makes sense, e.g., +% when \package{calc} is loaded: you may define height option like |[\FBheight+1cm]|. +% +% \subsubsection{Complex Example of Usage of \texorpdfstring{\cs{floatbox}}{floatbox} Command} +% The next example shows |figure| environment with beside caption. +% In this example the \meta{preamble} argument consists of rather complex definition. +% The \meta{width} option includes the |\FBwidth| command, so the object box +% has its natural width, the width of caption box equals to 4cm, and all lines in +% caption justified, but the last one flushed to the right. +% +%\begin{Quote} +%|\begin{figure}| +%\begin{preamble} +%|\newcommand\rightlast{\leftskip0ptplus1fil| +%| \rightskip0ptplus-1fil\parfillskip0ptplus1fil}| +%|\DeclareCaptionJustification{rightlast}{\rightlast}| +%\end{preamble} +%|\begin{figure}| +%|\floatbox[{\capbeside| +%| \captionsetup[capbesidefigure]{labelsep=newline,| +%| justification=rightlast}%| +%| \|\FRkey{thisfloatsetup}%^^A +% |{|\FRkey{capbesideposition}|={left,center},| +%| |\FRkey{capbesidewidth}|=4cm}}]{figure}[\FBwidth]| +%| {\caption{...}\label{...}}| +%| {...}| +%|\end{figure}| +%\end{Quote}\vspace*{-2\intextsep}\enlargethispage\baselineskip +%\begingroup +% \begin{figure}[H] +% \floatbox[{\capbeside +% \captionsetup[capbesidefigure]{labelsep=newline, +% justification=rightlast}% +% \thisfloatsetup{capbesideposition={left,center},capbesidewidth=4cm}}]{figure}[\FBwidth] +% {\caption[Beside caption (example width complex preamble in \cmd{\floatbox})]{Beside caption +% and some more text and a bit more text and +% a little more text to fill +% space}\label{fig:beside:mouse}} +% {{\setlength\unitlength{4cm/58}%^^A +% \input{Mouse.picture}}} +% \end{figure} +%\endgroup +% Please note that complex preamble options, which contain more than one command, must be placed +% inside curly braces. (See {\sectionname}~\ref{sec:floatsetup} about settings for floats +% with |\floatsetup|.) +% +% \subsection{Creation of Personal Commands for Float Boxes}\label{ssec:ffigbox:etc} +% The usage of |\floatbox| command with options (which could be cumbersome) +% is sometimes rather complex. +% The Introduction demonstrates the three already defined commands-abbreviations of this command. +% You may define commands-abbreviations (or redefine existing) for your own purposes and +% include some additional style definitions and settings there. +% +% \DescribeMacro{\newfloatcommand}\label{FB:newfloatcommand}%^^A +% \DescribeMacro{\renewfloatcommand}\label{FB:renewfloatcommand}%^^A +% The definition of new float abbreviation looks like: +% \begin{Quote} +% |\newfloatcommand|\marg{command}%^^A +% \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 floating 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 main purpose of this optional argument is +% setting it to |\FBwidth|, which is already included in definition of |\ttabbox|---the command for +% building tables. You may also use any dimensions like |6cm| or |\textwidth| here. +% \end{description} +% +% For example you may define command for figure~\ref{fig:beside:mouse} +% like following: +%\begin{Quote}% +%|\newfloatcommand{fcapbesideleft}[{\capbeside| +%| \captionsetup[capbesidefigure]{labelsep=newline,| +%| justification=rightlast}%| +%| \thisfloatsetup|%^^A +% |{capbesideposition={left,center},| +%| capbesidewidth=4cm}}][\FBwidth]| +%\end{Quote} +% +% \subsubsection{Usage of Personal Float Box Commands} +% Your defined commands can be used in the following way (example for |\ffigbox|): +% \begin{Quote} +% |\ffigbox|\oarg{width}\oarg{height}\oarg{vert pos}\marg{caption}\marg{object} +% \end{Quote} +% where the options are: +% \begin{description}\itemsep0pt\parskip1ptplus1pt +% \item[\meta{width}] +% the width of object---caption box +% (in case of caption above or below object), +% or width of object box (if caption stays beside object). +% The empty width option, |[]|, and option |[\hsize]| mean the same. The |[\FBwidth]| +% option sets natural object width; +% \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). The |[\FBheight]| +% option sets natural object height. With the empty height option, |[]|, is used +% the natural height of object; +% \item[\meta{vert pos}] +% vertical alignment of object contents in +% object's box in the case of \meta{height} argument has a~different value than +% natural height of object contents, or in the float layout there are used settings for common (max) +% heights of float elements (object or/and caption) inside |floatrow| environment. +% Arguments are analogous to |minipage|'s: +% |t|, |c|, |b|, |s| (see above). +% \end{description} +% See examples with usage of all options on the page~\pageref{fig:rotrow:FcatI} and in Appendix. +% +% \subsubsection{Predefined Float Box Commands} +% Let's repeat three already defined commands-abbreviations, defined in package:\label{abbrcom}%^^A +% \begin{Quote} +% |\newfloatcommand{ffigbox}{figure}[\nocapbeside]|\label{FB:ffigbox}\nopagebreak +% |\newfloatcommand{fcapside}{figure}[\capbeside]|\label{FB:fcapside}\nopagebreak +% |\newfloatcommand{ttabbox}{table}[\captop][\FBwidth]|\label{FB:ttabbox} +% \end{Quote} +% You may see that these commands-abbreviations are equivalent to the following code: +% \begin{Options}{fcapside} +% \item[\cmd\ttabbox]---|\floatbox[\captop]{table}[\FBwidth]|; +% \item[\cmd\ffigbox]---|\floatbox{figure}| (simplest definition); and +% \item[\cmd\fcapside]---|\floatbox|\allowbreak|[\capbeside]{figure}|. +% \end{Options}% +% The first two are defined for figures, and the third one for tables. You may +% redefine existing macros using |\renewfloatcommand| command (it uses +% the same arguments as |\newfloatcommand| one). +% +% \emph{Note}. In the documentation text below the name of the |\floatbox| command means +% both itself and all commands-abbreviations, defined with |\(re)newfloatcommand|. +% +%\begin{small} +% +% \medskip\emph{Some explanation}. The strange ``stammering'' names of float boxes, +% with doubled first letters, |\ffigbox| and |\ttabbox| were created, because of the +% expected names, |\figbox| and |\tabbox|, are already used by the \package{floatflt} +% package, which creates figures and tables which do not span the full width of a page and +% are filled around by text (i.e. \emph{wrapped} floats, see {\sectionname}~\ref{ssec:floatflt}). +% Also there were founded |\figbox| in \package{formlett} +% and |\tabbox| in \package{automata} package among styles in \LaTeX{} folder. +% +%\end{small} +% +% \subsection{Building Float Row}\label{sec:floatrow} +% The |floatrow| environment allows to put two or more floats beside. The usage of it looks like: +% \begin{Quote} +% |\begin{floatrow}[|\meta{number of beside floats}|]|\nopagebreak +% |\floatbox...|\nopagebreak +% |\floatbox...|\nopagebreak +% |...|\nopagebreak +% |\end{floatrow}| +% \end{Quote} +% +% Please note that \emph{for each float box} inside |floatrow| you must use |\floatbox|, |\ffigbox|, +% |\ttabbox| or your own command, created with |\newfloatcommand| macro. +% +% The |floatrow| environment creates necessary number of ``columns'', +% the default number is two, where floats are placed (during the calculation of width of column +% the widths of the separations between beside floats and margins around the float row are taken into account). +% You may redefine the width of each float box, +% e.g. the boxes of tables~\ref{tab:row:tabIII} and~\ref{tab:row:tabIV} (page~\pageref{tab:row:tabIII}) +% have the width of their contents +% (remember, the |[\FBwidth]| is default option of |\ttabbox|). +% +% During building each float box inside float row, the |floatrow| environment calculates +% the rest space in the row and writes this value at the special parameter |\Xhsize|, which you +% may use inside \meta{width} option of |\floatbox| command. +% The next example with figures uses |[\FBwidth]| command in option for the left float, +% and |[\Xhsize]| command---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 (\texttt{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 (\texttt{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 +% +% Usually the command |\Xhsize|\label{FB:Xhsize} is used for the last float +% box to occupy the rest space of the row. +% 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. Another variant: you may set something in \meta{width} +% argument something like |\Xhsize/2| and then |\Xhsize| for two last +% float boxes---the next example just uses it: the first float 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 floats divide the rest horizontal space of page into two equal pieces which were +% calculated by command |\Xhsize| and \package{calc} package.\pagebreak[1] +%\begin{Quote} +%\begin{preamble} +% |\usepackage{calc}|\vspace{1ex} +% |\makeatletter\@mparswitchfalse\makeatother|\vspace{1ex} +% |\|\FRkey{DeclareMarginSet}|{hangleft}{\|\FRkey{setfloatmargins} +% | {\hskip-\marginparwidth\hskip-\marginparsep}{\hfil}}|\vspace{1ex} +% |\|\FRkey[sec]{floatsetup}|[widefigure]{|%^^A +% \FRkey{margins}|=hangleft}| +%\end{preamble} +%|\begin{figure*}| +%|\begin{floatrow}|{\emphcolor|[4]|} +%| \ffigbox|\nopagebreak +%| {\caption{Beside figure~I...}...}{...}|\nopagebreak +% +%| \ffigbox[\FBwidth]|\nopagebreak +%| {\caption{Beside figure~II...}...}{...}|\nopagebreak +% +%| \ffigbox[\Xhsize/2]|\nopagebreak +%| {\caption{Beside figure~III...}...}{...}|\nopagebreak +% +%| \ffigbox[\Xhsize]|\nopagebreak +%| {\caption{Beside figure~IV...}...}{...}|\nopagebreak +%|\end{floatrow}| +%|\end{figure*}| +%\end{Quote} +%\begingroup\makeatletter +% \floatsetup[widefloat]{margins=hangleft} +% \begin{figure*}% +% \begin{floatrow}[4] +% \ffigbox +% {\caption{Figure~I in the row (\texttt{floatrow}), ``column'' width}% +% \label{fig:row:Dog}} +% {\input{TheDog.picture}} +% +% \ffigbox[\FBwidth] +% {\caption{Figure~II in the row (\texttt{floatrow}), graphics width}% +% \label{fig:row:WcatI}} +% {\unitlength1.08\unitlength\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:mouse}} +% {{\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:cheese}} +% {\input{Cheese.picture}} +% \end{floatrow} +% \end{figure*}% +%\endgroup +% The result you see in the row of +% figures~\ref{fig:row:Dog}--\ref{fig:row:cheese}. Please note that in the examples with rows, +% the vertical alignment of floats lays on the bottom of upper part (here: objects) +% of float and the top of lower part (captions). +% +% The current example uses the starred |figure*| environment, which demonstrates here the possibility +% of creation and usage of the alternative layout for the float type (here for the figure). +% It sets the special margin settings, +% which allow to expand to the left margin (see page~\pageref{setup:margins} about margins settings +% in |\floatsetup| command). The first command in this example, between |\makeatletter| and +% |\makeatother| commands, switch of facing margins in twoside document: margins on all pages +% appear on the left side (like in current document). +% +% \subsubsection{Mixed Row}\label{sec:mixrow} +% \textbf{Problems}.\startNotes\Note Sometimes, for example, it is necessary to put beside +% figure and table. The problem of such mixed row is that you must put different types of float in +% one floating environment, which sets its own layout for included float box(es). +% +% \Note 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 an undesirable result. +% +% \DescribeMacro{\killfloatstyle} +% \textbf{Solutions}.\startNotes\Note For creation of right layouts for each float type in mixed row, +% you ought to write |\|\FRkey{killfloatstyle} command just before each ``foreign'' +% (for current floating environment) |\floatbox| macro. +% +% \DescribeMacro{\CenterFloatBoxes} +% \DescribeMacro{\TopFloatBoxes} +% \DescribeMacro{\BottomFloatBoxes} +% {\sloppy\Note For correct vertical alignment of different float types, which put captions in different +% positions, you may use one of the following commands: +%\begin{Quote} +%|\CenterFloatBoxes|\label{FB:CenterFloatBoxes} +%|\TopFloatBoxes|\label{FB:TopFloatBoxes} +%|\BottomFloatBoxes|\label{FB:BottomFloatBoxes} +%\end{Quote} +% which align \emph{full} float boxes by center, top or bottom lines. +% There is also |\PlainFloatBoxes|\label{FB:PlainFloatBoxes} which restores standard behavior of +% |\floatbox|'es.\par} +% +% \DescribeMacro{\buildFBBOX} +% These macros were created by |\buildFBBOX|\label{FB:buildFBBOX} macro, which can be written like +%\begin{Quote} +%|\buildFBBOX|\marg{starting code of the box}\marg{finishing code of the box} +%\end{Quote} +% just before any |\floatbox| command (or |floatrow| environment). +% For example, definition of |\CenterFloatBoxes| +% looks almost like following: +%\begin{Quote} +%^^A%|\newcommand\CenterFloatBoxes{\CADJfalse\OADJfalse| +%|\newcommand\CenterFloatBoxes{%| +%| \buildFBBOX{\hbox\bgroup$\vcenter\bgroup\vskip0pt}%| +%| {\vskip0pt\egroup$\egroup}}| +%\end{Quote} +% The other two commands use |\vtop| and |\vbox| boxes consequently. +% (see also example with usage of |\buildFBBOX| command on the page~\pageref{buildFBBOX:def}). +% +% In the next example we use |\CenterFloatBoxes| command before |floatrow| +% and |\killfloatstyle| just before |\ttabbox| macro +% (mixed float row with figure~\ref{fig:rowmixspec:WcatI} in |Boxed| style, and +% table~\ref{tab:rowmixspec:tabI}\label{mixrow}): +%\begin{Quote} +%\begin{preamble} +%|\|\FRkey[sec]{floatsetup}|[figure]{|\FRkey{style}|=Boxed}| +%\end{preamble} +%|\begin{figure}\CenterFloatBoxes|\nopagebreak +%|\begin{floatrow}| +%| \|\FRkey[FB]{ffigbox}|[\|\FRkey[FB]{FBwidth}|]| +%| ...| +%| \|\FRkey{killfloatstyle}|\|\FRkey[FB]{ttabbox} +%| ...| +%\end{Quote} +% \DeleteShortVerb{\|}% +% \begingroup\floatsetup[figure]{style=Boxed} +% \begin{figure}[H]\CenterFloatBoxes +% \begin{floatrow} +% \ffigbox[\FBwidth] +% {\unitlength1.75\unitlength\input{Horse.picture}} +% {\caption{A \texttt{Boxed} 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{\|}% +% \RestoreSpaces\enlargethispage{\baselineskip} +% +% \emph{Note.} Both figure and table boxes have got width equal to +% contents of objects: the |\ffigbox| command in the example has optional argument +% |[\FBwidth]|, but |\ttabbox| does not have 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 floating 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 (see \sectionname~\ref{floatrow:wrong}). If you still need a raw behavior +% of floating environment, you may do that by one of the following three ways.\startNotes +% +% \Note\DescribeMacro{\RawFloats}\label{setup:RawFloats}%^^A +% If you want \LaTeX\ behavior \emph{just for one environment}, +% input a |\RawFloats| command \emph{inside} environment: +%\begin{Quote} +%\begin{preamble} +%|\|\FRkey[sec]{floatsetup}|[figure]{|\FRkey{style}|=Boxed}|\%{ \em please note, it does nothing here} +%\end{preamble}\vskip-\lastskip +%|\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}. +%\begingroup\floatsetup[figure]{style=Boxed}\relax +% \begin{figure}[H]\RawFloats +% \captionsetup[table]{position=top} +% \begin{minipage}{0.45\textwidth} +% \centering {\unitlength1.44\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 beside 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} +%\endgroup +% Compare this example with example in the {\sectionname}~\ref{sec:mixrow} and the following +% figure~\ref{leftfig:raw} and table~\ref{righttab:raw}. +%\begin{Quote} +%\begin{preamble} +%|\|\FRkey[sec]{floatsetup}|[figure]{|\FRkey{style}|=Boxed}| +%\end{preamble} +%|\begin{figure}\RawFloats\|\FRkey[FB]{CenterFloatBoxes}\nopagebreak +%|\begin{|\FRkey[sec]{floatrow}|}| +%| \|\FRkey[FB]{ffigbox}|[\|\FRkey[FB]{FBwidth}|]|\nopagebreak +%| {...}|\nopagebreak +%| {\caption{...}\label{...}}| +%| | +%| \|\FRkey[FB]{ttabbox}\nopagebreak +%| {...}|\nopagebreak +%| {\caption{...}\label{...}}| +%|\end{floatrow}|\nopagebreak +%|\end{figure}| +%\end{Quote} +%\begingroup\floatsetup[figure]{style=Boxed} +% \begin{figure}[ht]\RawFloats\CenterFloatBoxes +% \begin{floatrow} +% \ffigbox[\FBwidth] +% {\unitlength1.44\unitlength\input{Horse.picture}} +% {\caption{A figure in \cmd{\ffigbox} and inside \texttt{floatrow} in raw \LaTeX's mode}% +% \label{leftfig:raw}}% +% +% \ttabbox +% {\caption{A table in \cmd{\ttabbox} and inside \texttt{floatrow} in raw +% \LaTeX's mode}\label{righttab:raw}} +% {\tabcolsep5\tabcolsep +% \begin{tabular}{|c|c|}\hline A & B \\ C & D \\ \hline +% \end{tabular}} +% \end{floatrow} +% \end{figure}%^^A +%\endgroup +% +% \Note Canceling of \package{floatrow}'s behavior for \emph{all floats of one type +% or subtype} should be done outside any floating environment, usually in the +% preamble of the document. 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 the plain \LaTeX{} mode to all +% figures in all subtype environments (|figure|, |figure*|, +% |sidewaysfigure|, |wrapfigure|, etc., see page~\pageref{sec:floatsetup}). +% 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 |float|, |widefloat|, +% |rotfloat|, |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 +% +% \Note\DescribeMacro{rawfloats}\label{setup:rawfloats}%^^A +% This option stores the plain \LaTeX{} mode (i.e. stores usage of +% standard \LaTeX{} float macros) for all \emph{standard and new defined} +% float types. This option can be used only in |\usepackage| line. +% +%\medskip +% \emph{Notes}.\startNotes\nopagebreak +% +% \Note Please note that with |\RawFloats[...]| command and |rawfloats=| key +% you will cancel layout (|\floatsetup|) settings of all chosen float types/subtypes +% ({\sectionname}~\ref{sec:floatsetup}) for plain floats. +% +%\begingroup +% {\emergencystretch2em\Note The |floatrow| environment ({\sectionname}~\ref{sec:floatrow}) +% and commands of |\floatbox| stuff ({\sectionname}~\ref{sec:floatbox}) +% still work after |\RawFloats[...]| command and |rawfloats=| key +% (see example with figure~\ref{leftfig:raw} +% and table~\ref{righttab:raw})\label{FAD:MixedRow}. +% Also note that\startNotes\def\theNote{\alph{Note}}\Note +% the layout settings of the package, written in |\usepackage| line +% and inside |\floatsetup{...}| command, and settings for main types of floats +% like |\floatsetup|\allowbreak|[figure]{...}| or |\floatsetup|\allowbreak|[table]{...}| +% still can work inside |\|\FRkey{floatbox} commands; \Note for the figures inside |\fcapside| +% command and similar ones (with the |\|\FRkey{capbeside} command +% inside the |\floatbox|'s \meta{preamble} option)---the settings |\floatsetup|\allowbreak|[capbesidefloat]{...}| +% and |\floatsetup|\allowbreak|[capbesidefigure]{...}| or |\floatsetup|\allowbreak|[capbesidetable]{...}| +% work; \Note inside the \FRkey{floatrow} environment---the settings |\floatsetup|\allowbreak|[floatrow]{...}| +% and |\floatsetup|\allowbreak|[figurerow]{...}| or |\floatsetup|\allowbreak|[tablerow]{...}| are added +% to the settings for |\floatbox|'es inside; +% \Note also you may use |\|\FRkey{thisfloatsetup} settings in the case of usage of |\floatbox| commands. +% +% The settings for all other layout subtypes +% (see {\sectionname}~\ref{sec:floatsetup}) will be canceled.\par} +%\endgroup +% +% \subsubsection{Raw Caption---Printing in Unusual Way} +% \DescribeMacro{\RawCaption}\label{setup:RawCaption}%^^A +% This command allows to ``release'' caption contents from special box register created by +% \package{floatrow} package for the creation of necessary layout. The caption is placed as +% argument of |\RawCaption|: +% \begin{Quote} +% |\RawCaption{\caption\marg{contents}\label{...}}|\quad. +% \end{Quote} +% In this case the settings of float layout of current type will be stored, but +% you may put caption in non-standard way. For example in the free corner of the +% graphics (figure~\ref{rawcaption:plain}): +%\begingroup +% \begin{Quote} +%\begin{preamble} +%|\|\FRkey[sec]{floatsetup}|[figure]{|\FRkey{style}|=plain}| +%\end{preamble}\vskip-\lastskip +%|\begin{figure}|\lineskip0pt +%|\framebox(70,60){...}\hspace{2\unitlength}%| +%|\framebox(70,60){...}\vspace{2\unitlength}\par| +%|\framebox(70,60){...}\hspace{2\unitlength}%| +%|\parbox[b][60\unitlength]{70\unitlength}%| +%| {\RawCaption{\caption{...}\label{...}}}| +%|\end{figure}| +% \end{Quote}\enlargethispage\baselineskip +%\floatsetup{style=plain} +%\begin{figure}[H]\unitlength1.28\unitlength\lineskip0pt +%\framebox(70,60){\input{TheCat.picture}}\hspace{2\unitlength}%^^A% +%\framebox(70,60){\unitlength.5\unitlength\input{TheCat.picture}}\vspace{2\unitlength}\par +%\framebox(70,60){\unitlength.25\unitlength\input{TheCat.picture}}\hspace{2\unitlength}%^^A% +%\parbox[b][60\unitlength]{70\unitlength}{\RawCaption{\caption +% [Caption in raw \LaTeX{} mode, placed in the free corner of figure]{Caption in raw \LaTeX{} mode, placed in the free corner of figure}\label{rawcaption:plain}}} +%\end{figure}% +% The more suitable example of usage of the |\RawCaption| command see on the +% page~\pageref{fig:subIcap:IcatsI} (figure~\ref{fig:subIcap:IcatsI} with modified +% \verb|BOXED| style). +%\endgroup +% +% \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. This package has +% a~mechanism which allows to put footnotes inside floating environments, in +% the same way as is in \LaTeX's |minipage| environment. +% +% In the case of few elements have the same footnote, we cannot +% use standard |\footnotemark|---|\footnotetext| combination, because +% |\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}\label{FB:mpfootnotemark} +% macro instead of |\footnotemark|. +% (The same macro also is defined in \package{footmisc} package. +% The \package{floatrow} package doubles this definition.) +% \begin{Quote} +% \begin{preamble} +% |\|\FRkey[sec]{floatsetup}|[table]{...,|\FRkey{footnoterule}|=none,|%^^A +% \FRkey{footskip}|=.35\skip\footins,...}| +% \end{preamble}\vskip-\lastskip +% |\begin{table}| +% |\|\FRkey[FB]{ttabbox} +% | {\caption{...}\label{...}}%| +%\verb+ {\begin{tabular}{...}+ +% |... & 2\mpfootnotemark[1] \\| +% |...| +% | \end{tabular}%| +% | \footnotetext[1]{Even numbers.}}|\nopagebreak +% |\end{table}|\vspace*{-\intextsep} +% \end{Quote}% +% \DeleteShortVerb{\|}% +%\begingroup\floatsetup[table]{footnoterule=none,footskip=.35\skip\footins} +% \begin{table}[H] +% \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}% +%\endgroup +% \MakeShortVerb{\|}% +% +% {\sloppy The |\|\FRkey[sec]{floatbox} macro uses special definition of footnote rule +% (the \FRkey{footnoterule}|=| key, see also +% page~\pageref{sec:footnotestyle} for variants of footnote rule) and skip before footnotes and +% explications or legends (the \FRkey{footskip}|=| key).\par} +% +% \subsection{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 the |\floatfoot|\label{FAD:Legend} +% command. The |\floatfoot| is +% build by usage of |\caption| stuff and uses by default caption's text justification: +%\begin{Quote} +%|\begin{table}|\nopagebreak +%|\|\FRkey[FB]{ttabbox} +%| {\caption{...}\label{...}}| +% \verb+ {\begin{tabular}{...}+ +%| ...\end{tabular}%| +%| \floatfoot{`Data I' column ...}}|\nopagebreak +%|\end{table}|\vspace*{-\intextsep} +%\end{Quote} +% \DeleteShortVerb{\|}% +%\begingroup\floatsetup[table]{footnoterule=none,footskip=.35\skip\footins} +% \begin{table}[H] +% \ttabbox +% {\caption{Table with foot material (e.g. legend)}%^^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}% +%\endgroup +% \MakeShortVerb{\|}% +% +% The star form (|\floatfoot*|) prints its contents as plain unindented +% paragraph (see table~\ref{tab:floatfoot}). +%\begin{Quote} +%| ...\end{tabular}%| +%| \floatfoot*{`Data I' column ...}}|\nopagebreak +%|\end{table}|\vspace*{-\intextsep} +%\end{Quote} +% \DeleteShortVerb{\|}% +%\begingroup\floatsetup[table]{footnoterule=none,footskip=.35\skip\footins} +% \begin{table}[H] +% \ttabbox +% {\caption{Table with foot material (e.g. legend) printed as unindented paragraph}%^^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}% +%\endgroup +% \MakeShortVerb{\|}% +% +% For defining of explication font use \FRkey{footfont}|=| option +% in |\floatsetup| (page~\pageref{setup:footfont}). You may try to +% define special settings for float foot using +% \cmd{\captionsetup[floatfoot]} (see~{\sectionname}~\ref{sec:floatsetup}). +% +% \emph{Notes.} \startNotes\Note 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|\mpfootnotemark|/\allowbreak|\footnotetext| stuff instead. +% +% \Note If you use both commands |\floatfoot| and |\footnote| +% inside one float box, the |\floatfoot| appears above |\footnote| +% contents. +% +% \Note 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 description of \FRkey{footposition}|=| key +% on the page \pageref{setup:footposition} +% and sample file \file{frsample01.tex}). In case of caption beside +% float object, footnotes and foot text are always placed below caption. +% +% \subsection{Fine Tuning of Vertical Spaces of Float}\label{sec:FBabskips} +% At the final variant of document you may need to correct vertical +% spaces between float and main text, between float object and +% caption. +% +% To change space between float box and main text, you may use +% two simple commands |\FBaskip| and |\FBbskip|. For example define +% \begin{Quote} +% |\renewcommand\FBaskip{-4pt}| +% |\begin{figure}| +% | ...| +% |\end{figure}| +% \end{Quote} +% to move up float box up (or reduce space above) by 4pt. Or write +% \begin{Quote} +% |\renewcommand\FBbskip{-5pt}| +% |\begin{figure}[t]| +% | ...| +% |\end{figure}| +% \end{Quote} +% to reduce space below (here: distance between figure and main text) by 5pt. +% 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 floating 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.}. +% +% \emph{Note}. If you'll write something like: +% \begin{Quote} +%\begin{preamble} +% |\usepackage{floatrow}| +%\end{preamble} +% |\begin{figure}|\nopagebreak +% | ...| +% |\caption{...}| +% |\vspace{-6pt}|\nopagebreak +% |\end{figure}| +% \end{Quote} +% in \emph{plain} floats like in example above, you will change space between caption +% and object (in the case of caption below object). +% Again, for layout with caption above: +% \begin{Quote} +%\begin{preamble} +% |\usepackage[|\FRkey{capposition}|=top]{floatrow}| +%\end{preamble} +% |\begin{figure}|\nopagebreak +% |\vspace{-6pt}|\nopagebreak +% |\caption{...}| +% | ...| +% |\end{figure}| +% \end{Quote} +% you will get the reduced space between caption above and object contents. +% +% \clearpage +% \section{Float Layout Settings}\label{sec:floatsetup} +% +% The idea of \package{floatrow} package is to avoid a lot of repeated code +% for creation of desired layout for floats inside the document text. +% If you ought to change the layout of one float type or even of all float types, +% the package allows also to make these modifications +% of layout much easier. In this case you only have to care +% about the \emph{markup} of floats and their contents. +% +% The easy modification of common layout of all float types or only for one +% float type is possible because of the borrowed code from the \package{float} +% package, which allows to modify layout of floats of one type as a whole. +% +% The common layouts and modification for captions for all float types as a whole, +% for each float type separately, and other special settings +% are supported by \package{caption} package, version~3.\emph{x}. +% +% The layout settings of \package{floatrow} package are built similarly +% to the settings from the \package{caption}~3.\emph{x} package. So the layout settings of the +% |\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}).} command are built in +% similar way as layout settings +% of the |\captionsetup| command\footnote{Look also at the \package{caption} +% documentation (version 3.0 and later)}. +% +% You may use the layout settings as \package{floatrow} option in +% the |\usepackage| line in the preamble of codument. +% \begin{Quote} +%\begin{preamble} +% |\usepackage[|\meta{options}|]{floatrow}|\quad. +%\end{preamble} +% \end{Quote} +% You may write +% \begin{Quote} +%\begin{preamble} +% |\usepackage[style=boxed,font=small]{floatrow}|\quad. +%\end{preamble} +% \end{Quote} +% +% \DescribeMacro{\floatsetup} +% The same result you get with the |\floatsetup| command: +% \begin{Quote} +%\begin{preamble} +% |\usepackage{floatrow}| +% |\floatsetup{style=boxed,font=small}|\quad. +%\end{preamble} +% \end{Quote} +% The lines above declare the |boxed| float style (this style creates +% the frame around float object which is built by \LaTeX's |\fbox| command) and the +% |\small| font for contents of float objects. These settings are loaded for \emph{all} float types. +% +% The usage of the |\floatsetup| command has following form: +% \begin{Quote} +% |\floatsetup|\oarg{float type}\marg{options}\quad, +% \end{Quote} +% where option \meta{float type} is the name of float type. You can use this optional +% argument for creating of special settings of chosen 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 |floatrow| +% environment, text of captions is aligned by the top lines. +% +% The |[table]| or the |[figure]| options are not the only options you are allowed to use. +% The |\floatsetup| command allows usage of a number of special options for settings +% for floats in different positioning: plain floats, two-column floats (in one-column layout +% of the document, the starred environment like +% |figure*| can be used for alternative float layout, e.g. for +% wide floats, which expand to the margins) rotated floats, wrapped floats. There is also +% minor support for floats with captions placed beside float objects.\medskip +% +% Below are lists of all possible options of the |\floatsetup| command. +% They are based, as example, on the |figure| environment. +% The ``strength'' of options in the lists below decreases +% from the previous item to the next one. +% \begin{itemize}\label{stsetorder} +% \item +% Wide or two-column floats (|figure*|): +% \begin{itemize} +% \item +% |\floatsetup[widefigure]|\label{setup:widefigure}---the ``strongest'' settings; +% if they are absent, the settings from the next item will be used; +% \item +% |\floatsetup[widefloat]|\label{setup:widefloat}---these settings ``stronger'' +% than settings from next item (|\floatsetup[figure]|); +% if they are absent, the settings from the next item will be used; +% \item +% |\floatsetup[figure]|; +% if they are absent, package uses settings from +% optional argument in |\usepackage| line or |\floatsetup{...}| +% command; if they are absent---the default package settings will be used +% (see page~\pageref{sec:default}); +% \end{itemize} +% \item +% Wrapped floats (|wrapfigure|, used with \package{wrapfig} package): +% \begin{itemize} +% \item |\floatsetup[wrapfigure]|\label{setup:wrapfigure}; +% \item |\floatsetup[wrapfloat]|\label{setup:wrapfloat}; +% \item |\floatsetup[figure]|; +% \end{itemize} +% \item +% Rotated floats (|sidewaysfigure|, +% used with \package{rotating} package): +% \begin{itemize} +% \item |\floatsetup[rotfigure]|\label{setup:rotfigure}; +% \item |\floatsetup[rotfloat]|\label{setup:rotfloat}; +% \item |\floatsetup[figure]|; +% \end{itemize} +% \item +% Wide or two-column rotated floats +% (|sidewaysfigure*|): +% \begin{itemize} +% \item |\floatsetup[widerotfigure]|\label{setup:widerotfigure}; +% \item |\floatsetup[widerotfloat]|\label{setup:widerotfloat}; +% \item |\floatsetup[rotfigure]|; +% \item |\floatsetup[rotfloat]|; +% \item |\floatsetup[figure]|; +% \end{itemize}\enlargethispage\baselineskip +% \emph{Note}. The settings +% for wide float (|widefloat|, |widefigure|) +% are skipped for rotated floats---use settings for |widerotfloat| +% and---here---|widerotfigure|;\pagebreak[1] +% \item +% Beside floats: +% \begin{itemize} +% \item |\floatsetup[floatrow]|\label{setup:floatrow}; +% \item |\floatsetup[figurerow]|\label{setup:figurerow}; +% \item +% settings of outer environment from previous items, e.g., +% |sidewaysfigure*|, |sidewaysfigure|, |figure*| and |figure|. +% \end{itemize} +% \item +% Floats with beside captions (please note, that settings in these options are limited, +% see next section): +% \begin{itemize} +% \item |\floatsetup[capbesidefigure]|\label{setup:capbesidefigure}; +% \item |\floatsetup[capbesidefloat]|\label{setup:capbesidefloat}; +% \item +% settings for the float row; settings of outer environment from previous items, e.g., +% |sidewaysfigure*|, |sidewaysfigure|, |figure*| and |figure|. +% \end{itemize} +% \end{itemize} +% +% \emph{Notes}.\startNotes\nopagebreak +% +% \Note You can also create and change special settings for captions of +% necessary float types or subtypes, using +% co-named \meta{float~type} options inside the |\captionsetup| command, +% e.g., |\captionsetup[widefigure]{...}|. +% +% \Note Please note that with |\RawFloats[...]| command and |rawfloats=| key +% (\sectionname~\ref{sec:rawfloats}) you will cancel all layout +% settings created as options in the |\usepackage| line or inside +% the |\floatsetup| command for all chosen float types/subtypes. +% +%\begingroup +% {\emergencystretch2em\Note The |floatrow| environment ({\sectionname}~\ref{sec:floatrow}) +% and |\floatbox| commands (e.g. |\ffigbox|, |\ttabbox|, see {\sectionname}~\ref{sec:floatbox}) +% still work after both |\RawFloats| (|\RawFloats[...]|) command and |rawfloats=| key (see example width +% figure~\ref{leftfig:raw} and table~\ref{righttab:raw})\label{FAD:MixedRowA}. +% Also note that\startNotes\def\theNote{\alph{Note}}\Note +% inside |\|\FRkey{floatbox} commands still can work layout settings +% of the package, written in |\usepackage| line and inside |\floatsetup{...}| command, +% and settings for main types of floats like |\floatsetup|\allowbreak|[figure]{...}| +% or |\floatsetup|\allowbreak|[table]{...}|; \Note for the figures inside |\fcapside| +% command and similar ones (with the |\|\FRkey{capbeside} command +% inside the |\floatbox|'s \meta{preamble} option) the settings |\floatsetup|\allowbreak|[capbesidefloat]{...}| +% and |\floatsetup|\allowbreak|[capbesidefigure]{...}| or |\floatsetup|\allowbreak|[capbesidetable]{...}| +% work; \Note inside the \FRkey{floatrow} environment the settings |\floatsetup|\allowbreak|[floatrow]{...}| +% and |\floatsetup|\allowbreak|[figurerow]{...}| or |\floatsetup|\allowbreak|[tablerow]{...}| are added +% to the settings for |\floatbox|'es inside; +% \Note also you may use |\|\FRkey{thisfloatsetup} settings in the case of usage of |\floatbox| commands. +% +% The settings for all other layout subtypes +% (see {\sectionname}~\ref{sec:floatsetup}) will be canceled.\par} +%\endgroup +% +% The next few sections describe keys of |\floatsetup| macro. +%\enlargethispage\baselineskip +% \subsection{Floatsetup Keys}\label{sec:floatkeys} +% \FRorisubsubsection{Float Style} +% \DescribeMacro{style}\label{setup:style}%^^A +% The \emph{float style} could include settings of the justification (in particular) of float contents; +% margins (in particular the alignment of float boxes); separation material between objects and captions +% and between float boxes in a~row (mainly spaces); frames or lines and other options. +% +% The \emph{float style} is specified by following way: +% \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 the \\|\DeclareFloatStyle| command, +% see page~\pageref{ssec:declstyle}. +% \end{Options} +% +% As you may see in the table~\ref{tab:floatlayouts}, the \package{floatrow} package +% includes all float styles +% which emulate co-named ones from the \package{float} package. +% +% Please note, that usage of |style=| key for floats with beside captions, +% i.e.~using |\floatsetup| settings with options like, e.g., +% |[capbesidefigure]| or |[capbesidefloat]| can destroy layout for this float subtype. +% For example that key cancels settings for beside position of caption. +% If you really need to create the alternative +% layout for floats with beside captions, for example to print float objects in frames, +% using the |Boxed| style:~\nobreak\quad1)\nobreak\enskip if you are creating +% one-column document, revise your settings +% which were used for float creation, maybe you didn't use the settings for +% starred floating environments, like |figure*|, so you can load necessary settings for +% floats with beside caption inside |\floatsetup[widefigure]{...}|, and then +% use |figure*| environment for floats with beside captions;~\nobreak\quad2)\nobreak\enskip +% if you can't follow advice of the previous item, you may use a bit risky +% variant with usage of |\killfloatstyle| command, +% see {\sectionname}~\ref{page:killfloatstyle}.\bigskip +% +% The \package{caption} package uses its own settings and names for caption layout styles. +% The caption's |ruled| style is the only one from \package{float} +% package, which was predefined in \package{caption} package. (The |ruled| style +% is used by the \package{floatrow} package as well as other \package{float} package's +% styles.) To use caption settings of the |ruled| style, you may write +% \begin{Quote} +% |\captionsetup[figure]{style=ruled}|\quad . +% \end{Quote} +% +% \begingroup\vfill +% \jot4pt\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}% +% } +% \def\LongtableHead{ +% \hfil\thead{Style} & +% \hfil\thead{\cmd{\floatsetup} keys} & +% \hfil\thead{Description} +% } +% \begin{longtable}{|>{\extrarowheight0pt\def\arraystretch{.75}\ttfamily\openup-.325pt}p{\Icolumn} +% |>{\extrarowheight0pt\def\arraystretch{.75}\ttfamily\openup-.325pt}p{\IIcolumn} +% |>{\parindent1em\sloppy\topstrut}p{\IIIcolumn}<{\botstrut}|} +% \caption{Float layout styles}\label{tab:floatlayouts}\\ +% \hline +% \LongtableHead \\ \hline\noalign{\vskip-.4pt} +% \endfirsthead +% \captionsetup{labelformat=continued}\caption[]{}\\ +% \hline +% \LongtableHead \\ \hline\noalign{\vskip-.4pt} +% \endhead +% \captionsetup{labelformat=finished}\caption[]{}\\ +% \hline +% \LongtableHead \\ \hline\noalign{\vskip-.4pt} +% \endlasthead +% \noalign{\vskip-.4pt}\hline +% \multicolumn{3}{r@{}}{\topstrut\emph{Continued on next page}} +% \endfoot +% \noalign{\vskip-.4pt}\hline +% \multicolumn{3}{r@{}}{\topstrut\emph{Finished on next page}} +% \endprelastfoot +% \endlastfoot +% \multicolumn{3}{|c|}{Offered by \package{floatrow} package\botstrut\topstrut}\\ +% \hline \leftcell{plain\label{setup:plain}{\mpfootnotemark[1]\mpfootnotemark[2]\mpfootnotemark[3]}} +% & \leftcell{\meta{none}} +% &The style |plain| is standard \LaTeX's layout. Puts captions always below float object's contents. +% \\\hline +% \leftcell{\topstrut plaintop{\mpfootnotemark[1]}\botstrut} +% & \leftcell[50mm]{\topstrut capposition=top\botstrut} +% &The style |plaintop| is the same as |plain| style, but puts captions above +% float object's contents---this style is analog to +% the co-named style from the \package{float} package.\\ \cline{1-2} +% \leftcell{\topstrut Plaintop\botstrut} +% %^^A +% & \leftcell[50mm]{\topstrut capposition=TOP\botstrut} +% & Capitalized form, |Plaintop|, +% aligns captions of the floats, which were placed in one row +% (in the |floatrow| environment), +% by top line (see example on the page~\pageref{tab:row:tabIII}). +% \\\hline +% \leftcell{\topstrut ruled\label{setup:ruled}\mpfootnotemark[1]\mpfootnotemark[3]\botstrut} +% & \leftcell[50mm]{\topstrut capposition=top,\\ precode=thickrule,\\ +% midcode=rule,\\ postcode=lowrule,\\ +% heightadjust=all\botstrut} +% & The first style, |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 (see example on the page~\pageref{leftfig:ruled}).\\ \cline{1-2} +% %^^A +% \leftcell{\topstrut Ruled\smash{\mpfootnotemark[2]}\botstrut} +% & \leftcell[50mm]{\topstrut style=ruled,\\ capposition=TOP\botstrut} +% & Capitalized form, |Ruled|, aligns captions of the floats, which were placed beside +% in one row (in the |floatrow| environment), +% by top line (see example on the page~\pageref{leftfig:Ruled}). +% \\\hline +% \leftcell{\topstrut boxed\mpfootnotemark[1]\mpfootnotemark[2]\mpfootnotemark[3]\mpfootnotemark[4]\botstrut} +% & \leftcell[50mm]{captionskip=2pt,\\framestyle=fbox,\\ +% heightadjust=object,\\framearound=object\botstrut} +% &The first style, |boxed|, emulates co-named style from the \package{float} package. +% The \emph{width of object} equals to the width of main text (usually |\textwidth|), +% predefined |\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 |\fboxsep| and |\fboxrule| settings. +% (Default values +% are \texttt{3pt} and \texttt{.4pt} consequently.)\\ \cline{1-2} +% %^^A +% \leftcell{\topstrut|Boxed|\label{setup:Boxed}\mpfootnotemark[2]\mpfootnotemark[3]\botstrut} +% & \leftcell[50mm]{\topstrut style=boxed,\\ framefit=yes\botstrut} +% & In capitalized form, |Boxed|, \emph{the width of frame} around object fits the width of main text +% (usually |\textwidth|), predefined |\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:setup:Boxed}).\\ \cline{1-2} +% %^^A +% \leftcell{\topstrut|BOXED|\smash{\mpfootnotemark[2]}\mpfootnotemark[3]\botstrut} +% & \leftcell[50mm]{\topstrut framestyle=fbox,\\ framefit=yes,\\ +% heightadjust=all,\\ framearound=all\botstrut} +% & Uppercase form, |BOXED|, +% draws frame which fits to the width of main text (usually |\textwidth|), +% predefined |\hsize|, or the width in |\floatbox|'s option, +% but around all float elements: caption, object and foot material +% (see example on the page~\pageref{BOXED:heightmod}). +% \\ \hline +% \multicolumn{3}{|c|}{Offered by \package{fr-fancy} package. +% They also need \package{fancybox} package.\botstrut\topstrut}\cr\noalign{\nobreak\hrule\nobreak} +% \leftcell{|shadowbox|\smash{\mpfootnotemark[4]} +% \\ \botstrut\\ \hline\topstrut|Shadowbox| +% \\ \botstrut\\ \hline\topstrut|SHADOWBOX|} +% & \leftcell[50mm]{style=boxed,\\framestyle=shadowbox\botstrut\\ \hline\topstrut +% style=Boxed,\\framestyle=shadowbox\botstrut\\ \hline\topstrut +% style=BOXED,\\framestyle=shadowbox} +% &The same as |boxed|, |Boxed| and |BOXED| +% consequently. The |\fbox| frame changed to |\shadowbox| +% from \package{fancybox} package (see example on the page~\pageref{fig:subfig:catsI}). +% Besides |\fboxsep| and |\fboxrule|, there is added parameter +% |\shadowsize|---the width of shadow, +% default is |4pt|. +% \\ \hline +% \leftcell{|doublebox|\smash{\mpfootnotemark[4]} +% \\ \botstrut\\ \hline\topstrut|Doublebox|\\ +% \botstrut\\ \hline\topstrut|DOUBLEBOX|} +% & \leftcell[50mm]{style=boxed,\\ framestyle=doublebox\botstrut\\ \hline\topstrut +% style=Boxed,\\ framestyle=doublebox\botstrut\\ \hline\topstrut +% style=BOXED,\\ framestyle=doublebox} +% &The same as |boxed|, |Boxed| and |BOXED| +% consequently. The |\fbox| frame changed to |\doublebox| +% from \package{fancybox} package (see example on the page~\pageref{fig:parpic:BcatII}). +% The frame shape is controlled by |\fboxrule| and |\fboxsep| parameters. +% \\ \hline\noalign{\penalty-9000} +% \multicolumn{3}{|c|}{Additional float styles. They also need +% \package{fancybox} package.\botstrut\topstrut}\cr\noalign{\nobreak\hrule\nobreak} +% \leftcell{|wshadowbox|\smash{\mpfootnotemark[4]} +% \\ \botstrut\\ \hline\topstrut|Wshadowbox| +% \\ \botstrut\\ \hline\topstrut|WSHADOWBOX|} +% & \leftcell[50mm]{style=boxed,\\framestyle=wshadowbox\botstrut\\ \hline\topstrut +% style=Boxed,\\framestyle=wshadowbox\botstrut\\ \hline\topstrut +% style=BOXED,\\framestyle=wshadowbox} +% &The same as |boxed|, |Boxed| and |BOXED| +% consequently. The |\fbox| frame changed to |\wshadowbox|, +% based on |\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 +% in |shadowbox| style. +% \\\hline +% %^^A \multicolumn3{@{}p{\hsize}@{}} +% \noalign +% {\floatfoot*{When a~float style is set with frame around object which is +% fitted to the box width (like |Boxed|), and +% \cmd{\floatbox} macro uses \cmd{\FBwidth} command as \meta{width} +% option, which sets box width equal to float contents, the width of all other +% float elements in this case enlarged to get width of framed object +% (see figure~\ref{fig:setup:FBwidth:Boxed} on the page~\pageref{fig:setup:FBwidth:Boxed}).\vspace{-3pt}\par +% \rule{1in}{.4pt}\vspace{2pt}\parindent15pt +%^^A \footnoterule +% +% \mpfootnotemark[1]{The styles co-named and analogous to \package{float} package styles.} +% +% \mpfootnotemark[2]{This style is used in the sample file \file{frsmaple01.tex}} +% +% \mpfootnotemark[3]{This style is used in the sample file \file{frsmaple02.tex}} +% +% \mpfootnotemark[4]{During usage of these styles in +% |floatrow| environment you ought to enlarge +% space between floats, using key \texttt{floatrowsep}.} +% }} +% \end{longtable} +% +% \endgroup +% +% \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.\enlargethispage\baselineskip\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[1] +% \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 the |\DeclareFloatFont| command, +% see page~\pageref{ssec:declfont}. +% \end{Options} +% +% You may set font for float object like +% \begin{Quote} +% |font=small| +% \end{Quote} +% (which is used in current documentation), or +% \begin{Quote} +% |font={small,sf}|\quad . +% \end{Quote} +% If you need to color text of your float object, you may use the mechanism, +% created by the version \textbf{3.1} of the \package{caption} package: +% \begin{Quote} +% |font={small,color={blue}}|\quad . +% \end{Quote} +% +% \addvspace\medskipamount\noindent +% \DescribeMacro{footfont}\label{setup:footfont}%^^A +% Defines font for legends or explications (defined by the |\floatfoot| command, +% see~\textsl{\sectionname}~\ref{subsec:floatfoot}). This macro +% uses |\captionsetup| mechanism (because |\floatfoot| macro +% uses \package{caption} package's mechanism and utilities). By default the font size +% of float foot text equals to footnote text: |footfont=footnotesize|. +% +% \paragraph{Font Settings for longtable.} +% If you use \package{caption} package version 3.0\textbf{q}, +% the font settings, loaded in |\floatsetup| +% in |longtable| environment, could 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, option [longtable] of |\floatsetup|), you ought to restore +% correct font size, family, shape (here) and series for caption contents and write: +% \begin{Quote} +% |\captionsetup{font={rm,small,up}...| +% \end{Quote} +% or +% \begin{Quote} +% |\captionsetup[longtable]{font={rm,small,up}...| +% \end{Quote} +% The version \textbf{3.1} of \package{caption} package corrects that. +% +% \subsubsection{Position of Caption} +% \DescribeMacro{capposition}\label{setup:capposition}%^^A +% Defines position of captions. It is similar to |position=| +% key in \package{caption} package, but it has two additional +% options:\startNotes\Note|TOP|%^^A +% \FRmpar{Caption above\\ table object}{FAD:CaptionAboveTableII}, if you prefer to align captions +% above objects, in the case of beside floats (in |floatrow| +% environment), by the top line; \Note|beside| to put caption +% beside object (this option could be more popular in settings +% for one environment, see about |\thisfloatsetup| on the +% page~\pageref{thisfloatsetup}): +% \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 |Plaintop| style is the variant of +% |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} +% \emph{Floatrow note}. The |auto| option does not used by the +% |capposition=| key. +% +% Compare two examples: +% \begin{Quote} +% |\floatsetup[table]{|\FRkey{style}%^^A +% |=plain,capposition=top}%|${}\equiv{}$|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} +% |\|\FRkey{floatsetup}|[table]{|\FRkey{style}%^^A +% |=plain,capposition=TOP}%|${}\equiv{}$|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 |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). +% +% \subsubsection{Position of Beside Caption} +% \DescribeMacro{capbesideposition}\label{setup:capbesideposition}%^^A +% Defines position of beside captions: vertical and horizontal. +% For horizontal position there are defined four options: +% \begin{Options}{\OptionLabel} +% \item[left] +% caption is printed to the left side of object (the default option, see example above); +% \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 and key \FRkey{facing}|=yes| is used; +% in |oneside| option of document (or key |facing=no| is used), +% caption is printed at the left side; +% \item[outside] +% least popular option: caption printed in +% outer side of page if |twoside| option switched on +% in document class and key |facing=yes| is used; +% in |oneside| option of document (or key |facing=no| is used), +% caption is printed at the right side; this option makes sense for the document with usage of +% outer margins. +% \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 object. +% \end{Options} +% You may define position of beside caption by following: +% \begin{Quote} +% |capbesideposition={top,outside}|\quad. +% \end{Quote} +% +% \begingroup +% \begin{Quote} +% \begin{preamble} +% |\floatsetup[widefigure]{|\FRkey{margins}|=hangleft,capposition=beside,|\\%^^A +% | capbesideposition={top,left},|\FRkey{floatwidth}|=\textwidth}|\nopagebreak +% \end{preamble} +% |\begin{figure*}| +% | \includegraphics{BlackDog}| +% | \caption{...}\label{...}|\nopagebreak +% |\end{figure*}| +% \end{Quote}% +% +% \floatsetup[widefigure]{margins=hangleft,capposition=beside,capbesideposition={top,left},floatwidth=\textwidth} +% \begin{figure*}[H] +% \setlength\unitlength{2.12\unitlength}\input{BlackDog.picture}%^^A +% \caption[Wide figure with the settings of float box width \texttt{floatwidth=}\cmd{\textwidth}; +% caption beside object (on the margins), +% top aligned]{Wide figure with the settings of float box width +% \texttt{floatwidth=}\cmd{\textwidth}; caption beside object (on the margins), +% aligned by top of graphics}% +% \label{fig:capbeside} +% \end{figure*}% +% \endgroup +% +% See examples in file \file{frsample02.tex} with all variants of +% position of captions beside float objects. +% +% \subsubsection{Defining The Width of Beside Caption} +% \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} +% (see figure~\ref{capbesideframeI}). If you'll write |capbesidewidth=none| or +% |capbesidewidth=sidefil| (this is default key setting), the +% width of caption will be calculated 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}). +% +% \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 |\capbesidewidth=|: +% \begin{Quote} +% |floatwidth=.35\hsize| +% \end{Quote} +% or +% \begin{Quote} +% |floatwidth=7cm| +% \end{Quote} +% It could be used at first for settings of one floating environment +% (see page~\pageref{thisfloatsetup} about settings for current floating environment +% and |\thisfloatsetup|). Such settings anyway may be used for example for wide floats +% with the object width equal to main text width (|floatwidth=\textwidth|) and +% beside caption placed on the margins (see figure~\ref{color:frame}). +% \pagebreak[1] +% +% \begingroup +% \begin{Quote} +% \begin{preamble} +% |\floatsetup[figure]{|\FRkey{margins}|=raggedright}|\nopagebreak +% \end{preamble} +% |\|\FRkey{thisfloatsetup}%^^A +% |[figure]{floatwidth=.35\hsize}|\nopagebreak +% |\begin{figure}| +% | \includegraphics[width=\hsize]{Bear}| +% | \caption{...}\label{...}| +% |\end{figure}| +% \end{Quote}% +% +% \floatsetup[figure]{margins=raggedright} +% \thisfloatsetup{floatwidth=.35\hsize} +% \begin{figure}[H] +% \setlength\unitlength{\hsize/100}\input{Bear.picture}%^^A +% \caption{Graphics with settings \texttt{floatwidth=0.35}\cmd{\hsize} moved to the left margin}% +% \label{fig:floatwidth} +% \end{figure}% +% \endgroup +% +% \begingroup +% \begin{Quote}% +% |\|\FRkey{thisfloatsetup}%^^A +% |{floatwidth=.35\hsize,|\FRkey{capbesidewidth}|=sidefil,|\nopagebreak +% | |\FRkey{capposition}|=beside,|\FRkey{capbesideposition}|=right}| +% |...| +% \end{Quote}% +% +% \thisfloatsetup{floatwidth=.35\hsize,capbesidewidth=sidefil, +% capposition=beside,capbesideposition=right} +% \begin{figure}[H] +% \setlength\unitlength{\hsize/100}\input{Bear.picture}%^^A +% \caption{Caption beside graphics with the width settings \texttt{floatwidth=0.35}\cmd{\hsize}}%^^A +% \label{fig:beside:floatwidth} +% \end{figure}% +% \endgroup +% (These examples you can write also using box commands with the width option: |\ffigbox[.35\hsize]| +% and |\fcapside[.35\hsize]| consequently.) +% +% If you use option |floatwidth=sidefil| for objects with beside +% captions (in the case of key |capbesidewidth=|, uses absolute +% value, like |capbesidewidth=4cm|) the box with object contents (instead of caption's) +% occupies 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}). +% +% \subsubsection{Other Settings for Beside Captions} +% \medskip\noindent +% \DescribeMacro{capbesideframe}\label{setup:capbesideframe}%^^A +% This boolean key declares whether the beside caption stays near the framed object +% (|capbesideframe=yes|) in this case caption lines will be aligned by top +% or bottom of frame; otherwise caption lines will be aligned with top or +% bottom of framed object's \emph{contents} (|capbesideframe=no|). +% \newcommand\TEXTBOX[1][]{\par +% Here goes first line of text \Text\par +% There goes second line of text#1\par +% Hence goes third line of text\par +% Thence 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} +% \begin{preamble} +% |\floatsetup[figure]{|\FRkey{style}|=Boxed,|%^^A +% \FRkey{frameset}|={\fboxsep8pt},|\nopagebreak +% | |\FRkey{objectset}|=justified,|%^^A +% |capbesideposition={right,top},capbesideframe=yes}| +% |\captionsetup[figure]{...,strut=no}| +% \end{preamble} +% |\|\FRkey{thisfloatsetup}%^^A +% |{|\FRkey{capposition}|=beside,| +% | |\FRkey{floatwidth}|=sidefil,|%^^A +% \FRkey{capbesidewidth}|=4cm}| +% |\begin{figure}| +% | ...| +% | \caption{...}\label{...}|\nopagebreak +% |\end{figure}| +% | | +% \end{Quote}% +% \floatsetup[figure]{style=Boxed,frameset={\fboxsep8pt},capbesideframe=yes,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 frame}%^^A% +% \label{capbesideframeI}}% +% \end{figure} +% \begin{Quote} +% \begin{preamble} +% |\floatsetup[figure]{...,capbesideframe=no}| +% |...| +% \end{preamble} +% |\|\FRkey{thisfloatsetup}%^^A +% |{|\FRkey{capposition}|=beside,| +% | |\FRkey{floatwidth}|=9cm,|%^^A +% \FRkey{capbesidewidth}|=sidefil}| +% \end{Quote}% +% \floatsetup[figure]{capbesideframe=no} +% \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 object contents}% +% \label{row:text:I}}% +% \end{figure} +%\endgroup +% +% \emph{Floatrow note.} For examples above the |\captionsetup{strut=no}| sentence also was used, +% 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-9000 +% \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. +% (See examples in file \file{frsample01.tex}.) +% \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} +% In the case of caption +% beside float object, footnotes and foot text are always placed below +% caption. +% +% The next example shows the usage of the |caption| option of this key: +%\begin{Quote} +%\begin{preamble} +%|\floatsetup{|\FRkey{style}|=ruled,footposition=caption}| +%\end{preamble} +% |\begin{figure}| +% | ...| +% | \caption{...}\label{...}%| +% | \floatfoot{...}| +% |\end{figure}| +%\end{Quote}% +%\begingroup\floatsetup[figure]{style=ruled,footposition=caption} +% \begin{figure}[H] +% \unitlength1.2\unitlength\input{TheCat.picture} +% \caption{The \texttt{ruled} figure with explications which are placed under caption contents}% +% \label{ruled:footposition}% +% \floatfoot{The graphics demonstrate very pleasant muzzle of the very funny ginger cat with very +% fluffy fur. The cat has yellow eyes, big ears, a small pink wet nose, and thick white whiskers} +% \end{figure}%^^A +%\endgroup +% +% \subsubsection{Vertical Alignment of Float Elements}\label{sec:heightadjust} +% \DescribeMacro{heightadjust}\label{setup:heightadjust}%^^A +% Defines whether the common maximum height of objects +% or/and captions in the |floatrow| environment will be used for building of float row. +% It has following options\par +% \begin{Options}{\OptionLabel}\samepage +% \item[all] +% adjust both caption and object heights (e.g. for styles +% |ruled|, |Ruled| and |BOXED|); +% \item[caption] +% adjust caption heights (e.g. for |Plaintop| style); +% \item[object] +% adjust object heights (e.g. for |Boxed| style); +% \item[none] +% nothing to be adjusted (the |plain| style); +% \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} +% +% The following two examples show |ruled| and |Ruled| style. +% Both styles use |heightadjust=all| key option, but first style +% uses |capposition=top|, and second one---|capposition=TOP|. +%\begin{Quote} +%\begin{preamble} +%|\floatsetup{|\FRkey{style}|=ruled}| +%\end{preamble} +% |\begin{figure}| +% |\begin{|\FRkey[sec]{floatrow}|}| +% | \|\FRkey[FB]{ffigbox} +% | {...}{\caption{The left ...}\label{...}}%| +% +% | \ffigbox| +% | {\caption{The beside ...}\label{...}}{...}| +% |\end{floatrow}|\nopagebreak +% |\end{figure}|\vspace*{-.75\intextsep} +%\end{Quote}% +% \begin{figure}[H]\floatsetup{style=ruled}\killfloatstyle +% \begin{floatrow} +% \ffigbox +% {\unitlength.75\unitlength\input{BlackCat.picture}} +% {\caption{Left \texttt{ruled} figure}% +% \label{leftfig:ruled}}% +% +% \ffigbox +% {\caption{The beside figure at the right side uses settings of \texttt{ruled} layout}%^^A +% \label{rightfig:ruled}} +% {\unitlength1.15\unitlength\input{Cat.picture}} +% \end{floatrow} +% \end{figure}%^^A +%\begin{Quote} +%\begin{preamble} +%|\floatsetup{style=Ruled}| +%\end{preamble}\nopagebreak +% |...|\vspace*{-.75\intextsep} +%\end{Quote}% +% \begin{figure}[H]\floatsetup{style=Ruled}\killfloatstyle +% \begin{floatrow} +% \ffigbox +% {\unitlength.75\unitlength\input{BlackCat.picture}} +% {\caption{Left \texttt{Ruled} figure}% +% \label{leftfig:Ruled}}% +% +% \ffigbox +% {\caption{The beside figure at the right side uses settings of \texttt{Ruled} layout}%^^A +% \label{rightfig:Ruled}} +% {\unitlength1.15\unitlength\input{Cat.picture}} +% \end{floatrow} +% \end{figure}\pagebreak[1] +% +% \addvspace\medskipamount\noindent +% \DescribeMacro{valign}\label{setup:valign}%^^A +% Defines vertical alignment of +% float objects in |floatrow| if |heightadjust=all| or +% |heightadjust=object| keys were used, or |\floatbox| stuff uses \meta{height} +% argument with value, which differs from the height of object. +% The options of this key are analogous to vertical +% alignment option in |minipage| environment and |\parbox| +% command. Default option is |c| (centered vertical alignment). +% \begin{Options}{cc}\samepage +% \item[t] +% aligns objects by top line; +% \item[c] +% aligns objects by center line (this is default for all float styles which +% use |heightadjust=object| or |heightadjust=all| settings, see examples above); +% \item[b] +% aligns objects by bottom line; +% \item[s] +% stretches objects by full height (if it is possible). +% \end{Options}\pagebreak[1] +% +% Next example (figure~\ref{BOXED:heightmod}) shows default vertical centered alignment +% for figure with changed height (remember that empty \meta{width} option means |\hsize|). +%\begin{Quote}\openup-.5pt +%\begin{preamble} +%|\floatsetup{style=BOXED}| +%|\usepackage{calc}|\nopagebreak +%\end{preamble}\vskip-.5\lastskip +% |\begin{figure}|\nopagebreak +% | \|\FRkey[FB]{ffigbox}|[][\FBheight+2cm]|\nopagebreak +% |...| +% |\end{figure}|\vspace*{-.75\intextsep} +%\end{Quote}\pagebreak[1] +% \begin{figure}[H]\floatsetup{style=BOXED}\killfloatstyle +% \ffigbox[][\FBheight+2cm] +% {\unitlength.95\unitlength\input{TheCat.picture}} +% {\caption{The figure inside \cmd{\ffigbox} has \meta{height} option, vertically centered}% +% \label{BOXED:heightmod}}% +% \end{figure}%^^A +% +% The example with figures \ref{leftfig:BOXED:valigned} +% and \ref{rightfig:BOXED:valigned} shows |BOXED| style, which +% uses |heightadjust=all| settings already, and +% also the |valign=t| option was added. +%^^A% (see also example with various alignment on the page +%^^A% \pageref{example:ruledcapposTOP}). +%\begin{Quote}\openup-.5pt +%\begin{preamble} +%|\floatsetup{style=BOXED,valign=t}| +%|\usepackage{calc}|\nopagebreak +%\end{preamble} +% |\begin{figure}| +% |\begin{|\FRkey[sec]{floatrow}|}| +% | \|\FRkey[FB]{ffigbox}|[\|\FRkey[FB]{FBwidth}|+2cm]| +% | {...}| +% | {\caption{Left ...}\label{...}}%| +% +% | \ffigbox[\FBwidth+2cm][2\|\FRkey[FB]{FBheight}|]|\nopagebreak +% | {\caption{The beside ...}\label{...}}| +% | {...}| +% |\end{floatrow}|\nopagebreak +% |\end{figure}|\vspace*{-.75\intextsep} +%\end{Quote}% +% \begin{figure}[H]\floatsetup{style=BOXED,valign=t}\killfloatstyle +% \begin{floatrow} +% \ffigbox[\FBwidth+2cm] +% {\unitlength.8\unitlength\input{BlackCat.picture}} +% {\caption{The left beside figure uses settings for vertical top alignment}% +% \label{leftfig:BOXED:valigned}}% +% +% \ffigbox[\FBwidth+2cm][2\FBheight] +% {\caption{The beside figure at the right side in float row uses settings for vertical top alignment too}%^^A +% \label{rightfig:BOXED:valigned}} +% {\unitlength1\unitlength\input{Cat.picture}} +% \end{floatrow} +% \end{figure}%^^A +% Please look at the \meta{height} and \meta{width} options of |\ffigbox| +% commands of the figure~\ref{BOXED:heightmod} +% and beside figures~\ref{leftfig:BOXED:valigned}, \ref{rightfig:BOXED:valigned} consequently: +% you may set the height and widths in this way with \package{calc} package. +% Right figure in the row has double height in the \meta{height} argument of |\ffigbox|. +% +% +% \subsubsection{Facing Layout} +% \DescribeMacro{facing}\label{setup:facing}%^^A +% This key defines whether facing layout is used +% for floats, if it is switched on, key options, which create different layout for even and odd pages +% are switched on. This key works if |twoside| option is switched on inside the +% document class line. +% +% The most popular usage of |facing| key is printing of +% beside captions to the inner sides of pages with option +% |capbesideposition=inside| (the opposite option is |capbesideposition=outside|) +% works together with switched |facing=yes| key. +% +% The figures~\ref{intro:beside} and~\ref{intro:beside:FBwidth} with beside captions +% in the Introduction illustrate these options---%^^A +% |facing=yes,|\allowbreak|capbesideposition=inside|. +% +% \subsubsection{Object Settings}\label{sec:set:object} +% \noindent +% \DescribeMacro{objectset}\DescribeMacro{justification}\label{setup:objectset}%^^A +% Defines justification of float object +% (float contents). Predefined options are similar to +% |justification=| key in |\captionsetup|. +% \begin{Options}{RaggedRigh} +% \item[justified] +% Blocks (in the case of a~picture or text in parbox) +% moved to the left, the text aligned as a normal paragraph (without indentation). +% +% \item[centering] +% Blocks centered, each line of the object text will be centered. (This is the default.) +% +% \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. +% +%^^A% \item[RaggedLeft] +%^^A% Analogous to |RaggedRight|. +% +% \item[...] +% You may also create your own settings with the |\DeclareObjectSet| command (see +% page~\pageref{ssec:decl:oset}) +% \end{Options} +% +% \subsubsection{Defining Float Margins}\label{sec:set:box} +% \DescribeMacro{margins}\label{setup:margins}%^^A +% Defines margins (skips, rules or other margin material) of alone float boxes with +% captions above/below, of float boxes with beside captions, and of +% |floatrow| environments. It has following three predefined +% options: +% \begin{Options}{hangoutside} +% \item[centering] +% float box centered; +% \item[raggedright] +% float box flushed to the left (see figure~\ref{fig:floatwidth}); +% \item[raggedleft] +% float box flushed to the right; +% \item[hangleft] +% usually for wide floats: left edge of float boxes hangs to the margin space (there are used +% |\marginparwidth| and |\marginparsep| values; the |\leftskip| and |\rightskip| values are +% added, which have been taken from the settings of the |objectset=| key); +% \item[hangright] +% analogous to previous, right edge of floats boxes hangs to the margin space; +% \item[hanginside] +% analogous to previous, but in this option hangs inner edge for facing/twoside layout, +% or left margin for one side layout; +% \item[hangoutside] +% analogous to previous, but in this option hangs outer edge for facing/twoside layout, +% or right margin for one side layout; +% \item[...] +% You may create your own alignment settings with \\|\DeclareMarginSet| command, see +% page~\pageref{ssec:decl:marg}. +% \end{Options} +% +% \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 |floatrow| environment (see page~\pageref{sec:floatrow}). +% +% \addvspace\smallskipamount\noindent +% \DescribeMacro{capbesidesep}\label{setup:capbesidesep}%^^A +% Sets separation material between object and beside caption (see page~\pageref{intro:beside}). +% +% \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 for both keys); +% \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 the\\ |\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. +% +% The figure \ref{fig:plain:trick} uses tricky float style, which shows you layout, where +% the |capbesidewidth=| key with absolute value appears very useful. +%\begin{Quote} +%\begin{preamble} +%|\|\FRkey{DeclareFloatSeparators}|{mcapwidth}{\hskip-\FCwidth}| +%|\floatsetup[figure]| +%| {|\FRkey{style}|=plain,|\FRkey{objectset}|=centering,|\FRkey{margins}|=centering,| +%| |\FRkey{capbesidewidth}|=6cc,|%^^A +% \FRkey{capbesideposition}|=left,|\FRkey{capbesidesep}|=mcapwidth,| +%| |\FRkey{floatwidth}|=sidefil}|\smallskip +%|\captionsetup[capbesidefigure]{labelsep=newline,| +%| justification=raggedright}|\nopagebreak +%\end{preamble} +% |\begin{figure}|\nopagebreak +% |\|\FRkey[FB]{fcapside}\nopagebreak +% |\end{figure}| +%\end{Quote} +% In this style all figures with beside captions centered accordingly to +% full text \verb|\hsize|, because of the separator between float object and +% caption has negative value of caption width. +% Usage of such float layout supposes that all +% float objects with beside captions are narrower than |\hsize| (|\textwidth|) by at least 2~caption +% widths. Please note the |\FCwidth| command in the definition of |mcapwidth| +% key---later you may change the width of beside caption (loading e.g. +% |\thisfloatsetup|\allowbreak|{capbesidewidth=8cc}| settings), and, in spite of the value +% the separator also will be changed, picture will be anyway +% centered accordingly to full \verb|\hsize|. +% +% \begingroup +% \clearfloatsetup{figure}\floatsetup[figure] +% {style=plain,objectset=centering, +% floatwidth=\columnwidth,capbesidewidth=6cc, +% capbesideposition=left,capbesidesep=mcapwidth, +% margins=centering,floatwidth=sidefil} +% \captionsetup[capbesidefigure]{labelsep=newline, +% justification=raggedright} +% \begin{figure}[H] +% \fcapside{}{\unitlength1.1\unitlength +% \input{Doll.picture} +% \caption[Beside caption with ``hidden'' width (\texttt{=6cc}), +% object is centered at the full text width]{%^^A +% Plain figure}\label{fig:plain:trick}} +% \end{figure}% +% \endgroup +% +% \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 (see page~\pageref{intro:leftfig: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 |floatrow| environment, +% above float row (see page~\pageref{intro:leftfig:row} and~\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 (see page~\pageref{intro:leftfig: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 |floatrow| environment, +% below float row (see page~\pageref{intro:leftfig:row} and~\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}\allowitembreaks[-1] +% \item[none] +% absent code (the default option for |precode=|, |rowprecode=|, |postcode=| and |rowpostcode=| +% keys); in |plain|, |plaintop|, |boxed|, and similar styles; +% \item[thickrule] +% thick rule (.8pt) with 2pt vertical skip below---rule above float box +% in |ruled| and |Ruled| styles which is used there by +% |precode=| key (see figures~\ref{leftfig:ruled}--\ref{rightfig:Ruled}); +% \item[rule] +% rule of default thickness (.4pt), with 2pt vertical skips above and below---middle rule +% in |ruled| and |Ruled| styles is printed between object and caption, and +% used there by |midcode=| key; +% \item[lowrule] +% rule of default thickness (.4pt), with 2pt vertical skip above---rule below float box +% in |ruled| and |Ruled| styles, used there by +% |postcode=| key; +% \item[captionskip] +% vertical skip which uses the value, defined in |captionskip=| key; the default option for +% |midcode=| key: this option is used +% in |plain|, |plaintop|, |boxed|, and similar styles. +% \item[...] +% You may create your own options with the |\DeclareFloatVCode| command, +% see page~\pageref{ssec:decl:rule}. +% \end{Options} +% The |rowprecode=| and~|rowpostcode=| keys, in the case of unfilled row +% may occupy the whole width of the predefined size or get the natural width of row, +% depending to the defined settings of row contents (see description of the +% \FRkey{rowfill} key, page~\pageref{setup:rowfill}). +% +% \subsubsection{Defining Float Frames} +% \DescribeMacro{framestyle}\label{setup:framestyle}%^^A +% Defines type of frame; the +% \package{floatrow} package offers only two types of frames: +% \begin{Options}{\OptionLabel} +% \item[fbox] +% standard frame; +% \item[colorbox] +% colored frame, needs also \package{color} package; +% if not defined, the |\fbox| command is used instead. +% \item[FRcolorbox]\label{setup:FRcolorbox}% +% colored frame which allow to set additional material attached to its corners, +% needs also \package{color} package; +% if not defined, there is used |\fbox|; +% \item[corners]\label{setup:corners}% +% the same as previous but without |\colorbox|---it puts the corner material only +% (current option doesn't need the frame definition); +% anyway it needs also \package{color} package. +% \end{Options} +% There are options for additional frames, offered by \package{fr-fancy} +% package, installed with |floatrow|: +% \begin{Options}{\OptionLabel} +% \item[doublebox] +% double frame, needs also \package{fancybox} package; +% \item[shadowbox] +% frame with shadow, needs also \package{fancybox} package; +% \item[wshadowbox] +% modified |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 predefined options +% for this key, just write something like: +% \begin{Quote} +% |frameset={\fboxrule1pt\fboxsep12pt}|\quad. +% \end{Quote} +% The default settings for frame building with the +% |\fbox| command: +% \begin{Quote} +% |\fboxrule=.4pt \fboxsep=3pt|\quad. +% \end{Quote} +% +% \noindent +% \DescribeMacro{framearound}\label{setup:framearound}%^^A +% Declares element of float box to be framed: +% \begin{Options}{\OptionLabel} +% \item[none] +% no frames (usually not used); +% \item[object] +% float object contents; +% \item[all] +% full float box including object, caption, and any foot text; +% \item[row] +% float row of beside floats, or alone float; +% \item[none] +% nothing. +% \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|, predefined width or value of \meta{width} option of +% float box (|framefit=yes|), in this case object size reduced (see +% figures~\ref{fig:setup:Boxed} and~\ref{fig:setup:FBwidth:Boxed}); +% or the frame climbs out in the left and +% right sides, and \textit{width of object} has current +% |\hsize|, predefined width or value of \meta{width} option of +% float box (|framefit=no|, see figure~\ref{fig:setup:boxed}). +% \begingroup +% \begin{Quote}% +%\begin{preamble}% +% |\floatsetup[figure]{framestyle=fbox,|\nopagebreak +% | framearound=object,frameset={\fboxrule1pt\fboxsep10pt},| +% | framefit=yes}%|$\approx|style=Boxed|$ +%\end{preamble}% +% |\begin{figure}| +% |\|\FRkey[FB]{ffigbox}|[4cm]| +% | {...}{\caption{...}}|\nopagebreak +% |\end{figure}| +% \end{Quote}\pagebreak[1] +% \floatsetup[figure]{framestyle=fbox,heightadjust=object, +% framearound=object,frameset={\fboxrule1pt\fboxsep10pt},framefit=yes}%^^A$\equiv|style=Boxed|$ +% \begin{figure}[H]% +% \ffigbox[4cm] +% {\input{Cat.picture}}{\caption{The frame around graphics fits to the width of float +% box (here: caption)}\label{fig:setup:Boxed}} +% \end{figure}% +% \begin{Quote}% +%\begin{preamble}% +% |\floatsetup[figure]{...,framefit=no}%|$\approx|style=boxed|$ +%\end{preamble}% +% |\begin{figure}|% +% |\|\FRkey[FB]{ffigbox}|[4cm]| +% | {...}{\caption{...}}|\nopagebreak +% |\end{figure}|\vspace*{-\intextsep} +% \end{Quote}% +% \floatsetup[figure]{framestyle=fbox,heightadjust=object, +% framearound=object,frameset={\fboxrule1pt\fboxsep10pt},framefit=no}%^^A$\equiv|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}% +% +% Next follows an example with |framefit=yes| key in the case of |[\|\FRkey{FBwidth}|]| +% option of |\ffigbox| +% command. In this case the width of float box (here: the width of caption) expanded to the +% width of framed object. +% \begin{Quote}% +%\begin{preamble}% +% |\floatsetup[figure]{...,framefit=yes}%|$\approx|style=Boxed|$ +%\end{preamble}% +% |\begin{figure}| +% |\|\FRkey[FB]{ffigbox}|[\|\FRkey[FB]{FBwidth}|]| +% | {...}{\caption{...}}| +% |\end{figure}|\vspace*{-\intextsep} +% \end{Quote}\pagebreak[1] +% \floatsetup[figure]{framestyle=fbox,heightadjust=object, +% framearound=object,frameset={\fboxrule1pt\fboxsep10pt},framefit=yes}%^^A$\equiv|style=Boxed|$ +% \begin{figure}[H]% +% \ffigbox[\FBwidth] +% {\input{Cat.picture}}{\caption[The framed object contents have natural width; the +% the width of float box (here: caption) was expanded to fit the width of +% framed object]{Framed object has natural width; +% the caption width expanded}\label{fig:setup:FBwidth:Boxed}} +% \end{figure}% +% \endgroup +% +% \addvspace\medskipamount\noindent +% \DescribeMacro{rowfill}\label{setup:rowfill}%^^A +% Boolean key which in the case of |true| the material above and below float +% row (the |rowprecode=| and |rowpostcode=| keys) or row frames (|framestyle=row| option) +% will be expanded to full predefined width, otherwise the rule or frame material will +% have natural width of beside float boxes. (Unfilled row aligned using the +% |objectset=| settings.) Default value is |false|. +% +%\begin{Quote} +%\begin{preamble} +%|\|\FRkey{DeclareColorBox}|{yellowplate}{\colorbox{yellow}}| +%|\floatsetup{style=plain,|\FRkey{framestyle}|=colorbox,| +%| |\FRkey{framearound}|=row,|\FRkey{colorframeset}|=yellowplate,|\FRkey{frameset}|={\fboxrule0pt},| +%| |\FRkey{framestyle}|=colorbox,|\FRkey{framefit}|=yes,|\FRkey{heightadjust}|=object,|\FRkey{valign}|=c}| +%|\usepackage{calc}|\nopagebreak +%\end{preamble} +% |\begin{figure}| +% |\begin{|\FRkey[sec]{floatrow}|}| +% | \|\FRkey[FB]{ffigbox}|[\|\FRkey[FB]{FBwidth}|+2cm]| +% | {...}| +% |\end{floatrow}|\nopagebreak +% |\end{figure}|\vspace*{-.75\intextsep} +%\end{Quote}% +%\begingroup\floatsetup{style=plain,framearound=row,colorframeset=yellowplate,frameset={\fboxrule0pt}, +% framestyle=colorbox,framefit=yes,heightadjust=object,valign=c} +% \begin{figure}[H] +% \begin{floatrow} +% \ffigbox[\FBwidth+2cm] +% {\unitlength.9\unitlength\input{BlackCat.picture}} +% {\caption{The left beside figure uses settings for vertical top alignment}% +% \label{leftfig:BOXED:valigned:rowbox}}% +% \ffigbox[\FBwidth+2.4cm] +% {\caption{The beside figure at the right side in float row uses settings for vertical top alignment too}%^^A +% \label{rightfig:BOXED:valigned:rowbox}} +% {\unitlength1.25\unitlength\input{Cat.picture}} +% \end{floatrow} +% \end{figure}%^^A +%\endgroup +% The result you see in the row of +% figures~\ref{leftfig:BOXED:valigned:rowbox}, \ref{rightfig:BOXED:valigned:rowbox}. +% +%\begin{Quote} +%\begin{preamble} +%|\floatsetup{...rowfill=yes}| +%|...|\nopagebreak +%\end{preamble} +% |...|\vspace*{-.75\intextsep} +%\end{Quote}% +%\begingroup\floatsetup{style=plain,framearound=row,colorframeset=yellowplate,rowfill=yes, +% framestyle=colorbox,framefit=yes,heightadjust=object,valign=c,frameset={\fboxrule0pt}} +% \begin{figure}[H] +% \begin{floatrow} +% \ffigbox[\FBwidth+2cm] +% {\unitlength.9\unitlength\input{BlackCat.picture}} +% {\caption{The left beside figure uses settings for vertical top alignment}% +% \label{leftfig:BOXED:valigned:fillrowbox}}% +% \ffigbox[\FBwidth+2.4cm] +% {\caption{The beside figure at the right side in float row uses settings for vertical top alignment too}%^^A +% \label{rightfig:BOXED:valigned:fillrowbox}} +% {\unitlength1.25\unitlength\input{Cat.picture}} +% ^^A\ffigbox[\Xhsize]{}{\strut} +% \end{floatrow} +% \end{figure}%^^A +%\endgroup +% The result you see in the row of +% figures~\ref{leftfig:BOXED:valigned:fillrowbox}, \ref{rightfig:BOXED:valigned:fillrowbox}. +% +%\begin{Quote} +%\begin{preamble} +%|\floatsetup[widefloat]{margins=hanfleft}| +%|\floatsetup{...}| +%|...|\nopagebreak +%\end{preamble} +% |...|\vspace*{-.75\intextsep} +%\end{Quote}% +%\begingroup\floatsetup{margins=hangleft,style=plain,framearound=row,colorframeset=yellowplate, +% framestyle=colorbox,framefit=yes,heightadjust=object,valign=c} +% \begin{figure*}[H] +% \begin{floatrow} +% \ffigbox[\FBwidth+2cm] +% {\unitlength.9\unitlength\input{BlackCat.picture}} +% {\caption{The left beside figure uses settings for vertical top alignment}% +% \label{leftfig:BOXED:valigned:widerowbox}}% +% \ffigbox[\FBwidth+2.4cm] +% {\caption{The beside figure at the right side in float row uses settings for vertical top alignment too}%^^A +% \label{rightfig:BOXED:valigned:widerowbox}} +% {\unitlength1.25\unitlength\input{Cat.picture}} +% \end{floatrow} +% \end{figure*}%^^A +%\endgroup +% The result you see in the row of +% figures~\ref{leftfig:BOXED:valigned:widerowbox}, \ref{rightfig:BOXED:valigned:widerowbox}. +% +%\begin{Quote} +%\begin{preamble} +%|...|\\ +%|\floatsetup{...rowfill=yes}| +%|...|\nopagebreak +%\end{preamble} +% |...|\vspace*{-.75\intextsep} +%\end{Quote}% +%\begingroup\floatsetup{margins=hangleft,style=plain,framearound=row,colorframeset=yellowplate,rowfill=yes, +% framestyle=colorbox,framefit=yes,heightadjust=object,valign=c} +% \begin{figure*}[H] +% \begin{floatrow} +% \ffigbox[\FBwidth+2cm] +% {\unitlength.9\unitlength\input{BlackCat.picture}} +% {\caption{The left beside figure uses settings for vertical top alignment}% +% \label{leftfig:BOXED:valigned:widefillrowbox}}% +% \ffigbox[\FBwidth+2.4cm] +% {\caption{The beside figure at the right side in float row uses settings for vertical top alignment too}%^^A +% \label{rightfig:BOXED:valigned:widefillrowbox}} +% {\unitlength1.25\unitlength\input{Cat.picture}} +% ^^A\ffigbox[\Xhsize]{}{\strut} +% \end{floatrow} +% \end{figure*}%^^A +%\endgroup +% The result you see in the row of +% figures~\ref{leftfig:BOXED:valigned:widefillrowbox}, \ref{rightfig:BOXED:valigned:widefillrowbox}. +% +% +% \subsubsection{Settings for Colored Frames} +% \DescribeMacro{colorframeset}\label{setup:colorframeset}%^^A +% \DescribeMacro{\DeclareColorBox}\label{setup:DeclareColorBox}%^^A +% This key (needs \package{color} package) defines +% a~color box in the case of the |framestyle=colorbox| or |framestyle=FRcolorbox| settings are loaded +% (default is standard |\fbox|). There are not any predefined options for this key so you +% must define your color box option, using the |\DeclareColorBox| command like following: +% \begin{Quote} +% |\DeclareColorBox{mycolorbox}{\fcolorbox{red}{yellow}}| +% \end{Quote} +% then use this option in |colorframeset=| key: +% \begin{Quote} +% |colorframeset=|\meta{option}\quad, +% \end{Quote} +% for example: +% \begin{Quote} +% |\floatsetup{colorframeset=mycolorbox}|\quad. +% \end{Quote} +% +% \DescribeMacro{colorframecorners}\label{setup:colorframecorners}%^^A +% \DescribeMacro{\DeclareCBoxCorners}\label{setup:DeclareCBoxCorners:pre}%^^A +% This key defines material attached to the corners of the frame defined +% by the |framestyle=FRcolorbox| option. +% This key, as the previous one, has not predefined options; the needed material is +% set by the |\|\FRkey{DeclareCBoxCorners} command +% (page~\pageref{setup:DeclareCBoxCorners}). +% +% \subsubsection{Defining Float Skips} +% \DescribeMacro{captionskip}\label{setup:captionskip}%^^A +% Defines vertical space between caption and float object +% in case of \FRkey{midcode} key defined as |midcode=captionskip|; +% or in case of usage of float styles (|style=| +% key) |plain|, |boxed| and similar to them: +% \begin{Quote} +% |captionskip=10pt|\quad. +% \end{Quote} +% The settings above are default and equal to \LaTeX's settings (|\abovecaptionskip=10pt|). +% The settings of current documentation: |captionskip=5pt|. +% +% \addvspace\medskipamount\noindent +% \DescribeMacro{footskip}\label{setup:footskip}%^^A +% Defines vertical space before foot material and footnotes. It can be defined like: +% \begin{Quote} +% |footskip=4pt|\quad, +% \end{Quote} +% or +% \begin{Quote} +% |footskip=\skip\footins|\quad. +% \end{Quote} +% the last line shows default settings. +% +% \subsubsection{Defining Float Footnote Rule's Style}\label{sec:footnotestyle} +% \DescribeMacro{footnoterule}\label{setup:footnoterule}%^^A +% Defines type of footnote rule for footnotes inside floating environment. +% \begingroup +% \begin{Options}{\OptionLabel} +% \item[normal] +% standard \LaTeX{} definition, 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|\label{setup: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 the \\ |\DeclareFloatFootnoterule| command, +% see page~\pageref{ssec:fnoterule}. +% \end{Options} +% \endgroup +% +% \label{setup:end} +% +%^^A% %^^A ???needed? +%^^A% \subsubsection{Loading Style for Fancy Boxes} +%^^A% +%^^A% \DescribeMacro{fancyboxes}\label{setup:fancyboxes}%^^A +%^^A% This boolean key loads \package{fr-fancy} package. This key you may use +%^^A% only in optional argument in |\usepackage| line. The styles, supported by this package +%^^A% are described in the table~\ref{tab:floatlayouts}. +% +% \subsubsection{Managing Floats with \texttt{[H]} Placement Option} +% \DescribeMacro{doublefloataswide}\label{setup:doublefloataswide}%^^A +% This boolean key redefines starred floating environment \emph{in onecolumn layout} +% like non-starred ones, but in this case they are still store layout +% settings, declared by |[wide...]| options of |\floatsetup| (page~\pageref{sec:floatsetup}). +% This key is necessary +% for usage of the \texttt{[H]} option +% in starred environments in the same way as in non-starred. +% +% \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 there is no blank line appears after environment +% (see also page~\pageref{sec:listpen}). +% +% \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 (the \cmd{\thisfloatsetup} is defined +% as abbreviation of the \cmd{\floatsetup[tmpset]} command). +% +% \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}:\allowpostlistbreaks[-4] +% \begin{Quote} +% |\clearfloatsetup|\marg{float type}\quad, +% \end{Quote}\allowpostlistbreaks +% where \marg{float type}---types as |figure|, |widefloat| etc. +% +% \subsection{Temporary Clearing of All Float Settings}\label{page:killfloatstyle} +% \DescribeMacro{\killfloatstyle}\label{setup:killfloatstyle}%^^A +% The first case when this command is needed: mixed rows of floats where figure stays beside table +% and 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}). +% +% Another case---layout of floats with beside captions is quite different from +% other subtypes: |[figure]| option of +% floatsetup defined with |style=plain| and +% |[cabesidefigure]| must be defined with |style=boxed|. +% In this case you may define your command, based on predefined +% |\fcapside|: +%\begingroup +% \begin{Quote} +% \begin{preamble} +% |\newcommand\myfcapside{\killfloatstyle|\nopagebreak +% | \floatsetup[figure]{style=Boxed,capbesideframe=yes}\fcapside}|\quad. +% \end{preamble} +% |\begin{figure}| +% |\myfcapside[\FBwidth]| +% |...| +% |\end{figure}|\quad.\vspace*{-\intextsep} +% \end{Quote} +% \newcommand\myfcapside{\killfloatstyle +% \floatsetup[figure]{style=Boxed,capbesideframe=yes,capbesideposition=left}\fcapside} +% \begin{figure}[H] +% \myfcapside[\FBwidth] +% {\input{Horse.picture}}% +% {\caption[Figure with beside caption in \texttt{Boxed} style.]{%^^A +% Figure with beside caption in \texttt{Boxed} style. The special command \cmd{\myfcapside} +% created to change layout for figures from plain in the case of captions below float +% to boxed in the case of caption beside}\label{fig:beside:Boxed}}% +% \end{figure} +%\endgroup +% The option |[figure]| is necessary if you have defined settings for this option +% in the preamble. +% +% \emph{Notes}.\startNotes\nopagebreak \par +% \Note Please remember that such command with redefined settings can be placed +% only \emph{inside an environment} or \emph{group}. +% +% \Note Before creation of such risky command, please revise your layout settings: +% maybe the |[widefigure]| option never used in your documentation settings, so you can define +% necessary settings in |\floatsetup[widefigure]|\allowbreak|{style=Boxed,|\allowbreak +% |capposition=|\allowbreak|beside...}| +% and then use ``starred'' floats in following way: +%\begingroup +% \begin{Quote} +% \begin{preamble} +% |\floatsetup[widefigure]{|\FRkey{style}|=Boxed,|\FRkey{capposition}|=beside,| +% | |\FRkey{capbesideframe}|=yes}| +% \end{preamble} +% |\begin{figure*}| +% |\fcapside[\FBwidth]| +% |...| +% |\end{figure*}|\quad.\vspace*{-\intextsep} +% \end{Quote} +% \floatsetup[widefigure]{margins=centering,style=Boxed,capposition=beside,capbesideframe=yes,capbesideposition=left} +% \begin{figure*}[H] +% \fcapside[\FBwidth]{\input{Horse.picture}}% +% {\caption[Figure with beside caption in \texttt{Boxed} style in ``starred'' environment.]{%^^A +% Figure with beside caption in \texttt{Boxed} style. The special settings for framed graphics +% were created in ``starred'' environment}\label{figs:beside:Boxed}}% +% \end{figure*} +%\endgroup +% +% \subsection{The Default Float Type Settings}\label{sec:default} +% The following keys and options are switched on when the \package{floatrow} +% package loaded. They equal to |default| style: +% \begin{Options}{\OptionLabel}\par +% \item[font=normalsize]\allowitembreaks[-4] +% \item[footfont=footnotesize]\allowitembreaks[1] +% \item[capposition=bottom] +% \item[capbesideposition=left] +% \item[capbesideframe=no] +% \item[footposition=default] +% \item[heightadjust=none] +% \item[facing=no] +% \item[margins=centering] +% \item[objectset=centering] ($\equiv$|justification=centering|, \package{caption}) +% \item[floatrowsep=columnsep] +% \item[capbesidesep=columnsep] +% \item[precode=none] +% \item[rowprecode=none] +% \item[postcode=none] +% \item[rowpostcode=none] +% \item[framearound=none] +% \item[rowfill=no] +% \item[midcode=captionskip]\allowitembreaks[-4] +% \item[captionskip=10pt] +% \end{Options} +% +% \subsection{Defining New Options} +% In the next few sections a list of commands is presented, which help to define +% additional key options for the |\floatsetup| command. +% +% \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 |MyBoxed|. The figures~\ref{fig:plain:MyBoxed}, and +% some others in current documentation show result. +%\begin{Quote} +%|\DeclareFloatStyle{MyBoxed}{|\FRkey{style}|=Boxed,|\FRkey{captionskip}|=5pt,|\nopagebreak +%| |\FRkey{frameset}|={\fboxrule1pt\fboxsep12pt}}|\nopagebreak +%|\floatsetup[figure]{style=MyBoxed}| +%\end{Quote}\pagebreak[1] +% +% \begingroup +% +% \floatsetup[figure]{style=MyBoxed} +% \begin{figure}[H] +% {\unitlength1.28\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: +%\begin{Quote} +%|\floatsetup[figure]{style=Boxed,captionskip=5pt,| +%| frameset={\fboxsep12pt\fboxrule1pt}}| +%\end{Quote} +% \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 (|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 with figure~\ref{color:fig} on the page~\pageref{color:fig}, +% you may define the red color by following way: +% \begin{Quote}% +% |\DeclareFloatFont{red}{\color{red}}| +% \end{Quote}% +% and then write, for example +% \begin{Quote}% +% |\floatsetup[figure]{font={small,red}}|\quad. +% \end{Quote}% +% The version \textbf{3.1} of the \package{caption} package offers special option inside +% |font=| key. Since the \package{floatrow} package uses the same mechanism for its |font=| +% key, the example above you can write as following: +% \begin{Quote}% +% |\floatsetup[figure]{font={small,color={red}}}|\quad. +% \end{Quote}% +% +% \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 might be used in |rowprecode|, +% |precode|, |midcode|, |postcode|, and +% |rowpostcode| keys (page~\pageref{setup:precode}). +% +% Compare two examples:\enlargethispage\baselineskip +% \begin{Quote} +% \begin{preamble} +% |\DeclareFloatVCode{grayruleabove}%| +% | {{\color{gray}\par\rule\hsize{2.8pt}\vskip4pt\par}}| +% |\DeclareFloatVCode{grayrulebelow}%| +% | {{\color{gray}\par\vskip4pt\rule\hsize{2.8pt}}}| +% |\floatsetup{...,|\FRkey{heightadjust}|=all,|%^^A +% \FRkey{valign}|=c,| +% | |\FRkey{rowprecode}|=grayruleabove,|%^^A +% \FRkey{rowpostcode}|=grayrulebelow}|\nopagebreak +% \end{preamble} +% |\begin{figure}|\nopagebreak +% |\begin{floatrow}|\nopagebreak +% | \ffigbox|\nopagebreak +% | {...}{\caption{The left ...}\label{...}}%| +% | \ffigbox|\nopagebreak +% | {...}{\caption{The beside ...}\label{...}}| +% | \end{floatrow}|\nopagebreak +% |\end{figure}| +% |\begin{figure}|\nopagebreak +% | ...| +% | \caption{Alone figure ...}\label{...}%|\nopagebreak +% |\end{figure}| +% \end{Quote}\pagebreak[2] +% +%\begingroup +% \begin{figure}[H]\floatsetup{heightadjust=all,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=all,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 +% \begin{preamble} +% |...|\nopagebreak +% |\floatsetup{...,|\FRkey{heightadjust}|=all,|\nopagebreak +% | |\FRkey{precode}|=grayruleabove,|%^^A +% \FRkey{postcode}|=grayrulebelow}|\nopagebreak +% \end{preamble}\nopagebreak +% |...| +% \end{Quote}%^^A +% +% \begin{figure}[H]\floatsetup{heightadjust=all,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 +% above and below}%^^A +% \label{intro:rightfig:box}} +% {\unitlength.85\unitlength\input{Cat.picture}} +% \end{floatrow}% +% \end{figure}%^^A +% \begin{figure}[H]\floatsetup{heightadjust=all,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 +% Please note that for ruled styles defined for boxes, like for figures \ref{intro:leftfig:box} +% and \ref{intro:rightfig:box}, which could be placed in one row, you need to +% set |heightadjust=all| key. +% +%\begingroup +% The examples with unfill rows.\RemoveSpaces\vspace*{\topsep} +% \begin{Quote}\openup.5pt +% \begin{preamble} +% |\floatsetup{...,|\FRkey{heightadjust}|=all,|%^^A +% \FRkey{valign}|=c,| +% | |\FRkey{rowprecode}|=grayruleabove,|%^^A +% \FRkey{rowpostcode}|=grayrulebelow}| +% \end{preamble} +% |\begin{figure}|\nopagebreak +% |\begin{floatrow}|\nopagebreak +% | \ffigbox[\FBwidth]...|\nopagebreak +% | \ffigbox[\FBwidth]...|\nopagebreak +% | \end{floatrow}|\nopagebreak +% |\end{figure}| +% \end{Quote}%^^A +% \begin{figure}[H]\floatsetup{heightadjust=all,valign=c,rowprecode=grayruleabove, +% rowpostcode=grayrulebelow}\killfloatstyle +% \begin{floatrow} +% \ffigbox[\FBwidth+2cm] +% {\unitlength.65\unitlength\input{BlackCat.picture}} +% {\caption{The left beside figure inside unfill float row with defined row rules above and below}% +% \label{intro:leftfig:rownofill}}% +% +% \ffigbox[\FBwidth+2cm] +% {\caption{The beside figure at the right inside unfill float row with defined row rules above and below}%^^A +% \label{intro:rightfig:rownofill}} +% {\unitlength.85\unitlength\input{Cat.picture}} +% \end{floatrow} +% \end{figure}%^^A +% The same, but with \FRkey{rowfill} option. +% \begin{Quote}\openup.5pt +% \begin{preamble} +% |\floatsetup{...,|\FRkey{rowfill}|=yes}| +% \end{preamble} +% |...| +% \end{Quote}%^^A +% \begin{figure}[H]\floatsetup{heightadjust=all,valign=c,rowprecode=grayruleabove, +% rowpostcode=grayrulebelow,rowfill=yes}\killfloatstyle +% \begin{floatrow} +% \ffigbox[\FBwidth+2cm] +% {\unitlength.65\unitlength\input{BlackCat.picture}} +% {\caption{The left beside figure inside unfill float row with defined row full size rules above and below}% +% \label{intro:leftfig:rowfill}}% +% +% \ffigbox[\FBwidth+2cm] +% {\caption{The beside figure at the right inside unfill float row with defined row full size rules above and below}%^^A +% \label{intro:rightfig:rowfill}} +% {\unitlength.85\unitlength\input{Cat.picture}} +% \end{floatrow} +% \end{figure}%^^A +%\endgroup +% +% \subsubsection{Settings for Colored Frame (\texttt{colorframeset=})}\label{ssec:color:frame} +% \DescribeMacro{\DeclareColorBox}%^^A +% Let's repeat the command for definition of colored box used by |colorframeset=| key +% (see also page~\pageref{setup:DeclareColorBox}). +% Here is defined frame for figure~\ref{color:frame} below: +% \begin{Quote} +% |\DeclareColorBox{framedfigure}{\fcolorbox{gray}{white}}|\quad. +% \end{Quote} +% The yellow plate for figure rows on the page~\pageref{setup:rowfill}: +% \begin{Quote} +% |\DeclareColorBox{yellowplate}{\colorbox{yellow}}|\quad. +% \end{Quote} +% Please note, that for correct positioning of the color plate during usage of the |\colorbox| +% command you need set to zero value for the |\fboxrule| command in the \FRkey{frameset} option: +% \begin{Quote} +% |frameset={\fboxrule0pt}|\quad. +% \end{Quote} +% +% \DescribeMacro{\DeclareCBoxCorners}\label{setup:DeclareCBoxCorners}%^^A +% If you use the \FRkey{FRcolorbox} option for the \FRkey{framestyle} key +% (page~\pageref{setup:framestyle}), you may set additional material (rules or something), +% attached to four corners. +%\begin{Quote}% +%|\DeclareCBoxCorners|\marg{option}\marg{llcorner}\marg{lrcorner}\marg{urcorner}\marg{ulcorner} +%\end{Quote}% +% The \marg{option} argument defines name of option of the \FRkey{colorframecorners} key. +% The four others define material attached to four corners. +% +% The order of corner material analogous to the order in the METAPOST's |bbox| box +% for the |label| command: first goes lower left corner (\marg{llcorner}) +% then, counterclockwise, lower right corner (\marg{lrcorner}), upper right corner +% (\marg{urcorner}) and last goes upper left corner (\marg{ulcorner}). +% There are used modified commands of |picture| environment inside these arguments: +% all lengths and coordinates must have units like points, millimeters etc., but +% here you may use usual length parameters like |\textwidth|. When the color box is created +% the |\FRcolorboxht|, |\FRcolorboxwd| and~|\FRcolorboxdp| parameters define +% height, width and depth of the box, you may use them inside settings +% of the |\DeclareCBoxCorners| xommand. You may use the +% |\|\FRkey{floatfacing} command to create facing layout. +% +% The example with material in all corners, which shows overlapping. +%\begin{Quote}% +%|\DeclareCBoxCorners{angles}| +%| {{\color{green}%green llcorner| +%| \linethickness{10pt}\put(-5pt,-5pt)| +%| {{\put(0pt,0pt){\line(0,1){\FRcolorboxht}}}%| +%| {\put(-5pt,0pt){\line(1,0){\FRcolorboxwd}}}}%| +%| }}{{\color{red}%red lrcorner| +%| \linethickness{10pt}\put(0pt,0pt)| +%| {{\put(0pt,0pt){\line(0,1){\FRcolorboxht}}}%| +%| {\put(5pt,0pt){\line(-1,0){\FRcolorboxwd}}}}%| +%| }}{{\color{blue}%blue urcorner| +%| \linethickness{10pt}\put(5pt,-5pt)| +%| {{\put(0pt,0pt){\line(0,-1){\FRcolorboxht}}}%| +%| {\put(5pt,0pt){\line(-1,0){\FRcolorboxwd}}}}%| +%| }}{{\color{magenta}%magenta ulcorner| +%| \linethickness{10pt}\put(0pt,0pt)| +%| {{\put(0pt,0pt){\line(0,-1){\FRcolorboxht}}}%| +%| {\put(-5pt,0pt){\line(1,0){\FRcolorboxwd}}}}%| +%| }}| +%\end{Quote}% +% Please note, that this material has not any width and its values do not used during calculation +% of frame position and width. Please note also that material in the left lower and upper corners +% will be covered by frame, but right lower and upper corner material cover the frame +% (inside these ``layers'' the material from upper corners covers lower ones) +% the object contents appear in the upper layer. +%\begingroup +%\begin{Quote}% +%|\floatsetup{style=Boxed,|\FRkey{framestyle}|=FRcolorbox,| +%| |\FRkey{colorframeset}|=yellowplate,|\FRkey{colorframecorners}|=angles,| +%| |\FRkey{frameset}|={\fboxrule=0pt\fboxsep=2pt},|\FRkey{framefit}|=yes,|\FRkey{captionskip}|=15pt}|\vspace*{\baselineskip} +%\end{Quote}% +%\floatsetup{style=Boxed,framestyle=FRcolorbox,colorframeset=yellowplate,colorframecorners=angles, +% framefit=yes,frameset={\fboxrule=0pt\fboxsep=2pt},captionskip=15pt} +% \ffigbox[\FBwidth+2.4cm] +% {\caption{The picture on the color plate with multicolored corners}%^^A +% \label{BOXED:yellowplate:Redangles}} +% {\unitlength1.25\unitlength\input{BlackDog.picture}} +%\endgroup +% +%\begingroup +% The same but without color plate. +%\begin{Quote}% +%|\floatsetup{style=Boxed,|\FRkey{framestyle}|=corners,|%^^A +% \FRkey{colorframecorners}|=angles,| +%| |\FRkey{frameset}|={\fboxrule=0pt\fboxsep=2pt},|\FRkey{framefit}|=yes,|\FRkey{captionskip}|=15pt}|\vspace*{\baselineskip} +%\end{Quote}% +%\floatsetup{style=Boxed,framestyle=corners,colorframecorners=angles, +% framefit=yes,frameset={\fboxrule=0pt\fboxsep=2pt},captionskip=15pt} +% \ffigbox[\FBwidth+2.4cm] +% {\caption{The picture on the ``transparent'' box with multicolored corners}%^^A +% \label{BOXED:transparent:Redangles}} +% {\unitlength1.25\unitlength\input{BlackDog.picture}} +%\endgroup +% +% \subsubsection{Object Justification Option (\texttt{objectset=})}\label{ssec:decl:oset} +% \DescribeMacro{\DeclareObjectSet}\label{setup:DeclareObjectSet}%^^A +% You may define justification for |objectset=| key (page~\pageref{setup:objectset}) +% like\nopagebreak: +% \begin{Quote} +% |\DeclareObjectSet{centering}{\centering}| +% \end{Quote} +% In option's definition you may try to include any regular commands +% (it could be the repeated head text also) +% which you need to put before each object contents in float +% environment. You may also use key options declared by +% \cmd{\DeclareCaptionJustification} command of \package{caption} package +% as options for |objectset=| key. +% +% \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 (|margins=| key) like: +% \begin{Quote} +% |\DeclareMarginSet{center}{%|\nopagebreak +% | \setfloatmargins{\hfil}{\hfil}}| +% \end{Quote} +% or like (see also sample files): +% \begin{Quote} +% |\DeclareMarginSet{outside}{\setfloatmargins*{\hfil}{}}|\nopagebreak +% \end{Quote} +% The |\DeclareMarginSet| command uses the |\setfloatmargins| command, which defines +% fill code for each margin. +% +% \DescribeMacro{\setfloatmargins}\label{setup:setfloatmargins}%^^A +% Non-starred form of |\setfloatmargins| defines left and right +% margin. +% \begin{Quote} +% |\setfloatmargins{|\meta{left margin}|}{|\meta{right margin}|}| +% \end{Quote} +% +% Here goes rather complex example which was created as alternative float layout for one-column +% document. The starred, |figure*|, environment places caption on the left margin, beside +% object. Frame around object has default width of main text. +% \begin{Quote}[0pt] +% \begin{preamble} +% |\makeatletter\@mparswitchfalse\makeatother|\vspace{1ex} +% |\DeclareMarginSet{hangleft}%| +% | {\setfloatmargins| +% | {\hskip-\marginparwidth\hskip-\marginparsep}{\hfil}}|\vspace{1ex} +% |\|\FRkey{DeclareColorBox}|{framedfigure}{\fcolorbox{gray}{white}}|\vspace{1ex} +% |\|\FRkey{DeclareFloatSeparators}|{marginparsep}{\hskip\marginparsep}| +% |\|\FRkey[sec]{floatsetup}|[widefigure]{|%^^A +% \FRkey{margins}|=hangleft,|%^^A +% \FRkey{floatwidth}|=\textwidth,| +% | |\FRkey{capposition}|=beside,|%^^A +% \FRkey{capbesideposition}|=left,|%^^A +% \FRkey{capbesideframe}|=yes,| +% | |\FRkey{capbesidewidth}|=\marginparwidth,|%^^A +% \FRkey{capbesidesep}|=marginparsep,| +% | |\FRkey{framestyle}|=colorbox,|\FRkey{framefit}|=yes,|\nopagebreak +% | |\FRkey{colorframeset}|=framedfigure,|%^^A +% \FRkey{frameset}|={\fboxrule3pt\fboxsep8pt}}|\vspace{1ex} +% |\captionsetup[capbesidefigure]{justification=RaggedRight,|\nopagebreak +% | font=small,labelfont={normalsize,sf,bf},labelsep=newline,strut=no}|\nopagebreak +% \end{preamble} +% |\begin{figure*}|\nopagebreak +% |...|\nopagebreak +% |\end{figure*}| +% \end{Quote} +% \begingroup +% \floatsetup[widefigure]{margins=hangleft,floatwidth=\textwidth, +% capposition=beside,capbesideposition=left,capbesideframe=yes, +% capbesidewidth=\marginparwidth,capbesidesep=marginparsep,framestyle=colorbox,framefit=yes, +% frameset={\fboxrule3pt\fboxsep8pt},colorframeset=framedfigure} +% \captionsetup[capbesidefigure]{justification=RaggedRight, +% font=small,labelfont={normalsize,sf,bf},labelsep=newline,strut=no} +% \begin{figure*}[H]% +% {\input{Mouse.picture}}{\caption{Figure with alternative layout (``starred'' environment) caption +% placed on the left margin}\label{color:frame}} +% \end{figure*}% +% \endgroup +% +% \emph{Note}. The row of figures~\ref{fig:row:Dog}--\ref{fig:row:cheese} on the page +% \pageref{fig:row:Dog} uses the same |margin=| settings of option |margins=|. +% +% Starred form, |\setfloatmargins*|, defines facing layout: inside and +% outside margin. +% \begin{Quote} +% |\setfloatmargins*{|\meta{inside margin}|}{|\meta{outside margin}|}| +% \end{Quote} +% +% You may even set much more complex definition: +% \begin{Quote}\leftmargin0pt +% |\DeclareMarginSet{facingrule}{%|\nopagebreak +% |\setfloatmargins*{%|\nopagebreak +% | \floatfacing{\hskip-12pt\vrule width4pt\hskip8pt\hfill}%|\nopagebreak +% | {\hfill\hskip8pt\vrule width4pt\hskip-12pt}}{}}| +% \end{Quote} +% \DescribeMacro{\floatfacing}\label{setup:floatfacing}%^^A +% 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 and for floats with beside captions. +% +% \emph{Note}. Please remember that all options, which set different layout for facing pages +% need |facing=yes| key option. +% +% \DescribeMacro{\floatboxmargins}\label{setup:floatboxmargins}%^^A +% \DescribeMacro{\floatrowmargins}\label{setup:floatrowmargins}%^^A +% \DescribeMacro{\floatcapbesidemargins}\label{setup:floatcapbesidemargins}%^^A +% The |\setfloatmargins| could be ``separated'' into the 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 +% |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|. Again, the settings which use |\floatfacing| command +% work only in the case when key |facing=yes| is used. +% +%\RestoreSpaces +% \paragraph{Alignment Settings for longtable.} +% \label{ssec:decl:ltable:marg} +% The \package{floatrow} expands some settings of table layout +% to the |longtable| environment, so you may set |\LTleft| and +% |\LTright| parameters inside |\DeclareMarginSet| settings. For example, +% |centering| option was defined like: +% \begin{Quote} +% |\DeclareMarginSet{centering}{\setfloatmargins{\hfill}{\hfill}%| +% | \LTleft=\fill \LTright=\fill}| +% \end{Quote} +% +% \subsubsection{Float Separators Options (\texttt{floatrowsep=}, \texttt{capbesidesep=})} +% \DescribeMacro{\DeclareFloatSeparators}\label{setup:DeclareFloatSeparators}%^^A +% You may define separator +% between float boxes, or between float object and beside caption: +% \begin{Quote} +% |\DeclareFloatSeparators{columnsep}{\hskip\columnsep}|\quad. +% \end{Quote} +% Please remember, that you may use options defined with |\DeclareFloatSeparators| +% by both |floatrowsep=| and |capbesidesep=| keys. +% You may also use key options declared +% by \cmd{\DeclareCaptionLabelSeparator} command.\par% +% +% The next example uses more complex separator, which uses, the \package{color} package. +% \begin{Quote}[0pt] +% \begin{preamble} +% |\|\FRkey{DeclareObjectSet}|{colorred}{\parskip2pt\parindent15pt\color{red}}| +% |\DeclareFloatSeparators{colorsep}%| +% | {\begingroup\color{blue}%| +% | \hskip8pt\vrule width4.8pt\hskip8pt\endgroup}| +% |\|\FRkey[sec]{floatsetup}|[widefigure]{|%^^A +% \FRkey{margins}|=hangleft,|\FRkey{capbesidesep}|=colorsep,| +% | |\FRkey{objectset}|=colorred,|\FRkey{floatwidth}|=\textwidth}| +% |\captionsetup[figure]{justification=justified,| +% | labelfont={color={magenta},bf},textfont={color={green}},| +% | labelsep=newline}| +% \end{preamble} +% |\begin{figure*}|\nopagebreak +% |...|\nopagebreak +% |\end{figure*}| +% \end{Quote} +% \begingroup +% \floatsetup[widefigure]{margins=hangleft,capbesidesep=colorsep,objectset=colorred, +% floatwidth=\textwidth,capposition=beside,capbesideposition=left} +% \captionsetup[figure]{justification=justified, +% labelfont={color={magenta},bf},textfont={color={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}\label{color:fig}} +% \end{figure*}% +% \emph{Note}. The settings of color of caption font like +% |labelfont=|\allowbreak|{color={magenta},bf,}|\allowbreak +% |textfont={color={green}}| +% were documented first time in the \package{caption} documentation version~\textbf{3.1}. +% \endgroup +% +% \subsubsection{Option for Footnote Rule's Style (\texttt{footnoterule=})}\label{ssec:fnoterule} +% \DescribeMacro{\DeclareFloatFootnoterule}\label{setup:DeclareFloatFootnoterule}%^^A +% You may define new footnoterule (|footnoterule=| key) like: +% \begin{Quote} +% \begin{preamble} +% |...| +% |\usepackage{ifthen}| +% |\renewcommand\frulemax{72pt}| +% |\newcommand \Limitedrule{.33\columnwidth}| +% |\DeclareFloatFootnoterule{Limited}{\kern-3pt| +% | \def\Limitedrule{.33\columnwidth}%| +% | \ifthenelse{\lengthtest{\frulemax<\Limitedrule}}%| +% | {\def\Limitedrule{\frulemax}}{}%| +% | \hrule width\Limitedrule\kern2.6pt}| +% \end{preamble} +% \end{Quote} +% Remember, that the summary vertical height for footnote rule must be +% equal to~0pt. +% +%\clearpage +% \section{Creation of New Float Types}\label{sec:newfloat} +% \DescribeMacro{\DeclareNewFloatType}\label{setup:DeclareNewFloatType}%^^A +% For creation of new float type the |\DeclareNewFloatType|\label{FAD:newfloattype} +% command was created +% 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 floating environment name.\\ +% The \meta{options} could include the following keys: +% +% \noindent +% \DescribeMacro{placement}\label{setup:placement}%^^A +% The value of this key could contain any combination of the letters +% |t|, |b|, |h|, and |p|, which +% define the placement of current float type on the page in +% the case floating environment has no option argument. +% (As default is declared |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 extension of the file in which +% gathered list of floats. +% +% \emph{Note.} In the version v0.2b, in the case of this key not defined, +% the captions of one type are gathered in the file with extension, +% co-named to current floating environment with perfix ``lo''. This new feature allows +% to create separate float lists by default.%^^A\footnote{In some systems these extensions could fail?} +% +% \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 is absent, +% the float numbering increases during whole documentation. +% +% \noindent +% \DescribeMacro{relatedcapstyle}\label{setup:relatedcapstyle}%^^A +% In the \package{float} package the non-starred +% \cmd{\newfloat}/\cmd{\restylefloat} macros attach the 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 |relatedcapstyle=yes|.\medskip +% +% Below is an example of the |\DeclareNewFloatType| command, +% which was used for definition of the |Example| +% environment demonstrated on page \pageref{exa1.1}. +% It consists of following code: +% \begin{Quote} +% |\DeclareNewFloatType{Example}%| +% | {placement=t,within=section,fileext=loe}| +% \end{Quote} +% +% \subsection{How to replace \texorpdfstring{\cs{newfloat}}{newfloat} +% with \texorpdfstring{\cs{DeclareNewFloatType}}{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=|\meta{ext}|,widthin=|\meta{within}|}| +% \end{Quote} +% +% The \package{float} package offers also other commands of float type declaring: +% the |\floatname| command can be replaced by the |name=| key of |\DeclareNewFloatType| +% command; the |\floatplacement|---by the |placement=| key. +% +% \clearpage +% \section{Borrowed Code}\label{sec:borrow} +% \FRorisubsection{The \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 \emph{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 future requests for +% this package will be ignored. This will help to avoid strange error messages +% in the case of these packages loaded after \package{floatrow}. +% Please note that packages, which load \package{float} must be loaded +% \emph{after} \package{floatrow}. +% +% I hope that old documents, which use the \package{float} package, +% 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 |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 that they will work as expected.} (see section below). +% +% The sections below explain how \package{float} commands and options work in \package{floatrow}. +% Sections, signed with ``[\package{float}]'' and typed with slanted font, were borrowed from +% \package{float}'s documentation. The section which +% describes commands of layout settings of \package{float} package was moved +% in the section~\ref{sec:changed} +% (subsection~\ref{sec:floatborrowI}, ``The User Interface---New +% Floats [\package{float}]''), this section describes obsolete stuff. +% +% \subsubsection{How Settings From The \package{float} Package +% Work in \package{floatrow}}\label{float-obs} +% The combination of command |\floatstyle|\marg{style} and one of commands +% \begin{Quote} +% |\floatstyle|\marg{style} +% \cmd{\newfloat}\marg{float} +% \end{Quote} +% or +% \begin{Quote} +% |\floatstyle|\marg{style} +% \cmd{\restylefloat}\marg{float} +% \end{Quote} +% 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{...}|. +% +% \pagebreak\subsubsection{Printing of Float List [\package{float}]} +% \label{sec:floatborrowIa} +% \begin{slshape} +% \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|. +% +%^^A%\begin{em}% +%^^A% \noindent\textit{Floatrow note}. +%^^A% Please remember that for each float type list +%^^A% you must set file extension where the entries of each float type gathered. +%^^A% Use key \texttt{fileext=...} in |\DeclareNewFloatType|. +%^^A% If two or more float types will have the same file +%^^A% for list of floats, you will get all floats in the +%^^A% first appeared |\listof|, and all next will be empty. +%^^A%\end{em}% +% +% \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 |figure|s and |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 +% \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} +% +% \smallskip\em \textit{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 floating environment within a~paragraph (and at the middle of line also). +% +% The \texttt{[H]} option places the float just \emph{at the point} where it appeared +% in the source file, it is used (\emph{but that strongly +% not recommended when typesetting books}!) for floats after text like ``\dots{}shown in this +% \textbf{figure:}'', i.e. the \texttt{[H]} float, almost like math formulas, continues the current +% paragraph. +% +%\end{slshape} +% +% \subsubsection{The {[H]} +% Placement Specifier---Managing of Page Breaks}\label{sec:listpen} +% The strange phrase at the end of previous paragraph, ``almost like math formulas'' +% means, that ``anchored'' floats have no management of page breaking, and also +% the text, typed without blank line after float, always gets |\parindent|. +% +% 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 (it can be used separately). It offers commands, +% which manage the penalty values in the list environments: +% \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 of them can be set globally, inside groups, and 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 +% The key, if true, +% uses list penalties, otherwise anchored float works without any penalty, i.e. like +% defined in \package{float}. +% +% Also (added in version 0.1k with current key): +% Since list environments do \emph{not make indentation} in the +% paragraphs next to them, in the case of \emph{no blank} line after environment, +% the ``anchored'' floating environment does +% the same, if this option is true. Default value of |floatHaslist| +% is |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 floats. If you define +% \begin{Quote} +%\begin{preamble} +% |\makeatletter| +% |\renewcommand\floatHpenalties{\@beginparpenalty\@M}| +% |\makeatother| +%\end{preamble} +% \end{Quote} +% or, with \package{listpen} package +% \begin{Quote} +%\begin{preamble} +% |\renewcommand\floatHpenalties{\allowprelistbreaks[-4]}|\quad, +%\end{preamble} +% \end{Quote} +% you'll never get page breaks before anchored floats. +% +% \medskip\noindent +% \DescribeMacro{\RestoreSpaces} +% \DescribeMacro{\RemoveSpaces} +% The commands-aliases +% of the |\if@nobreak| flag were added. The first is equal to |\@nobreakfalse|. +% The main (and most visible) usage of this flag is for managing +% vertical spaces: The |true| value in the case of two sectioning commands +% cancels usage of the space before next +% |\..section| command of the pair; in the case of +% spaces around list environments it cancels usage of the space +% before list just after sectioning command. +% Usually the |\@nobreakfalse| flag toggles at the next paragraph (or |\par| command), +% but in some cases this ``toggling'' cannot be happen in necessary point. +% The |\RestoreSpaces| command would help. Opposite command |\RemoveSpaces| equals to |\@nobreaktrue|. +% +% \subsection{The \package{rotfloat} Package} +% Code of \package{rotfloat} package was also borrowed by \package{floatrow} +% package. +% This package originally allows to expand settings of \package{float} package to +% rotated environments like |sidewaysfigure| and |sidewaystable|. This mechanism +% was borrowed to expand the \package{floatrow}'s settings in the similar way. +% +% In the case of loaded \package{rotfloat} package \emph{before} +% \package{floatrow} you will get error message. +% +% The \package{floatrow} package loads code which pretends that +% \package{rotfloat} is 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 an `option clash' error message. +% +%\clearpage +% \section{The \package{floatrow} Package and The \package{caption} Package}\label{ssec:caption} +% Tested (and compatible) with \package{caption} version from v3.0q to~v3.1j. +% +% The \package{caption} package has strong mechanism for creation of +% caption layout, so \package{floatrow} addresses the creation of new +% caption styles to this package (see documentation for \package{caption} +% package%^^A +% \footnote{The English documentation is +% \href{ftp://ctan.tug.org/tex-archive/macros/latex/contrib/caption/caption-eng.pdf}%^^A +% {\meta{texmf folder}\texttt{/doc/latex/caption/caption-eng.pdf}}.}). +% +% The \package{floatrow} package adds a~possibility to create variations of caption layouts +% for floats in different positions or float layouts (e.g. like wide or +% two-column floats, rotated floats, wrapped floats) in the same time when |\floatsetup| +% settings were loaded, using the same optional argument in +% |\captionsetup| settings. +% +% For example you want to create a~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 page~\pageref{stsetorder}\label{cap:beside:order}. +% +%\begingroup +%\providecommand*\subcaption{\captionsetup{subtype*}\caption} +% +% \captionsetup[subtable]{labelformat=brace,textfont=md,labelfont=up} +% +% \subsection{Managing of Float Parts With the \texttt{subfloatrow} Environment}\label{ssec:subcaption} +% \DescribeMacro{\subcaption} +% The version~3.1 of caption package offers possibility for creation of +% subcaptions, using the |subtype| settings (and |\DeclareCaptionSubType| command, see \package{caption} +% documentation), which allow to create captions for parts of floats. +% +% In this section you may see some examples with building of rows of beside parts of floats. +% +% The example with subtables \Fref{subcaptab:tabIIIa} and \Fref{subcaptab:tabIIIb} +% (table~\ref{captab:tabIII}).%^^A +% \FRmpar{Subcaption above subtable}{FAD:subcapabove:subcaption} +% \begin{Quote} +%\begin{preamble} +%\verb|...| +%\verb|\DeclareCaptionSubType[alph]{table}| +%\verb|\captionsetup[subtable]{labelformat=brace,textfont=md,labelfont=up}|\vspace{1ex} +%\verb|\floatsetup[subtable]{style=Plaintop}%| +%\end{preamble} +% \verb|\begin{table}| +% \verb|\ttabbox[\FBwidth]| +% \verb|{\begin{subfloatrow}| +% \verb| \ttabbox| +% \verb| {\caption{First subtable}\Flabel{...}%| +% \verb| \begin{tabular}{..}...| +% +% \verb| \ttabbox...| +% \verb|\end{subfloatrow}}| +% \verb|{\caption{Two ...}\Flabel{...}}|\nopagebreak +% \verb|\end{table}| +% \end{Quote}% +% \DeleteShortVerb{\|}% +%\begingroup +% \floatsetup[subtable]{style=Plaintop} +% \begin{table}[H]\extrarowheight1pt\tabcolsep1.5\tabcolsep +% \ttabbox[\FBwidth] +% {\begin{subfloatrow} +% \ttabbox +% {\caption{First subtable}\Flabel{subcaptab:tabIIIa}%^^A +% \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}}{} +% +% \ttabbox +% {\caption{Second subtable inside of \cs{ttabbox} and \texttt{floatrow} environment}%^^A +% \Flabel{subcaptab:tabIIIb}%^^A +% \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}} +% {\caption{Two {subtable}s +% (captions for parts of float created with \cs{caption} command)}\label{captab:tabIII}} +% \end{table}% +%\endgroup +% \MakeShortVerb{\|}% +% Please note that for the labels of table parts the special option +% \verb|brace| of the \verb|labelformat| key was used. +% +% \DescribeMacro{subfloatrow} +% The |subfloatrow| is analogous to the |floatrow| environment\footnote{ +% It skips some features of ``parent'' environment, (e.g. margins or margin material +% this environment build box and follows |objectset=| option).}. +% The usage is similar to |floatrow|, you may write for example: +% \begin{Quote} +% \verb|\begin{subfloatrow}[|\meta{number of beside parts of floats}\verb|]|\nopagebreak +% \verb|\floatbox...|\nopagebreak +% \verb|\floatbox...|\nopagebreak +% \verb|...|\nopagebreak +% \verb|\end{subfloatrow}| +% \end{Quote} +% i.e.\ by default there are allowed two parts of floats. For other number of parts +% you ought to put number in the optional argument. This environment +% puts horizontal separator, defined by |subfloatrowsep=| +% key. This key uses the same options +% as |floatrowsep=| and |capbesidesep=| keys (options of +% these keys defined by the \verb|\|\FRkey{DeclareFloatSeparators} command). +% +% Inside the |subfloatrow| environment you may use the |\caption| command, which +% this time creates the label for parts of float. This is because of setting +% \begin{Quote} +% |\captionsetup{subtype}| +% \end{Quote}% +% at the very beginning of this environment. +% +% \emph{Note}: With the \package{floatrow} package you may use also |\captionsetup[subfloat]| +% settings, the \package{caption} package offers +% the |\captionsetup[subtype]{...}| settings which will be stronger than previous, to say nothing +% about |\captionsetup[subfigure]{...}| for parts of figure, which are strongest. (Please note +% that in \package{caption} terms word ``subtype'' means part of float.) +% +% Next follows an example with beside main caption (figure~\ref{fig:subcap:catsI}).%^^A +% \begin{Quote}[0pt] +% \begin{preamble}\nopagebreak +% \verb|...| +% \verb|\DeclareCaptionSubType[alph]{figure}| +% \verb|\captionsetup[subfigure]{labelformat=brace,justification=centerlast}|\vspace{1ex} +% \verb|\floatsetup[figure]{|\FRkey{style}\verb|=Shadowbox,|%^^A% +% \FRkey{capbesidesep}\verb|=columnsep,%| +% \verb| |\FRkey{capbesideframe}\verb|=yes,|%^^A +% \FRkey{capbesideposition}\verb|={left,bottom}}|\nopagebreak +% \verb|\floatsetup[subfigure]{|\FRkey{style}\verb|=plain,|\FRkey{heightadjust}\verb|=object}| +% \end{preamble} +% \verb|\begin{figure}| +% \verb|\fcapside[\FBwidth]| +% \verb| {\begin{subfloatrow}| +% \verb| \ffigbox[\FBwidth]{\caption{One funny cat}\Flabel{...}...}{}| +% \verb| | +% \verb| \ffigbox[\FBwidth]{\caption{Another pleasant cat}\Flabel{...}...}{}%| +% \verb| \end{subfloatrow}}| +% \verb| {\caption{... \Fref{...} and \Fref{...}}\label{...}}|\nopagebreak +% \verb|\end{figure}| +% \end{Quote}\par\kern-\textfloatsep\kern-\baselineskip +%\begingroup +% \captionsetup[subfigure]{labelformat=brace,justification=centerlast,strut=no} +% \floatsetup[figure]{style=Shadowbox,capbesidesep=columnsep, +% capbesideframe=yes,capbesideposition={left,bottom}} +% \floatsetup[subfigure]{style=plain,heightadjust=object} +% \begin{figure}[H] +% \fcapside[\FBwidth] +% {\begin{subfloatrow} +% \ffigbox[\FBwidth]{\caption{One funny cat}\Flabel{subcapfig:w}% +% \unitlength1.2\unitlength\input{Cat.picture}}{} +% \ffigbox[\FBwidth]{\caption{Another pleasant cat}\Flabel{subcapfig:b}%^^A +% \unitlength1.32\unitlength\input{TheCat.picture}}{}% +% \end{subfloatrow}} +% {\caption[Subfloat row]{Beside figure +% caption vertically bottom aligned; fancy +% \texttt{Shadowbox} layout. There are two parts: +% \Fref{subcapfig:w} and \Fref{subcapfig:b}}\label{fig:subcap:catsI}} +% \end{figure}\kern-\lastskip +%\endgroup +% +% In the next example the main caption will be placed below, but labels of figure parts were +% printed beside (see figure~\ref{fig:subcap:catsII}). For this reason the +% \cs{useFCwidth} command was used, which creates the width of caption box equal to natural caption width. +% \begin{Quote}\vskip-\lastskip% +%\begin{preamble}\nopagebreak +%\verb|...| +%\verb|\captionsetup[subfigure]{labelformat=brace,list=off}|\vspace{1ex} +%\verb|\floatsetup[subfigure]{|\FRkey{style}\verb|=plain,|%^^A +% \FRkey{capbesideposition}\verb|=left,| +%\verb| |\FRkey{capbesidesep}\verb|=space,|%^^A +% \FRkey{heightadjust}\verb|=object}|\nopagebreak +%\end{preamble} +% \verb|\begin{figure}[H]| +% \verb| \ffigbox[\FBwidth]| +% \verb| {\begin{subfloatrow}\useFCwidth| +% \verb| \fcapside[\FBwidth]{\caption{}\Flabel{...}...}{}| +% +% \verb| \fcapside[\FBwidth]{\caption{}\Flabel{...}...}{}| +% \verb| \end{subfloatrow}}| +% \verb| {\caption[...]{...}\label{...}}|\nopagebreak +% \verb|\end{figure}|\pagebreak[1] +% \end{Quote} +%\begingroup +% \captionsetup[subfigure]{labelformat=brace,justification=raggedleft,list=off} +% \floatsetup[subfigure]{style=plain,capbesideposition=left, +% capbesidesep=space,floatrowsep=qquad} +% \begin{figure}[H] +% \ffigbox[\FBwidth] +% {\begin{subfloatrow}\useFCwidth +% +% \fcapside[\FBwidth] +% {\caption{}\Flabel{subcap:wI}\hbox{\unitlength1.02\unitlength\input{Cat.picture}}}{} +% +% \fcapside[\FBwidth] +% {\caption{}\Flabel{subcap:bI}\hbox{\unitlength.85\unitlength\input{TheCat.picture}}}{}% +% \end{subfloatrow}} +% {\caption[Two parts of figure with +% labels beside]{Two parts of figure in a row with +% labels beside. Main caption below. There are two subfigures: +% \Fref{subcap:wI} and \Fref{subcap:bI}}\label{fig:subcap:catsII}} +% \end{figure} +%\endgroup +% +% In the next example the difference from previous layout settings is in usage +% of the top vertical alignment. The height of the right graphics was enlarged by 1cm just +% to show how the alignment for parts (here is default centering alignment) +% and the top alignment for their captions (they are aligned by top) works. +% \begin{Quote}% +%\begin{preamble}\nopagebreak +%\verb|...| +%\verb|\floatsetup[subfigure]{|\FRkey{style}\verb|=plain,|%^^A +% \FRkey{heightadjust}|=object,| +%\verb| |\FRkey{capbesideposition}\verb|={left,top},|\FRkey{capbesidesep}\verb|=space}| +%\end{preamble} +% \verb|\begin{figure}[H]| +% \verb| \ffigbox[\FBwidth]| +% \verb| {\begin{subfloatrow}\useFCwidth| +% \verb| \fcapside[\FBwidth]{\caption{}\Flabel{...}...}{}| +% +% \verb| \fcapside[\FBwidth][\FBheight+1cm]{\caption{}\Flabel{...}...}{}| +% \verb| \end{subfloatrow}}| +% \verb|{\caption[...]{...}\label{...}}| +% \verb|\end{figure}| +% \end{Quote} +%\begingroup +% \captionsetup[subfigure]{labelformat=brace,justification=raggedleft,list=off} +% \floatsetup[figure]{heightadjust=object} +% \floatsetup[subfigure]{style=plain,capbesideposition={left,top},heightadjust=object, +% capbesidesep=enskip,floatrowsep=qquad} +% \begin{figure}[H] +% \ffigbox[\FBwidth] +% {\begin{subfloatrow}\useFCwidth +% +% \fcapside[\FBwidth] +% {\caption{}\Flabel{subcap:wIi}\hbox{\unitlength1.02\unitlength\input{Cat.picture}}}{} +% +% \fcapside[\FBwidth][\FBheight+1cm] +% {\caption{}\Flabel{subcap:bIi}\hbox{\unitlength.85\unitlength\input{TheCat.picture}}}{}% +% \end{subfloatrow}} +% {\caption[Two labeled parts of figure (centered vertically); +% beside labels aligned by top]{Two parts +% of figure centered vertically; beside labels aligned by top. Main caption below. +% There are two subfigures: +% \Fref{subcap:wIi} and \Fref{subcap:bIi}}\label{fig:subcap:catsIiI}} +% \end{figure} +%\endgroup +% +% Another example (\ref{fig:subcap:IcatsI}) demonstrates, that you +% may not only use the option |style=plain| for parts of float, +% and there can not only be labels for beside subcaptions. +% \begin{Quote}[0pt] +% \begin{preamble}\nopagebreak +% \verb|\captionsetup[subfigure]{labelformat=brace,justification=rightlast,| +% \verb| format=hang}|\vspace{1ex} +% \verb|\floatsetup[figure]{|\FRkey{style}\verb|=plain}| +% \verb|\floatsetup[subfigure]{|\FRkey{style}\verb|=BOXED,|\FRkey{capbesideposition}\verb|={left,top}}| +% \end{preamble} +% \verb|\begin{figure}| +% \verb|\ffigbox| +% \verb| {\begin{subfloatrow}| +% \verb| \fcapside[1.1\FBwidth]{\caption{One ...}\Flabel{...}...}{}| +% \verb| | +% \verb| \fcapside[1.1\FBwidth]{\caption{Another ...}\Flabel{...}...}{}%| +% \verb| \end{subfloatrow}}| +% \verb| {\caption{... \Fref{...} and \Fref{...}}\label{...}}|\nopagebreak +% \verb|\end{figure}| +% \end{Quote} +%\begingroup +% \captionsetup[subfigure]{labelformat=brace,justification=rightlast,format=hang} +% \floatsetup[figure]{style=plain} +% \floatsetup[subfigure]{style=BOXED,capbesideposition={left,top}} +% \begin{figure}[H] +% \ffigbox +% {\begin{subfloatrow} +% \fcapside[1.1\FBwidth]{\caption{One very funny cat with half-circle eyes, triangle ears, +% and small black nose}\Flabel{subcapfig:ww}% +% \input{Cat.picture}}{} +% \fcapside[1.1\FBwidth]{\caption{Another very pleasant cat with big whiskers, oval eyes, and pink +% wet nose}\Flabel{subcapfig:bb}%^^A +% \input{TheCat.picture}}{}% +% \end{subfloatrow}} +% {\caption[Two parts of figure in a row with captions beside]{Beside +% subcaptions vertically top aligned. There are two subfigures: +% \Fref{subcapfig:ww} and \Fref{subcapfig:bb}}\label{fig:subcap:IcatsI}} +% \end{figure}\vskip-\lastskip\kern-\baselineskip +%\endgroup +% +% \DescribeMacro{\captionlabel}% +% \DescribeMacro{\subcaptionlabel}% +% The last example demonstrates new command \verb|\subcaptionlabel| for caption +% labels, which can be used inside, +% e.g., |picture| environment or as replacing text in \verb|psfrag| command of \package{psfrag} +% package. Unlike the \verb|\caption| and \verb|\subcaption| commands, the \verb|\subcaptionlabel| +% will not be saved in special box register when the float box is building, and +% will be typed like caption label, which follows settings of caption layout. +% This command is based on \verb|\subcaption| command but with changed internal command of \package{caption} +% package. There is also the \verb|\captionlabel| command. +% \captionsetup[subfigure]{labelformat=brace,justification=raggedleft} +% \begin{Quote}% +%\begin{preamble}\nopagebreak +%\verb|...| +%\verb|\floatsetup[figure]{|\FRkey{style}\verb|=plain}| +%\end{preamble} +% |{\begin{picture}(82,28)(0,0)| +% |\put(0,0){\framebox(40,28)[bl]{}}| +% |\put(2,2){\makebox(0,0)[bl]{\relax\hbox{\subcaptionlabel{}\Flabel{scap:I}}}}| +% |...| +% |\put(42,0){| +% |\put(0,0){\framebox(40,28)[bl]{}}| +% |\put(2,2){\makebox(0,0)[bl]{\hbox{\subcaptionlabel{}\Flabel{scap:II}}}}| +% |...}| +% |\end{picture}}| +% |{\caption{Here are two simple subfigures.| +% |\textit{Left} shows cat's eyes (\Fref{scap:I});| +% |\textit{right}---cat's ears (\relax\Fref{scap:II})%| +% |}\label{figcap:label}}| +% |\end{figure}| +% \end{Quote} +%\begingroup\par\kern-\textfloatsep +% \floatsetup[figure]{style=plain} +% \begin{figure}[H] +% \fcapside[\FBwidth] +% {\unitlength2\unitlength\fboxsep-.4pt +% \begin{picture}(82,28)(0,0) +% \put(0,0){\framebox(40,28)[bl]{}} +% \put(2,2){\makebox(0,0)[bl]{\relax\hbox{\subcaptionlabel{}\Flabel{scap:I}}}} +% \put(20,2){{ +% \put(-12,5){\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(3,5){\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(42,0){ +% \put(0,0){\framebox(40,28)[bl]{}} +% \put(2,2){\makebox(0,0)[bl]{\hbox{\subcaptionlabel{}\Flabel{scap:II}}}}%^^A\label{} +% \put(20,2){{ +% \put(-14,12){\put(0,0){\line(2,3){5}} +% \put(10,0){\line(-2,3){5}}} +% \put(4,12){\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. +% \textit{Left} shows cat's eyes (\Fref{scap:I}); +% \textit{right}---cat's ears (\relax\Fref{scap:II}) +% \unskip}\label{figcap:label}} +% \end{figure} +%\endgroup +% +% \subsection{Support of The Label--Sublabel References}\label{ssec:Flabel} +% In the examples above of the current section the \verb|\Flabel| and +% \verb|\Fref| commands were used for cross referencing (you may see +% these commands in the code examples). +% The \verb|\Flabel| gets a~modified format of current label of subfloat number: +% In these definitions the float and subfloat +% separators are divided by a~special separator command, which by default has no effect. +% The label command \verb|\Flabel| can be defined like following: +% \begin{Quote}% +%\begin{preamble} +% \verb|\newseparatedlabel\Flabel{figure}{subfigure}| +%\end{preamble} +% \end{Quote} +% or, for all floats: +% \begin{Quote}% +%\begin{preamble} +% \verb|\makeatletter|\nopagebreak +% \verb|\newseparatedlabel\Flabel{\@captype}{sub\@captype}|\nopagebreak +% \verb|\makeatother| +%\end{preamble} +% \end{Quote} +% Next command, \verb|\Fref|, redefines this separator, and defines, if necessary, +% the font emphasize (or other command which uses one argument) +% of following part of label, and prints reference with +% standard \verb|\ref| command. It was defined in this documentation like following: +% \begin{Quote}% +%\begin{preamble} +% \verb|\newseparatedref\Fref{,\,\textit}|\quad. +%\end{preamble} +% \end{Quote} +% Thus, labels, which use \verb|\Flabel| command can be referenced by usual way with \verb|\ref| +% command and with \verb|\Fref| command. The labels in current section and in the section, which describes +% the \package{subfig} package, use the \verb|\Flabel|. You may see the result of this command +% in all \verb|\Fref|erences to these parts of figures. +% +% The last command, \verb|\makelabelseparator|, defines label separator globally: +% \begin{Quote}% +%\begin{preamble} +% \verb|\makelabelseparator{,\,\textit}|\quad. +%\end{preamble} +% \end{Quote} +% In this case both \verb|\Fref| and \verb|\ref| commands give the same result with |\Flabel|ed +% elements. +% +% \subsubsection{The \texorpdfstring{\cs{RawCaption}}{RawCaption} with Parts of Figure} +%\begingroup +% \DescribeMacro{\RawCaption}\label{subcap:RawCaption}%^^A +% The example with usage of |\subcaption| and |\RawCaption| command. +% The layout of figure float is modified \verb|BOXED| style. The idea behind this example is +% to place caption in the free right lower corner of graphics. The \verb|\RawCaption| +% allows to put the caption in necessary place without disturbing the float layout. +% \captionsetup[subfigure]{labelformat=brace,justification=rightlast,format=hang} +% +% \DescribeMacro{subfloatrow*} +% The starred form loads settings for creation captions of float parts, but +% in this environment the |\caption| command restores its meaning. Thus, +% you need the |\subcaption| command for typesetting sub-captions. +% You may define it by yourself: +% \begin{Quote} +% |\newcommand*\subcaption{\captionsetup{subtype*}\caption}| +% \end{Quote}% +% or use the additional package called \package{subcaption} which on top of everything +% defines the |\subcaption| command. +% +% \begin{Quote}[0pt]% +%\begin{preamble}\nopagebreak +% |\|\FRkey{DeclareColorBox}|{framedfigure}{\fcolorbox{gray}{white}}|\vspace{1ex} +% |\floatsetup[figure]{style=BOXED,heightadjust=object,| +% | colorframeset=framedfigure,| +% | framestyle=colorbox,frameset={\fboxrule3pt\fboxsep8pt}}|\vspace{1ex} +% |\floatsetup[subfigure]{style=plain,capbesideposition={left,top},| +% | heightadjust=object}| +%\end{preamble} +% |\begin{figure}[H]| +% |\ffigbox{}{\begin{subfloatrow*}| +% |\fcapside[1.1\FBwidth]{\subcaption{...}\Flabel{...}...}{}| +% |\fcapside[1.1\FBwidth]{\subcaption{...}\Flabel{...}...}{}%| +% |\end{subfloatrow*}%| +% |\renewlengthtocommand\settowidth\Mylen{\subfloatrowsep}\vskip\Mylen| +% |\BottomFloatBoxes\floatsetup[subfigure]{heightadjust=none}| +% |\begin{subfloatrow*}| +% |\fcapside[1.1\FBwidth]{\subcaption{...}\Flabel{...}...}{}| +% |\ffigbox[][][b]{}{\RawCaption{\caption[...}\label{...}}}| +% |\end{subfloatrow*}}|\nopagebreak +% |\end{figure}| +% \end{Quote} +% \floatsetup[figure]{style=BOXED,heightadjust=object,colorframeset=framedfigure, +% framestyle=colorbox,frameset={\fboxrule3pt\fboxsep8pt}} +% \floatsetup[subfigure]{style=plain,capbesideposition={left,top},heightadjust=object} +% \begin{figure}[H] +% \ffigbox{}{\begin{subfloatrow*} +% \fcapside[1.1\FBwidth]{\subcaption{One very funny cat with half-circle eyes, triangle ears, +% and small black nose}\Flabel{subIcapfig:ww}% +% \setlength\unitlength{61\unitlength/48}\input{Cat.picture}}{} +% \fcapside[1.1\FBwidth]{\subcaption{Another very pleasant cat with big whiskers, oval eyes, and pink +% wet nose}\Flabel{subIcapfig:bb}%^^A +% \input{TheCat.picture}}{}% +% \end{subfloatrow*}\renewlengthtocommand\settowidth\Mylen{\subfloatrowsep}\vskip\Mylen +% \BottomFloatBoxes\floatsetup[subfigure]{heightadjust=none} +% \begin{subfloatrow*} +% \fcapside[1.1\FBwidth]{\subcaption{The very big cat, sitting on the window and +% looking at the birds on the tree in the yard}\Flabel{subIcapfig:bc}% +% \input{BlackCat.picture}}{} +% \ffigbox[][][b]{}{\RawCaption{\caption[Three labeled parts of figure and raw caption]{Beside +% subcaptions vertically top aligned. There are three subfigures: +% \Fref{subIcapfig:ww}, \Fref{subIcapfig:bb} and \Fref{subIcapfig:bc}. Caption placed +% at the free space of right lower corner}\label{fig:subIcap:IcatsI}}} +% \end{subfloatrow*}} +% \end{figure} +%\endgroup +% +%\endgroup +% +%\clearpage +% \section{Style Tandems} +% The next few sections show examples and explain some noticed +% features with usage of \package{floatrow} and other packages. There is no +% full list of style compatibilities. You may succeed with other +% versions of mentioned packages, and maybe with not mentioned +% packages too. +% +%\begingroup +% \subsection{The \package{subfig} Package}\label{ssec:subfig} +% Tested (and compatible) with version 1.3, +% dated 2005/06/28%^^A +% \footnote{The English documentation is +% \href{ftp://ctan.tug.org/tex-archive/macros/latex/contrib/subfig/subfig.pdf}%^^A +% {\meta{texmf folder}\texttt{/doc/latex/subfig/subfig.pdf}}.}. +% For the \package{subfig} package there are additional +% macros in \package{floatrow} which +% put subcaption label beside contents of subfloat and 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 the +% \package{subfig} package (like |\captionsetup[table]{position=top}| in +% \package{caption} package): +%\begin{Quote}\obeylines\parskip-.15pt +%|\begin{table}\setlength\extrarowheight{1pt}|\nopagebreak +%| \|\FRkey[sec]{floatbox}|{table}[\FBwidth]| +%| {\caption{Two ...}\label{...}}| +%| {\begin{subfloatrow}| +%| \subfloat[First subtable]| +%\verb+ {\begin{tabular}{|l|c|c|}+ +%| ...\end{tabular}}| +%| \subfloat[Second subtable...]| +%\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 |subfloatrow| is analogous to the |floatrow| environment. +% The usage is similar to |floatrow|: +% \begin{Quote} +% |\begin{subfloatrow}[|\meta{number of beside floats}|]|\nopagebreak +% |\subfloat...|\nopagebreak +% |\subfloat...|\nopagebreak +% |...|\nopagebreak +% |\end{subfloatrow}| +% \end{Quote} +% i.e. by default two subfloats are allowed. For other number of subfloats +% you ought to put number in optional argument. +% This environment +% puts a~horizontal separator between subfloats, defined by |subfloatrowsep=| +% key instead of |floatrowsep=|. This key uses the same options +% as |floatrowsep=| and |capbesidesep=| keys (options of +% these keys defined by |\DeclareFloatSeparators| command, +% page~\pageref{setup:DeclareFloatSeparators}). +% +% Next follows an example with beside caption (see +% figure~\ref{fig:subfig:catsI}).%^^A +%\begingroup +%\begin{Quote} +%\begin{preamble} +%|\|\FRkey[sec]{floatsetup}|[figure]{|\FRkey{style}|=Shadowbox,|%^^A +% \FRkey{capbesidesep}|=columnsep,| +%| |\FRkey{capbesideframe}|=yes,|%^^A +% \FRkey{capbesideposition}|={left,top}}| +%|\floatsetup[subfigure]{|\FRkey{style}|=plain}| +%|\captionsetup[subfigure]{labelformat=brace,justification=centerlast,| +%| strut=no}|\nopagebreak +%\end{preamble} +%|\|\FRkey[FB]{fcapside}|[\|\FRkey[FB]{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=brace,justification=centerlast,strut=no} +% \begin{figure}[h] +% \fcapside[\FBwidth] +% {\begin{subfloatrow} +% \subfloat[One cat]{% +% \input{Cat.picture}\Flabel{subfig:w}} +% \subfloat[Another cat]{\input{TheCat.picture}\Flabel{subfig:b}} +% \end{subfloatrow}} +% {\caption[Subfloat row]{Beside +% caption vertically top aligned; fancy +% |Shadowbox| layout. There are two subfigures: +% \Fref{subfig:w} and \Fref{subfig:b}}\label{fig:subfig:catsI}} +% \end{figure} +%\endgroup +% +% \DescribeMacro{\sidesubfloat} +% Another addition in \package{floatrow} for subfloats is the command,%^^A +% 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 are analogous to the ones for |capbesideposition=| key: +% \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. +% \FRmpar{Subcaption beside subfloat}{FAD:sublabelbeside} +% \begingroup +% \begin{Quote}% +%\begin{preamble} +%|...| +%|\floatsetup[figure]{|\FRkey{style}|=plain,|%^^A +% \FRkey{subcapbesideposition}|=top}| +%\end{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}\Flabel{subfig:wI}} +% +% \sidesubfloat[]{\input{TheCat.picture}\Flabel{subfig:bI}}% +% \end{subfloatrow}} +% {\caption[Subfloat row (labels beside)]{Beside caption vertically centered. +% There are two subfigures: +% \Fref{subfig:wI} and \Fref{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 |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 is 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} +% +% Another example: +% \begingroup +% \begin{Quote}% +%\begin{preamble} +%|...| +%|\floatsetup[figure]{|\FRkey{style}|=plain}| +%\end{preamble} +% |\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[]{\Flabel{subfig:wII}}}}| +%|...| +% | \put(50,0){\framebox(40,30)[bl]{}}| +% | \put(52,2){\makebox(0,0)[bl]{\subfloatlabel[3][subfig:bII]{}}}%|^^A +%|...| +% | \end{picture}}| +% |{\caption{...}\label{...}}|%^^A +% |\end{figure}| +% \end{Quote} +% \floatsetup[figure]{style=plain} +% \captionsetup[subfigure]{listofformat=comma-separated,labelformat=brace,justification=centerlast,strut=no} +%\makeatletter +% \begin{figure}[ht] +% \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[]{\Flabel{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; these two labels of subfloats use changed settings +% of the \texttt{listofformat=} key]{%^^A +% Here are two simple subfigures. +% Left one shows cat's eyes (\Fref{subfig:wII}), labeled with +% \cs{subfloat}\texttt{[]\char`\{\char`\}} macro; +% with \cs{subfloatlabel}\texttt{[3][subfig:bII]} sentence were labeled the cat's ears +% (\Fref{subfig:bII})}%^^A +% \label{fig:subfig:catsIII}} +% \end{figure} +% \endgroup +% In the examples of current section the \verb|\Flabel| and \verb|\Fref| +% commands for cross referencing of the subfloats were used +% (you may see these commands in the code examples). As described in section~\ref{ssec:Flabel} +% these commands allow to create combined references which consist of the parent and current +% labels separated by predefined punctuation sign. +% +%\begin{small} +% +% \medskip +% \emph{Some explanation}. +% Previous versions of documentation used the |listofformat=| key; the necessary option +% was defined by |\DeclareCaptionListOfFormat| command: +% \begin{Quote}% +% |\DeclareCaptionListOfFormat{comma-separated}{#1,\,#2}| +% \end{Quote}% +% This format is used, in particular, by |\subref| command. But usage of this key changes output +% of subfloat numbers in the lists (list of tables and list of figures etc.), +% which could be undesirable (see numbers of subfigures \subref{subfig:wII} +% and \subref{subfig:bII} in the List of Figures). +% \medskip +% +%\end{small} +% +% See examples with |subfloatrow| environments 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. +% +%\endgroup +% +% \clearpage +% \subsection{The \package{longtable} Package}\label{ssec:longtable} +% Tested with version v4.11, dated 2004/02/01.%^^A +% \footnote{The English documentation is +% \href{ftp://ctan.tug.org/tex-archive/macros/latex/required/tools/longtable.dvi}%^^A +% {\meta{texmf folder}\texttt{/doc/latex/tools/longtable.dvi}}.} +% +% Please note that almost all settings in the |\floatsetup|'s +% argument do not work inside |longtable| environments, except +% settings for caption width (see below) and plain horizontal alignment in the |margins=| key. +% So, during building of |\floatsetup| settings for the tables, be aware +% that you may use only something like |style=plaintop| or |style=Plaintop|, +% to place caption above, also you may use options of the +% |margins=| key, which use only spacing commands, like defined ones +% in this package (page~\pageref{setup:margins}), and do not forget settings for |\LTleft| and |\LTright| +% margins, which set the alignment of |longtable| environment. +% +% Please see the \package{caption} documentation about how to build necessary caption layout +% when |longtable| environment is used. +% +% \subsubsection{Additions in The \package{floatrow} Package}\label{ssec:LTcapwidth} +% A patch was added to the \package{longtable} +% package\footnote{Thanks to A.~Sommerfeldt for help to make this +% code compact.}: this patch adds the same font settings +% as for |table| environments, and adds code which helps +% to get the width of |longtable| caption equal to the +% width of table. For settings of the caption width the special key was created. +% +% \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|. The key value will be sent to +% the |\LTcapwidth| command. If you'll write +% |LTcapwidth=table| or |LTcapwidth=contents|, you will get +% the caption width equal to the width of table. In this case settings for +% width of caption use information from the |aux|-file, so you'll get +% correct caption width at the time when the width of full table \emph{become +% stable}. +% +% The |longtable| environment uses layout settings from +% |\floatsetup[table]| and |\floatsetup[longtable]| contents. +% The |\floatsetup[longtable]| will be ``strongest'' in this pair.\medskip +% +% \emph{The addition with version 0.1k}. +% 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. Also it is necessary to say +% that command names from \package{fr-longtable} package ``intrude'' in the +% \package{longtable}'s naming space.} package \package{fr-longtable} +% with additions is added, which allows creation of special head for the last +% page of longtable environment and special foot for pages before last +% (the table~\ref{tab:floatlayouts} uses these commands for head and foot settings). +% +%^^A% \DescribeMacro{\LTlastpage} +% \DescribeMacro{\endlasthead} +% \DescribeMacro{\endprelastfoot} +% 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 get defined if they are still unknown, i.e.~the main, +% \package{longtable}, package didn't defined them. +% The syntax is also analogous as for commands |\endhead|, |\endfirsthead| etc. +% (See examples and additional explanation in the sample file +% \texttt{sample-longtable.tex} file.)\medskip +% +%^^A% \DescribeMacro{\floatfoot} +% \emph{Note}. Please remember that the footnote stuff inside |longtable| works like in main +% text and puts the text of footnotes +% at the bottom of page\footnote{See also |longtable| documentation.}. +% +% The \package{floatrow} package's command for legends or explications, |\floatfoot|, +% in current version has emulation mode inside |longtable|, and needs stuff, +% similar to |\noalign{\floatfoot{...}}|. Since the default font definition for explications (|\floatfoot|) +% is also set to |\footnotesize|, like for footnotes, you may put footnotes-emulations at the end of table, +% inside this explication block, using |\mpfootnotemark| commands inside table contents and at the +% beginning of each text of footnote. +% +% The fragments from the longtable \ref{tab:floatlayouts} on the page +% \pageref{tab:floatlayouts}, +% which describes float styles, will be the resum\'e for +% this section. +%\begin{Quote} +%\begin{preamble}% +%|\DeclareCaptionLabelFormat{continued}{\rightline| +%| {\bothIfFirst{#1}{ }#2 (\emph{Continued})}}| +%|\DeclareCaptionLabelFormat{finished}{\rightline| +%| {\bothIfFirst{#1}{ }#2 (\emph{Finished})}}| +%\end{preamble}% +% |\def\LongtableHead{| +% | \hfil\thead{Style} &| +% | \hfil\thead{\cmd{\floatsetup} keys} &| +% | \hfil\thead{Description}| +% | }| +% |\begin{longtable}{|\meta{tabular preamble}|}| +% |\caption{Float layout styles}\label{tab:floatlayouts}\\| +% |\hline| +% |\LongtableHead| +% |\\ \hline| +% |\endfirsthead|\% \emph{end of standard box of \package{longtable} package} +% |\captionsetup{labelformat=continued}|\% %^^A +% \smash{\em\tabular[t]l caption settings for continued page\endtabular} +% |\caption[]{}\\| +% |\hline| +% |\LongtableHead| +% |\\ \hline| +% |\endhead|\% \emph{end of standard box of \package{longtable} package} +% |\captionsetup{labelformat=finished}|\% %^^A +% \smash{\em\tabular[t]l caption settings for finished page\endtabular} +% |\caption[]{}\\| +% |\hline| +% |\LongtableHead| +% |\\ \hline| +% |\endlasthead|\% \emph{end of box offered by \package{fr-longtable} package} +% |\hline| +% |\multicolumn{3}{r@{}}{\topstrut\emph{Continued on next page}}| +% |\endfoot|\% \emph{end of standard box of \package{longtable} package} +% |\hline| +% |\multicolumn{3}{r@{}}{\topstrut\emph{Finished on next page}}| +% |\endprelastfoot|\% \emph{end of box offered by \package{fr-longtable} package} +% |\endlastfoot|\% \emph{end of standard box of \package{longtable} package} +% \meta{Contents of long table} +% \meta{Contents of long table}|\mpfootnotemark[1]| +% \meta{Contents of long table} +% |\\ \hline| +% |\noalign{\floatfoot*{|\meta{Text of foot material}|.\vspace{-3pt}\par|\nopagebreak +% |\rule{1in}{.4pt}\vspace{2pt}|\% \emph{Emulation of footnote rule}\nopagebreak +% |\parindent15pt|\nopagebreak +% \% \emph{emulations of footnote texts}\nopagebreak +% |\mpfootnotemark[1]|\meta{Text of footnote}\nopagebreak +% |...|\nopagebreak +% |}}|\nopagebreak +% |\end{longtable}| +%\end{Quote}% +% \emph{Note}. The usage of settings |\captionsetup{labelformat=continued}| +% inside |longtable| environment was documented in the \package{caption} package 3.1. +% +% \clearpage +% \subsection{The \package{wrapfig} Package}\label{ssec:wrapfig} +% \captionsetup[wrapfigure]{name=Fig.,labelformat=thinspace} +% \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)%^^A +% \footnote{The English documentation is +% \href{ftp://ctan.tug.org/tex-archive/macros/latex/contrib/wrapfig/wrapfig.pdf}%^^A +% {\meta{texmf folder}\texttt{/doc/latex/wrapfig/wrapfig.pdf}}.}. +% +% 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} +% |...|\nopagebreak +% |\end{wrapfigure}| +% \end{Quote} +% +% {\slshape\meta{Placement} is one of |r|, |l|, |i|, +% |o|, |R|, |L|, |I|, |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\sloppy +% \def\FBaskip{-12pt} +% \floatsetup[figure]{style=BOXED,frameset={\fboxsep12pt}} +% \par\begin{wrapfigure}{o}{0mm} +% \ffigbox[\FBwidth] +% {\caption{Wrapped figure in \cs{ffigbox} (\package{wrapfig} package)}% +% \label{fig:wrapfig:WcatII}} +% {{\setlength\unitlength{36mm/48}%^^A +% \input{Cat.picture}}} +% \end{wrapfigure} +% +% \emph{Notes.}\startNotes +% \Note For figure, contents in e.g. in |wrapfigure| environment you set width +% in mandatory argument. If you'll write \texttt{0mm} as \marg{width +% of figure} argument, the \hbox{\package{wrapfig}} package will calculate a~natural width +% of float contents. If you use the |\floatbox| command, put |\FBwidth| option to use natural object width. +% +% \Note Sometimes above (below) float box in |wrap...| environment +% appears unwanted space. To correct vertical position, use |\FBaskip| +% (|\FBbskip|) commands (see {\sectionname}~\ref{sec:FBabskips}) and optional argument +% \meta{number} of |wrap...| environments. +% +% \Note Please note that the label of wrapped floats changed to `Fig.~\meta{number}'. +% This happened because of the following settings: +% \begin{Quote} +% \begin{preamble}% +% |\DeclareCaptionLabelFormat{thinspace}{\bothIfFirst{#1}{\,}#2}| +% \end{preamble}% +% |\captionsetup[wrapfigure]{name=Fig.,labelformat=thinspace}| +% \end{Quote} +% In preamble was added special format |thinspace| with smallest space between +% `Fig.' and number which we use in the |wrapfig| settings. +% See also \package{caption} documentation. +% +% \emph{Special settings}. +% +% You may create settings for |wrap...| environment, there are +% following priorities. +% (Please note that you can also create 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 are absent---uses settings of next item; +%^^A \end{itemize} +% +%^^A \begin{itemize} +% \item +% if exists |\floatsetup[wrapfloat]{...}| +% \package{floatrow} uses these settings---these settings are ``stronger'' +% than next ones; if they are absent---settings of current +% float\\[\medskipamount] +% |\floatsetup[|\meta{captype}|]{...}|\,;\\[\medskipamount] +% if they are absent---uses +% |\floatsetup{...}| settings, package settings inside |\usepackage| command or default settings of +% package (page~\pageref{sec:default}). +% \end{itemize} +% +% +% \emph{Founded limitations}.\startNotes\nopagebreak +% +% \Note The usage of plain floating environment in version 3.3 will +% not succeed with \package{floatrow}---use |\floatbox| +% stuff. The version 3.6 allows usage of plain |wrap...| +% environment with \FRkey{plain} (or \FRkey{ruled}) styles, but +% the framed styles, like |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. +% +% \Note The |wrap...| environments could fail inside list ones. +% You ought be careful with grouping around wrapping environment (float can sail away or disappear). +% Tests show that you may set |wrap...| environment at the very beginning of list, in the case of +% you created faked or empty paragraph just before list (i.e. between |wrap...| and list) +% with compensate negative spacing, like following: +% |\noindent|\allowbreak|\strut|\allowbreak|\par|\allowbreak +% |\nobreak|\allowbreak|\vskip-\baselineskip|. +% \endgroup +% +% \begingroup\sloppy +% \floatsetup[figure]{style=WSHADOWBOX,captionskip=8pt} +% \captionsetup[floatingfigure]{name=Fig.,labelformat=thinspace} +% \subsection{The \package{floatflt} package}\label{ssec:floatflt} +% \begin{floatingfigure}[v]{50mm}\def\FBaskip{-2.5pt} +% \ffigbox[50mm] +% {\setlength\unitlength{\hsize/72}%^^A% +% \input{BlackDog.picture}} +% {\caption{\hyphenpenalty-100\pretolerance-1% +% Wrapped figure inside floating\-figure environment +% (\package{floatflt})}\label{fig:floatflt:WcatI}} +% \end{floatingfigure}%\FBbuildtrue +% +% \noindent Tested with version v1.3 dated +% 1996/02/27\kern-1pt. +% +% \emph{Founded limitations}. \startNotes\Note There is not support for +% creation of new |floating...| environment. Since |floatflt| +% environments need usage of |\floatbox| in any case, you can use +% either |floatingfigure| or |floatingtable| and put +% necessary float type in |\floatbox| argument (or use necessary +% macro abbreviation, like |\ffigbox|). For these wrapped floats +% the |\usepackage| option can be used or |\floatsetup{...}| settings +% and main settings for float types like +% |\floatsetup[figure]{...}| settings. +% +% The next limitations could not tied with \package{floatrow} package. +% +% \Note If you put a~|floatingfigure| environment just after +% |\...section| command you need (if you do not indentation after +% heads) to put |\noindent| for the first paragraph. +% +% \Note The |floatflt| environments could fail with list +% environments. +% +% \Note The special caption settings were created for figure label. +% \begin{Quote} +% |\captionsetup[floatingfigure]{name=Fig.,labelformat=thinspace}| +% \end{Quote} +% +% %^^A\newpage +% +% \captionsetup[parpic]{name=Fig.,labelformat=thinspace} +% \floatsetup[figure]{style=Doublebox,captionskip=10pt}\abovecaptionskip10pt +% \subsection{The \package{picins} Package}\label{ssec:picins} +% \noindent Tested with version v\,3.0 dated 1999/10/12.\nopagebreak +% +% This package produces pictures inside paragraphs. This package +% supports usage of captions with command |\piccaption|. It also allows +% the \package{caption} package settings. +% +% \piccaption[Wrapped figure in \cmd{\floatbox} and \cmd{\parpic}]{Wrap\-ped +% figure (\cmd{\parpic})\label{fig:parpic:BcatI}}%^^A +% \parpic[l]{\hsize0pt +% \ffigbox[\FBwidth ]{}{%^^A +% {\setlength\unitlength{24mm/72}%^^A +% \input{TheDog.picture}} +% }%^^A +% } +% The \cmd{\parpic} macro usually allows usage of |\floatbox| macro +% inside of its mandatory argument. In this case the |\floatsetup{...}| +% settings and main settings of for float types like |\floatsetup[figure]{...}| +% settings are used (but, unfortunately, they are the only here). +% +% \emph{Founded limitations}.\startNotes\nopagebreak +% +% \Note In |\parpic| argument you ought to to define the width of contents. If you put |\hsize0pt| before +% the |\floatbox| command, you will get box width equals to +% |\parpic| contents. (Compare with usage of |0mm| value inside the \marg{width +% of figure} option in the |wrapfigure| environment.) +% +% \floatsetup[figure]{style=DOUBLEBOX} +% +% The next limitations could not tied with \package{floatrow} package. +% +% \parpic[r]{\hsize36mm\def\FBaskip{6pt} +% \ffigbox[\hsize] +% {\setlength\unitlength{16mm/72}%^^A +% \input{TheDog.picture}} +% {\caption{Wrapped figure (\cmd{\parpic})}\label{fig:parpic:BcatII}}} +% +% \Note 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. +% +% \Note It seems that the |\parpic| command cancels non-breaking mechanism +% between section command and text in the case of appearance +% at the very beginning of the first paragraph (this situation appeared +% during testing of current documentation). +% +% \Note You may try to use \cmd{\parpic} inside list environment, but sometimes usage of +% this command in this environment could create wrong layout. (Tests show that paragraph(s) +% where the \cmd{\parpic} is used must be placed in group---compare it with the +% \package{wrapfig} package, which does not like grouping.) +% +% \Note 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. Or you may create command: +%\begin{Quote}\openup-.5pt +%\begin{preamble} +%|\usepackage{ifthen}| +%|\newcommand\oparpic{\ifthenelse{\isodd{\value{page}}}%| +%| {\def\next{\parpic[r]}}{\def\next{\parpic[l]}}\next}| +%\end{preamble} +%\end{Quote} +% +% \Note The special caption settings were created for figure label +% \begin{Quote} +% |\captionsetup[parpic]{name=Fig.,labelformat=thinspace}| +% \end{Quote} +% If you use |\piccaption| command these settings are switched on. +% In the first picture in this section the |\piccaption| co-operates +% with the |\ffigbox| command: +% \begin{Quote} +% |\piccaption{...\label{...}}%|\nopagebreak +% |\parpic[l]{\hsize0pt\ffigbox[\FBwidth]{}{...}}|\pagebreak[3] +% \end{Quote} +% Second picture uses the |\caption| command inside |\ffigbox|, so +% the |\captionsetup|\allowbreak|[parpic]{...}| settings do not work: +% \begin{Quote}\openup-.5pt +% |\parpic[r]{\hsize36mm\def\FBaskip{6pt}| +% | \ffigbox[\hsize]{}{...\caption{...}\label{fig:parpic:BcatII}}| +% \end{Quote} +% \enlargethispage{\baselineskip} +% You may see that label of the second figure was printed as `Figure'~number. +% +% \endgroup +% +% \subsection{The \package{rotating} Package and \texttt{sideways\ldots} +% Environment}\label{ssec:rotating} +% Tested with version v2.13 dated Sep. 1992. +% +% There is example (figure~\ref{fig:rot:ii}) with rotated float, using +% |sidewaysfigure|. +%\begin{Quote} +%\begin{preamble} +% |\usepackage[figuresright]{rotating}| +%|\|\FRkey[sec]{floatsetup}|[rotfigure]{|%^^A +% \FRkey{style}|=WSHADOWBOX}| +%\end{preamble} +%|\begin{sidewaysfigure}\emptyfloatpage| +%|\|\FRkey[FB]{ffigbox}|[\|\FRkey[FB]{FBwidth}|]| +%| {...}| +%| {\caption{Figure ...}%| +%| \label{...}}| +%|\end{sidewaysfigure}%| +%\end{Quote} +% \floatsetup[rotfigure]{style=WSHADOWBOX} +% \begin{sidewaysfigure}\emptyfloatpage +% \ffigbox[\FBwidth] {\includegraphics[width=4in]{pslearn}} +% {\caption{Figure inside \texttt{sidewaysfigure} environment}% +% \label{fig:rot:ii}} +% \end{sidewaysfigure}% +% +% \emph{Special settings}.\nopagebreak +% +% You may create special settings for all rotated floats, which use +% |sideways...| environment (see page \pageref{stsetorder}). +% +% For one-column rotated float +% \RestoreSpaces +% \begin{itemize} +% \item % +% if exists |\floatsetup[rot|\meta{captype}|]{...}| +% package uses these settings---the ``strongest'' settings; if they are +% absent---uses settings from next item, the same for each item of the list; +% \item +% |\floatsetup[rotfloat]{...}|; +% \item +% |\floatsetup[|\meta{captype}|]{...}|; +% \item +% if all settings absent---the settings +% inside |\floatsetup{...}| and |\usepackage| commands, and, at last, package default settings are used. +% \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 are absent---uses settings of next item, the same for each item of the list; +% \item % +% |\floatsetup[widerotfloat]{...}|; +% \item % +% |\floatsetup[rot|\meta{captype}|]{...}|; +% \item % +% |\floatsetup[rotfloat]{...}|; +% \item % +% |\floatsetup|\marg{captype}|{...}|; +% \item % +% if all settings absent---the settings inside +% |\floatsetup{...}| and |\usepackage| commands, and, at last, the package default settings are used. +% \end{itemize} +% +% \subsubsection{Special Page Style for Float Page} +% In example with figure~\ref{fig:rot:ii} you may see the command |\emptyfloatpage|.%^^A +% \FRmpar{Empty page style for rotated floats}{FAD:emptyfloatpage}\label{setup:emptyfloatpage} +% It is offered by \package{floatpagestyle} package, (installed with +% \package{floatrow} package, can be used separately). The macro |\emptyfloatpage| is an abbreviation of +% |\floatpagestyle{empty}|. The last macro redefines the page style for +% the page where \emph{current} floating environment appears in the way, analogous to |\thispagestyle| +% command. +% +% \RestoreSpaces +% 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. +% +% \subsubsection{Rotated Floats on the Facing Pages} +% \startNotes\Note 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, using |\buildFBBOX| command +% (see page~\pageref{FB:buildFBBOX}). For this reason you +% may define\label{buildFBBOX:def} +% \begin{Quote} +% \begin{preamble} +% |\usepackage[figuresright]{rotating}| +% |\newlengthtocommand\setlength\rottextwidth{\textwidth}| +% \end{preamble} +% |\begin{sidewaysfigure}|\nopagebreak +% |\|\FRkey[FB]{buildFBBOX}|{\vbox to\rottextwidth\bgroup\vss}{\egroup}| +% |\|\FRkey[FB]{ffigbox}|{}{|\meta{contents of first figure}|}|\nopagebreak +% |\end{sidewaysfigure}| +% |\begin{sidewaysfigure}| +% |\buildFBBOX{\vbox to\rottextwidth\bgroup}{\vss\egroup}| +% |\ffigbox{}{|\meta{contents of second figure}|}|\nopagebreak +% |\end{sidewaysfigure}| +% \end{Quote} +% +% \Note In the example above (and also in the example with figure~\ref{fig:rot:ii}) +% the \package{rotating} package has +% |[figuresright]| option; in this case all |sideways...| floats on even and odd pages +% will be rotated by 90$^\circ$ counterclockwise. +% +% +% \subsubsection{Commands instead of lengths} +%\begingroup +% \sloppy +% The |\rottextwidth| command in the example above stores value of the |\textwidth| of the +% document; the |\columnwidth| and |\textwidth| inside +% \texttt{sideways...} environment are redefined and equal to +% |\textheight|. +% If\startNotes\def\theNote{\alph{Note}}\Note +% you are limited in creation of the new length or dimension command +% (for example you use the \package{pictex} +% package\footnote{The \texttt{e-TeX} engine could solve this problem.}), +% or \Note the width/height or the space values, defined with +% the |\newcommand| +% (like the |\headrulewidth| command from \package{fancyhdr} package) need complex calculation +% with usage of the \package{calc} package, or get the width of some text---the \package{floatrow} +% package provides commands +% \DescribeMacro{\newlengthtocommand}\label{setup:newlengthtocommand}%^^A +% \DescribeMacro{\renewlengthtocommand}\label{setup:renewlengthtocommand}%^^A +% \label{setup:newlengthtocommand}%^^A +% \label{setup:renewlengthtocommand}%^^A +%\begin{Quote}% +% \cmd{\newlengthtocommand} \quad or +% \cmd{\renewlengthtocommand} +%\end{Quote}% +% which are placed just before standard \LaTeX{} commands like \cmd{\setlength} or +% \cmd{\settowidth} and save the \emph{absolute} +% value from their arguments; here the usual code like +%\begin{Quote}% +%\begin{preamble} +%|\usepackage{calc}| +%\end{preamble} +%|\newlength\fulltextwidth| +%|\setlength\rottextwidth{\textwidth+\marginparsep+\marginparwidth}| +%\end{Quote}% +% changed to +%\begin{Quote}% +%\begin{preamble} +%|\usepackage{calc}| +%\end{preamble} +% |\newlengthtocommand\setlength| +% |\fulltextwidth{\textwidth+\marginparsep+\marginparwidth}|\quad. +%\end{Quote}% +% Please note than the usage of calculation inside |\setlength| command (and its analogs) +% can be used only with the \package{calc} package. +% +%\endgroup +% +% \subsection{The \package{lscape} Package and \texttt{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 |landscape| environment from +% \package{lscape} package on the page~\pageref{fig:rotrow:WcatI}, figures +% \ref{fig:rotrow:WcatI}--\ref{fig:rotrow:FcatI}): +% \RestoreSpaces +%\begin{Quote} +%\begin{preamble} +%|\|\FRkey{DeclareFloatVCode}|{lowthickrule}{\kern2pt\rule{\hsize}{.8pt}}| +%|\|\FRkey[sec]{floatsetup}|[figure]{|\FRkey{style}|=ruled,|\FRkey{rowprecode}|=thickrule,| +%| |\FRkey{rowpostcode}|=lowthickrule,|\FRkey{capposition}|=TOP}| +%\end{preamble} +%|\begin{landscape}| +%|\begin{figure}\|\FRkey{emptyfloatpage} +%|...| +%\end{Quote} +% |\floatsetup| code sets |ruled| float style, +% then settings for above and below material are redefined: +% |rowprecode=| and |rowpostcode=| keys define thick +% rules but for floatrow as a~whole (the `individual' |\hrule|'s +% above/below float boxes are absent). +%\fi\fi +% +% The |landscape| environment creates a new page. It would be +% useful~\nobreak\qquad1)\nobreak\enskip for rotation of multipage rotated float (in this case +% it is better to put this float in a separate file, and to start from necessary page, +% in this case you need the +% \package{afterpage} package and its |\afterpage| command)~\nobreak\qquad2)\nobreak\enskip and also +% to start new section of document, e.g., appendix. (In current +% document the |landscape| environment 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 own strong layout mechanism for creation of floating +% algorithms itself. The usage of |\lstset| command (see package documentation) 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 |lstlisting| inside +% |\floatbox| contents. The plain float environment is still allowed. +% Also you are still free with settings for float type, used |lstlisting| inside: you may still use the +% |BOXED|, |Boxed| and other unusual styles: the float width will be recalculated for mentioned two styles +% and similar ones and then will be used necessary setting. +% If you need to change box width---use |\thisfloatsetup| settings. +% +% \subsection{The \package{hyperref} and \package{hypcap} Packages} +% There were tested versions v6.77i (\package{hyperref}) +% and v1.7 (\package{hypcap}). +% +% The \package{floatrow} package 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 \package{setspace} Package} +% There was bug during usage of \package{setspace} package---this package redefines +% \LaTeX's command |\@xfloat|, adding definition of font size to |\normalsize| +% which appears after \package{floatrow} settings. +% The version 0.2d of \package{floatrow} tried to fix it but this was incorrect +% and destroyed interaction between \package{hyperref} and \package{caption} packages. +% In the version 0.3b the code was changed to restore this interaction\footnote +% {By suggestions of A.\,Sommerfeldt.} with hope that it will work. +% The default baseline stretch is equal to~1. The version 3.1 of \package{caption} +% package offers special font settings (see \package{caption} documentation) +% for captions. You may try the same for the float font: +%\begin{Quote}% +%|\floatsetup{font=onehalfspacing}| +%\end{Quote}% +% or +%\begin{Quote}% +%|\floatsetup{font={stretch=|\meta{amount}|}}|\quad. +%\end{Quote}% +% +% \section{The Incompatibilities} +% At first the incompatibilities or rules of co-operation with other +% packages could follow the \package{caption}~3.x package. +% \textit{Please look first in the \package{caption} +% package documentation to know the newest rules}. +% +% The known incompatibilities of \package{floatrow} package itself: +% \startNotes\nobreak\quad \Note \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 |SCfigure| and |SCtable| environments;~\nobreak\quad +% \Note \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 |minipage| +% %^^A could get wrong layout (vertical alignment). But, as I +% %^^A found, you may use a few |minipage|s in object without harm. +% \item % +% You cannot use |\floatbox| stuff for floats with |verbatim| +% environment and/or \verb|\verb|. But you still can use plain float environments. +% If you need to change width of float box, you may change it with +% |\thisfloatsetup| settings. The usage of |verbatim| and~|\verb| +% do not create limitations for layout: you may still use the |BOXED|, |Boxed| +% and other unusual styles: the float width will be recalculated for mentioned two styles +% and similar ones and then will be used necessary setting. +% \item % +% The |tabbing| environment in current version creates incorrect layout for float box +% which must occupy whole text width: it recalculates the width of object box to the natural width +% of its contents. The problem will be solved with the |minipage| environment +% and width option |\hsize|: you'll get necessary layout with full width and +% for the styles like |BOXED| and~|Boxed| the width of contents will be recalculated. +% \item % +% Be careful with minipages inside |floatrow| environment---there could be wrong alignment. +% Use |heightadjust=| key for this case. (Fortunately I~cannot imagine +% good readability of two beside |tabbing|s.) +% \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} packages do not support an~optional argument \emph{after} +% caption ``title'' (the \package{float} package's stuff). You may use |\floatfoot| +% macro after main caption argument. +% \item % +% Do not use the |\FBwidth| option for complex float contents (which you +% could not put inside one |\hbox|). But you are allowed to use |\vspace| +% macro at the very end/very beginning of object contents for fine +% vertical tuning for them. +% \item % +% The |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 a~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 floating environments 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 |shadowbox| and |wshadowbox| +% %^^A could get wrong layout with beside captions. +% \item If you use |tabularx| or |tabular*| environments +% inside |\floatbox| stuff (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 |tabularx| or |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 |tabularx| or |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, finding and showing +% bugs, and help in \emph{all} my questions and problems in \package{floatrow} package. +% All good text pieces in this documentation are filled with Axel's advices and great help. +% +% \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} +% \renewlengthtocommand\setlength\Mylen{\textwidth} +% +% \begin{landscape} +% +% \begin{figure}\emptyfloatpage\label{example:ruledcapposTOP} +% +% \begin{floatrow}[4]%^^A +% \ffigbox[][][t] +% {{\input{TheCat.picture}}%^^A +% \footnotetext[1]{This +% picture was created with \cmd{\qbezier} +% macros}}% +% {\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}\footnote[2]% +% {Look at funny footnotemark!}}% +% +% \ffigbox[\FBwidth] +% {{\unitlength2.5\unitlength +% \input{Cat.picture}}} +% {\caption{Figure in the row~III, center of object box}% +% \label{fig:rotrow:mouseI}\floatfoot{The image of cat}}% +% +% \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} +% \FRorisubsection{Miscellaneous} +% \FRorisubsubsection{Usage of Captionsetup and Thisfloatsetup +% Inside Floatbox Stuff}\label{ssec:app:besidestart} +% Example of figures in row (figures~\ref{FB:FR:lfig} and +% \ref{FB:FR:fig}). There predefined float commands +% |\fcapsideleft| and |\fcapsideright| with were used additional |\captionsetup| and +% |\thisfloatsetup| settings: +%\begin{Quote}\openup-.5pt +%\begin{preamble} +%|\|\FRkey[FB]{newfloatcommand}|{fcapsideleft}{figure}[{\|\FRkey[FB]{capbeside} +%| \captionsetup[capbesidefigure]{labelsep=newline,| +%| justification=raggedleft}%| +%| \|\FRkey{thisfloatsetup}|{|\FRkey{capbesideposition}|=left}}][\|\FRkey[FB]{FBwidth}|]| +%|\newfloatcommand{fcapsideright}{figure}[{\capbeside| +%| \captionsetup[capbesidefigure]{labelsep=newline,| +%| justification=raggedright}%| +%| \thisfloatsetup{capbesideposition=right}}][\FBwidth]| +%|\|\FRkey[sec]{floatsetup}|[figure]| +%| {|\FRkey{style}|=Boxed,|%^^A +% \FRkey{objectset}|=centering,|%^^A +% \FRkey{margins}|=centering,| +%| |\FRkey{capposition}|=beside,|%^^A +% \FRkey{capbesidesep}|=cicero,|%^^A +% \FRkey{capbesideframe}|=yes}| +%\end{preamble} +% |\begin{figure}| +% |\begin{|\FRkey[sec]{floatrow}|}| +% | \fcapsideleft{...}{...}| +% | \fcapsideright[\hsize]{...}{...}| +% |\end{floatrow}| +% |\end{figure}| +%\end{Quote} +% +% \clearfloatsetup{figure} +% \floatsetup[figure] +% {style=Boxed,capposition=beside,objectset=centering, +% capbesidesep=cicero,margins=centering, +% capbesideframe=yes} +% +% \begin{figure}[H] +% \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{FB:FR:lfig}}% +% \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{FB:FR:fig}}% +% \end{floatrow}% +% \end{figure}% +% +% Since the key \FRkey{heightadjust}|=object| is used in +% the |Boxed| float style, both objects have the same +% height.\RestoreSpaces +% +% \subsubsection{Predefined Beside Caption Width} +% This example includes the |\useFCwidth|\label{setup:useFCwidth} command which switches on usage +% of previously defined caption width with |capbesidewidth=| key +% (in command |\thisfloatsetup| before |\floatbox| macro) or, if you +% didn't set caption width (like in current example), macro calculates natural +% width of caption contents (see figure~\ref{fig:Idog:w}). In this case +% the object---caption box is aligned +% using alignment settings from |margins| key (its options are defined +% by |\setfloatmargins| or |\floatcapbesidemargins| macro). In this +% documentation they are centered (see page~\pageref{setup:DeclareMarginSet}). +%\begin{Quote} +%\begin{preamble} +%|\floatsetup[figure]{|\FRkey{style}|=plain}| +%\end{preamble} +%|\begin{figure}| +%|\floatbox[\capbeside\useFCwidth]{figure}[\|\FRkey[FB]{FBwidth}|]| +%| ...| +%|\end{figure}| +%\end{Quote} +% \clearfloatsetup{figure} +% \floatsetup[figure]{style=plain} +% +% \begin{figure}[H] +% \floatbox[\capbeside\useFCwidth]{figure}[\FBwidth] +% {\caption[One-line beside +% caption, width equals to caption's text]{}\label{fig:Idog:w}} +% {{\setlength\unitlength{{3.6cm}/60}%^^A +% \input{BlackDog.picture}}} +% \end{figure}% +% +% Please note that 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 +% floating environment.\RestoreSpaces +% +% \subsubsection{Predefined Beside Caption Width with +% The Rest Space for Object}\label{FAD:RestSpaceforObject} +% The figure \ref{fig:capbeside:trick} uses the following float style:%^^A +%\begin{Quote} +%\begin{preamble} +%|\|\FRkey{renewlengthtocommand}|\settowidth\Mylen{\captionfont\captionlabelfont| +%| \figurename\ \thefigure}| +%\end{preamble} +%|\floatsetup[figure]| +%| {|\FRkey{style}|=Boxed,|\FRkey{capposition}|=beside,|\FRkey{objectset}|=centering,| +%| |\FRkey{capbesidewidth}|=\Mylen,|%^^A +% \FRkey{capbesideposition}|=left,|\FRkey{capbesidesep}|=cicero,| +%| |\FRkey{margins}|=centering,|\FRkey{capbesideframe}|=yes,| +%| |\FRkey{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, +% 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{Width Definition for Beside +% Caption---Object Box in Float Row} +% The float row with predefined width boxes ``beside object---caption'' +% (figures~\ref{floatrow:pre:figI} and +% \ref{floatrow:pre:figII}): just define before \verb|\fcapside| +% command something like: +%\begin{Quote} +%\begin{preamble} +%|\floatsetup[figure]| +%| {|\FRkey{style}|=plain,|\FRkey{objectset}|=centering,|\FRkey{margins}|=centering,| +%| |\FRkey{capbesideposition}|=left,|\FRkey{capbesidesep}|=enskip,| +%| |\FRkey{floatwidth}|=sidefil}| +%\end{preamble} +% |\begin{figure}\|\FRkey{useFCwidth}\nopagebreak +% | \begin{floatrow}| +% | \setlength\hsize{1.2\hsize}%| +% | \|\FRkey[FB]{fcapside}|...| +% | \setlength\hsize\|\FRkey[FB]{Xhsize} +% | \fcapside...| +% | \end{floatrow}|\nopagebreak +% |\end{figure}| +%\end{Quote} +% (please remember that option of |\fcapside| command defines the width of object contents but +% not the full box object---caption). +% +%^^A% Since the \verb|\fcapside| commands were used at the beginning of the +%^^A% |floatrow| environment the \verb|\FCwidth| command was defined +%^^A% as \verb|\relax|---in this case the width of caption equals to the +%^^A% 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.16\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 +% +% \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 has the same value, +% you may use each of these three commands. Unfortunately you must set +% the height of such beside floats by hand (the \FRkey{heightadjust}|=| key works here incorrectly). +% The lines which create the described float row: +% \RestoreSpaces +%\begin{Quote} +%\begin{preamble} +%|\floatsetup[figure]|\nopagebreak +%| {|\FRkey{style}|=Boxed,|\FRkey{frameset}|={\fboxsep4pt},|\FRkey{captionskip}|=5pt,| +%| |\FRkey{capposition}|=bottom,|\FRkey{objectset}|=centering,|\FRkey{capbesidewidth}|=sidefil,| +%| |\FRkey{capbesideposition}|=inside,|\FRkey{capbesidesep}|=enskip,|\FRkey{margins}|=centering,| +%| |\FRkey{capbesideframe}|=yes}| +%\end{preamble} +%|\begin{figure}\|\FRkey[FB]{CenterFloatBoxes} +%|\begin{floatrow}| +%|\hsize1.098\hsize| +%| \fcapside[\FBwidth][3.6cm]| +%| ...| +%| | +%| \ffigbox[\|\FRkey[FB]{Xhsize}|][3.6cm]| +%| ...| +%|\end{floatrow}%| +%|\end{figure}| +%\end{Quote} +% +% \clearfloatsetup{figure} +% \floatsetup[figure] +% {style=Boxed,frameset={\fboxsep6pt},captionskip=5pt,capposition=bottom, +% objectset=centering,capbesidewidth=sidefil,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 code for ``mirror'' layout (but not identical) looks like: +% \allowprelistbreaks[-4]\RestoreSpaces +%\begin{Quote} +%|\begin{figure}\CenterFloatBoxes|\nopagebreak +%|\begin{floatrow}|\nopagebreak +%| \ffigbox[1.28\|\FRkey[FB]{FBwidth}|][3.6cm]| +%| ...| +%| | +%| \hsize\Xhsize| +%| \fcapside[\FBwidth][3.6cm]| +%| ...| +%|\end{floatrow}%|\nopagebreak +%|\end{figure}| +%\end{Quote} +% +% \begin{figure}[H]\CenterFloatBoxes +% \begin{floatrow} +% \ffigbox[1.28\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} +% +% \subsubsection{Photo-Album-Like Layouts} +% Another example of miscellaneous float row +% (figures~\mbox{\ref{flrow:three:figIII}--\ref{floatrow:threemirr:figII}}, +% and, ``mirror layout''---^^A +% \mbox{\ref{floatrow:threemirr:figI}--\ref{floatrow:threemirr:figIII}}) were +% created by following lines: +%\begin{Quote} +%|\begin{figure}\|\FRkey[FB]{BottomFloatBoxes} +%|\begin{floatrow}| +%|\hsize1.2\hsize \|\FRkey[FB]{ffigbox}|[][6.7cm]| +%| ...| +%| | +%|\vbox to6.7cm| +%| {\|\FRkey[sec]{floatsetup}|[figure]{|\FRkey{floatrowsep}|=none}\|\FRkey{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: +% \RestoreSpaces +%\begin{Quote} +%|\begin{figure}[t]\|\FRkey[FB]{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 the +% trick with \meta{height} definition was used---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 +% (here the \package{calc} package possibilities were used). 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?).\RestoreSpaces +% +% \subsubsection{Photo-Album-Like Layouts: Common Height for Beside Photos} +% \captionsetup[subfigure]{labelformat=brace,font=footnotesize} +% This section shows example which allows to set common height for rectangular graphics, +% i.e. photos and fill full width of this row. To emulate the rectangular photos here, +% each graphic was loaded inside |\fbox| with zeroed |\fboxsep|. (See also file \texttt{frsample06.tex}.) +% +% The code of example uses the |\includegraphics| command (\package{graphicx} +% package). +% You load the |\CommonHeightRow| command: +%\begin{Quote}% +%|\CommonHeightRow|\oarg{supposed height}\marg{floatrow environment} +%\end{Quote}% +% with supposed value of height in the optional argument, +% which could be near the necessary common height. +% The second argument---the contents of the |floatrow| environment. +% \emph{All} float boxes in this row must use the |[\FBwidth]| option. +%\begin{Quote}% +%\begin{preamble}% +%|\usepackage{graphicx}| +%|\floatsetup[figure]{style=plain}\floatsetup[widefloat]{margins=hangleft}| +%\end{preamble}% +% |\begin{figure*}\fboxsep-.4pt|\nopagebreak +% |\CommonHeightRow{\begin{floatrow}[4]|\nopagebreak +% |\ffigbox[\FBwidth]|\nopagebreak +% |{\includegraphics[height=\CommonHeight]{...}}{\caption{...}}| +% |\ffigbox[\FBwidth]|\nopagebreak +% |{\includegraphics[height=\CommonHeight]{...}}{\caption{...}}| +% |\ffigbox[\FBwidth]|\nopagebreak +% |{\includegraphics[height=\CommonHeight]{...}}{\caption{...}}| +% |\ffigbox[\FBwidth]|\nopagebreak +% |{\includegraphics[height=\CommonHeight]{...}}{\caption{...}}|\nopagebreak +% |\end{floatrow}}|\nopagebreak +% |\end{figure*}%| +%\end{Quote}% +% +% Here you may see the result. +%\begingroup +% \floatsetup[figure]{style=plain}\floatsetup[widefloat]{margins=hangleft} +% \begin{figure*}[H]\fboxsep-.4pt%^^A +% \CommonHeightRow{\begin{floatrow}[4]%^^A +% \ffigbox[\FBwidth]%^^A +% {\caption{Figure~I in the row with common heights}%^^A% +% \label{fig:CH:Dog}}%^^A +% {\resizebox!{\CommonHeight}{\fbox{\input{BlackDog.picture}}}}%^^A +%^^A% +% \ffigbox[\FBwidth]%^^A +% {\caption{Figure~II in the row with common heights}%^^A% +% \label{fig:CH:WcatI}}%^^A +% {\resizebox!{\CommonHeight}{\fbox{\input{TheCat.picture}}}}%^^A +%^^A% +% \ffigbox[\FBwidth]%^^A +% {\caption{Figure~III in the row with common heights}%^^A% +% \label{fig:CH:mouse}}%^^A +% {\resizebox!{\CommonHeight}{\fbox{\input{Mouse.picture}}}}%^^A +%^^A% +% \ffigbox[\FBwidth]%^^A +% {\caption{Figure~IV in the row with common heights}%^^A% +% \label{fig:CH:cheese}}%^^A +% {\resizebox!{\CommonHeight}{\fbox{\input{Cheese.picture}}}}%^^A +% \end{floatrow}}%^^A +% \end{figure*}% +%\endgroup +% +% The next example is a~variation of previous one. The command |\CommonHeightRow| here +% was used for the |subfloatrow| environment. +%\begin{Quote}% +%\begin{preamble}% +%|\usepackage{graphicx}| +%|\floatsetup[figure]{style=plain}\floatsetup[widefloat]{margins=hangleft}| +%\end{preamble}% +% |\begin{figure*}\fboxsep-.4pt|\nopagebreak +% |\ffigbox{}{\CommonHeightRow{\begin{subfloatrow}[4]|\nopagebreak +% |\ffigbox[\FBwidth]|\nopagebreak +% |{\includegraphics[height=\CommonHeight]{...}}{\caption{...}}| +% |\ffigbox[\FBwidth]|\nopagebreak +% |{\includegraphics[height=\CommonHeight]{...}}{\caption{...}}| +% |\ffigbox[\FBwidth]|\nopagebreak +% |{\includegraphics[height=\CommonHeight]{...}}{\caption{...}}| +% |\ffigbox[\FBwidth]|\nopagebreak +% |{\includegraphics[height=\CommonHeight]{...}}{\caption{...}}|\nopagebreak +% |\end{subfloatrow}}\caption{Figure with a row of parts with common height}}| +% |\end{figure*}%| +%\end{Quote}% +% +% Here you may see the result. +%\begingroup +% \floatsetup[figure]{style=plain}\floatsetup[widefloat]{margins=hangleft} +% \begin{figure*}[H]\fboxsep-.4pt%^^A +% \ffigbox{}{\CommonHeightRow{\begin{subfloatrow}[4]%^^A +% \ffigbox[\FBwidth]%^^A +% {\caption{Part~I in the row with common heights}%^^A% +% \label{fig:CHI:Dog}}%^^A +% {\resizebox!{\CommonHeight}{\fbox{\input{BlackDog.picture}}}}%^^A +%^^A% +% \ffigbox[\FBwidth]%^^A +% {\caption{Part~II in the row with common heights}%^^A% +% \label{fig:CHI:WcatI}}%^^A +% {\resizebox!{\CommonHeight}{\fbox{\input{TheCat.picture}}}}%^^A +%^^A% +% \ffigbox[\FBwidth]%^^A +% {\caption{Part~III in the row with common heights}%^^A% +% \label{fig:CHI:mouse}}%^^A +% {\resizebox!{\CommonHeight}{\fbox{\input{Mouse.picture}}}}%^^A +%^^A% +% \ffigbox[\FBwidth]%^^A +% {\caption{Part~IV in the row with common heights}%^^A% +% \label{fig:CHI:cheese}}%^^A +% {\resizebox!{\CommonHeight}{\fbox{\input{Cheese.picture}}}}%^^A% +% \end{subfloatrow}}\caption{Figure with a row of parts with common height}}%^^A +% \end{figure*}% +%\endgroup +% +% The last example load labels of parts of figures beside graphics. +%\begin{Quote}% +%\begin{preamble}% +%|\usepackage{graphicx}| +%|\floatsetup[figure]{style=plain}\floatsetup[widefloat]{margins=hangleft}| +%|\floatsetup[subfigure]{capbesideposition=left}| +%\end{preamble}% +% |\begin{figure*}\fboxsep-.4pt|\nopagebreak +% |\ffigbox{}{\CommonHeightRow{\begin{subfloatrow}[4]\useFCwidth|\nopagebreak +% |\fcapside[\FBwidth]|\nopagebreak +% |{\includegraphics[height=\CommonHeight]{...}}{\caption{}}| +% |\fcapside[\FBwidth]|\nopagebreak +% |{\includegraphics[height=\CommonHeight]{...}}{\caption{}}| +% |\fcapside[\FBwidth]|\nopagebreak +% |{\includegraphics[height=\CommonHeight]{...}}{\caption{}}| +% |\fcapside[\FBwidth]|\nopagebreak +% |{\includegraphics[height=\CommonHeight]{...}}{\caption{}}|\nopagebreak +% |\end{subfloatrow}}\caption{Figure with a row of parts with common height}}| +% |\end{figure*}%| +%\end{Quote}% +% +% Here you may see the result. +%\begingroup +% \floatsetup[figure]{style=plain}\floatsetup[widefloat]{margins=hangleft} +% \floatsetup[subfigure]{capbesideposition=left} +% \begin{figure*}[H]\fboxsep-.4pt%^^A +% \ffigbox{}{\CommonHeightRow{\begin{subfloatrow}[4]\useFCwidth +% \fcapside[\FBwidth]%^^A +% {\caption{}%^^A% +% \label{fig:CHII:Dog}}%^^A +% {\resizebox!{\CommonHeight}{\fbox{\input{BlackDog.picture}}}}%^^A +%^^A% +% \fcapside[\FBwidth]%^^A +% {\caption{}%^^A% +% \label{fig:CHII:WcatI}}%^^A +% {\resizebox!{\CommonHeight}{\fbox{\input{TheCat.picture}}}}%^^A +%^^A% +% \fcapside[\FBwidth]%^^A +% {\caption{}%^^A% +% \label{fig:CHII:mouse}}%^^A +% {\resizebox!{\CommonHeight}{\fbox{\input{Mouse.picture}}}}%^^A +%^^A% +% \fcapside[\FBwidth]%^^A +% {\caption{}%^^A% +% \label{fig:CHII:cheese}}%^^A +% {\resizebox!{\CommonHeight}{\fbox{\input{Cheese.picture}}}}%^^A% +% \end{subfloatrow}}\caption{Figure with a row of parts with common height (labels beside)}}%^^A +% \end{figure*}% +%\endgroup +% +% The examples with beside figures which also include labeled parts. +% +% The row with labels beside. +%\begin{Quote}% +% |\floatsetup[subfigure]{capbesideposition=left}| +% |\begin{figure*}[H]| +% |\CommonHeightRow*%| +% |{\begin{floatrow}| +% |\ffigbox[\FBwidth]{}%| +% |{\begin{subfloatrow}\useFCwidth| +% |\fcapside[\FBwidth]{}{\caption{}\label{...}...}| +% |\fcapside[\FBwidth]{}{\caption{}\label{...}...}| +% |\end{subfloatrow}\caption{Common caption~I}}| +% |\ffigbox[\FBwidth]{}%| +% |{\begin{subfloatrow}\useFCwidth| +% |\fcapside[\FBwidth]{}{\caption{}\label{...}...}| +% |\fcapside[\FBwidth]{}{\caption{}\label{...}...}| +% |\end{subfloatrow}\caption{Common caption~II...}}| +% |\end{floatrow}}%| +% |\end{figure*}|% +%\end{Quote}% +%^^A% Here you may see the result. +% Íèæå ïîêàçàí ðåçóëüòàò. +%\begingroup\makeatletter +% \floatsetup[figure]{style=plain}\floatsetup[widefloat]{margins=hangleft} +% \floatsetup[subfigure]{capbesideposition=left} +% \begin{figure*}[H]\fboxsep-.4pt +% \CommonHeightRow*%^^A\def\CommonHeight{2.5cm} +% {\begin{floatrow}%^^A% +% \ffigbox[\FBwidth]{}%^^A% +% {\begin{subfloatrow}\useFCwidth +% \fcapside[\FBwidth]{}{\caption{}%^^A% +% \label{fig:CHs:Dog}\resizebox!{\CommonHeight}{\fbox{\input{BlackDog.picture}}}}%^^A +%^^A% +% \fcapside[\FBwidth]{}{\caption{}%^^A% +% \label{fig:CHs:WcatI}\resizebox!{\CommonHeight}{\fbox{\input{TheCat.picture}}}}%^^A +% \end{subfloatrow}\caption{Common caption~I in a~multilevel row with common height of graphics}}%^^A +%^^A% +% \ffigbox[\FBwidth]{}%^^A% +% {\begin{subfloatrow}\useFCwidth +% \fcapside[\FBwidth]{}{\caption{}%^^A% +% \label{fig:CHs:mouse}\resizebox!{\CommonHeight}{\fbox{\input{Mouse.picture}}}}%^^A +%^^A% +% \fcapside[\FBwidth]{}{\caption{}%^^A% +% \label{fig:CHs:cheese}\resizebox!{\CommonHeight}{\fbox{\input{Cheese.picture}}}}%^^A +% \end{subfloatrow}\caption{Common caption~II in a~multilevel row with common height of graphics}}%^^A +% \end{floatrow}}%^^A% +% \end{figure*}% +%\endgroup +% +% The row with labels below. +%\begin{Quote}% +% |\floatsetup[subfigure]{capbesideposition=left}| +% |\begin{figure*}[H]| +% |\CommonHeightRow*%| +% |{\begin{floatrow}| +% |\ffigbox[\FBwidth]{}%| +% |{\begin{subfloatrow}| +% |\ffigbox[\FBwidth]{}{\caption{}\label{...}...}| +% |\ffigbox[\FBwidth]{}{\caption{}\label{...}...}| +% |\end{subfloatrow}\caption{Common caption~I}}| +% |\ffigbox[\FBwidth]{}%| +% |{\begin{subfloatrow}| +% |\ffigbox[\FBwidth]{}{\caption{}\label{...}...}| +% |\ffigbox[\FBwidth]{}{\caption{}\label{...}...}| +% |\end{subfloatrow}\caption{Common caption~II...}}| +% |\end{floatrow}}%| +% |\end{figure*}|% +%\end{Quote}% +% Here you may see the result. +%\begingroup\makeatletter +% \floatsetup[figure]{style=plain}\floatsetup[widefloat]{margins=hangleft} +% \begin{figure*}[H]\fboxsep-.4pt%^^A +% \CommonHeightRow*% +% {\begin{floatrow}%^^A% +% \ffigbox[\FBwidth]{}%^^A% +% {\begin{subfloatrow}%^^A% +% \ffigbox[\FBwidth]{}{\caption{Part~I in the row with common heights}%^^A% +% \label{fig:CHsI:Dog}\resizebox!{\CommonHeight}{\fbox{\input{BlackDog.picture}}}}%^^A +%^^A% +% \ffigbox[\FBwidth]{}{\caption{Part~II in the row with common heights}%^^A% +% \label{fig:CHsI:WcatI}\resizebox!{\CommonHeight}{\fbox{\input{TheCat.picture}}}}%^^A +% \end{subfloatrow}\caption{Common caption~I in a~row with common height of graphics}}%^^A +%^^A% +% \ffigbox[\FBwidth]{}%^^A% +% {\begin{subfloatrow}%^^A% +% \ffigbox[\FBwidth]{}{\caption{Part~III in the row with common heights}%^^A% +% \label{fig:CHsI:mouse}\resizebox!{\CommonHeight}{\fbox{\input{Mouse.picture}}}}%^^A +%^^A% +% \ffigbox[\FBwidth]{}{\caption{Part~IV in the row with common heights}%^^A% +% \label{fig:CHsI:cheese}\resizebox!{\CommonHeight}{\fbox{\input{Cheese.picture}}}}%^^A +% \end{subfloatrow}\caption{Common caption~II in a~row with common height of graphics}}%^^A +% \end{floatrow}}%^^A% +% \end{figure*}% +%\endgroup +% +% The row with labels beside. +%\begin{Quote}% +% |\floatsetup[subfigure]{capbesideposition=left}| +% |\begin{figure*}[H]| +% |\CommonHeightRow*%| +% |{\begin{floatrow}|% +% |\ffigbox[\FBwidth]{}| +% |{\begin{subfloatrow}[3]\useFCwidth| +% |\fcapside[\FBwidth]{}{\caption{}\label{...}...}| +% |\fcapside[\FBwidth]{}{\caption{}\label{...}...}| +% |\fcapside[\FBwidth]{}{\caption{}\label{...}...}| +% |\end{subfloatrow}\caption{Common caption~I}}| +% |\ffigbox[\FBwidth]{}{\caption{Caption~II...}\label{...}...}| +% |\end{floatrow}}%| +% |\end{figure*}|% +%\end{Quote}% +% Here you may see the result. +%\begingroup\makeatletter +% \floatsetup[figure]{style=plain}\floatsetup[widefloat]{margins=hangleft} +% \floatsetup[subfigure]{capbesideposition=left} +% \begin{figure*}[H]\fboxsep-.4pt%^^A +% \CommonHeightRow*%^^A% +% {\begin{floatrow}[2]%^^A% +% \ffigbox[\FBwidth]{}%^^A% +% {\begin{subfloatrow}[3]\useFCwidth +% \fcapside[\FBwidth]{}{\caption{}%^^A% +% \resizebox!{\CommonHeight}{\fbox{\input{BlackDog.picture}}}}%^^A% +% \fcapside[\FBwidth]{}{\caption{}%^^A% +% \resizebox!{\CommonHeight}{\fbox{\input{TheCat.picture}}}}%^^A% +% \fcapside[\FBwidth]{}{\caption{}%^^A% +% \resizebox!{\CommonHeight}{\fbox{\input{Mouse.picture}}}}%^^A% +% \end{subfloatrow}\caption{Common caption~I}}%^^A% +% \ffigbox[\FBwidth]{}{\caption{}%^^A% +% \resizebox!{\CommonHeight}{\fbox{\input{Cheese.picture}}}}%^^A% +% \end{floatrow}}%^^A% +% \end{figure*}% +%\endgroup +% +% \clearpage +% \subsection{Sample Files}\label{sec:samples} +% The |floatrow| package distribution offers a few files with +% examples, which show settings, not covered by current document (some +% of them are bit exotic for technical literature). The samples have no 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; the plain floating environments and +% |floatrow|s were created, also the 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] various 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. +% \item[frsample06.tex] examples of attempts to get common height for +% rectangular graphics (photos) in the filled row of floats or parts +% of floats. Also the examples of usage of the |\Xhsize| command +% in the mixed-level rows were added. +% \end{Options} +% +% The next bundle of samples is a few file-headers with various +% preambles which run the same file with various float +% layouts. For these examples a new float type of +% float |textbox| was created. It includes text in its object contents. +% \begin{Options}{\OptionLabel} +% \item[frsample10.tex] one column non-facing layout; figures +% printed in |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 |figure*|); +% \item[frsample12.tex] two-column layout with attempts of +% colored float styles. +% \end{Options} +% +% {\sloppy Also added sample file \file{sample-longtable.tex} was added +% 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.\par} +% +%\vfil +% +% \begin{small} +% \subsection{Obsolete Commands}\label{sec:changed} +% \FRorisubsubsection{The User Interface---New Floats [\package{float}]} +% \label{sec:floatborrowI} +% +% \DescribeMacro{\newfloat}\slshape +% 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 +% |program| or |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., |t|, |b|, +% |p| and |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}${}={}$|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 \cs{}\FRkey{DeclareNewFloatType} macro stuff.}. +% \end{itemize} +%\begin{em} +% \emph{Floatrow note.} +% Also a |\newfloat*| pair was created which works similar to +% |\restylefloat*| command (see below).\pagebreak[2] +%\end{em} +% \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 <stdio.h> +% +% +%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 +% |figure| and |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 |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 |boxed| +% style. Please note that |plain| and |boxed| float +% styles have not any special settings in \package{caption} 3.x package. +% To emulate |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] +% +%\clearpage +%\RestoreSpaces +% \begingroup\extrarowheight1.75pt\small\openup-.5pt\tabcolsep.5\tabcolsep\LTpre=0ptplus3pt\LTpost\LTpre +% \subsubsection{The \texorpdfstring{\cs{floatsetup}}{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} +% |\renewfloatstyle|,\\ +% |\newfloatstyle|,\\ +% |\definefloatstyle| +% \end{tabular}& +% |\DeclareFloatStyle|---this command uses |\floatsetup| +% mechanism +% \\\hline +% |\restorerestylefloat| & removed +% \\\hline +% |\captionskip| & command, not a skip +% \\\hline +% |\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 +% |\floatobjectset| & +% in current version \emph{do not use for definition of object +% settings}, use key +% |objectset=| +% \\\hline +% |\alignsidecaption|& +% |capbesideframe=yes| +% \\\hline +% \extrarowheight0pt\begin{tabular}[t]{@{}l} +% |\capbesidecenter|,\\ |\capbesidetop|,\\ +% |\capbesidebottom|,\\ +% |\capbesideinside|,\\ +% |\capbesideoutside|,\\ +% |\capbesideleft|,\\ |\capbesideright| +% \end{tabular}& +% \extrarowheight0pt\begin{tabular}[t]{@{}l} +% |capbesideposition=center|\\ +% |capbesideposition=top|\\ +% |capbesideposition=bottom|\\ +% |capbesideposition=inside|\\ +% |capbesideposition=outside|\\ +% |capbesideposition=left|\\ +% |capbesideposition=right| +% \end{tabular} +% \\\hline +% \extrarowheight0pt\begin{tabular}[t]{@{}l} +% |\floatrowsep|,\\ |\floatcapbesidesep| +% \end{tabular}& +% in current version \emph{do not use for definition of separation +% material}, use keys\par +% \extrarowheight0pt\begin{tabular}[t]{@{}l} +% |floatrowsep=|\\ +% |capbesidesep=| +% \end{tabular} +% \\\hline +% \extrarowheight0pt\begin{tabular}[t]{@{}l} +% |\FBcenter|\vphantom{g},\\ |\FBleft|\vphantom{g},\\ +% |\FBright|,\\ |\FBnormal| +% \end{tabular}& +% \extrarowheight0pt\begin{tabular}[t]{@{}l} +% |margins=center|,\\ +% |margins=raggedright|,\\ +% |margins=raggedleft|, \\ +% |margins=center|,\\ +% \end{tabular} +% \\\hline +% |\setfloatstyle| & |style=| +% \\\hline +% \extrarowheight0pt\begin{tabular}[t]{@{}l} +% |\Setframe|\\ +% |\setframe| +% \end{tabular} +% & use |framestyle=| and |frameset=| keys +% \\\hline +% \cmd{\setrules} +% & use |precode=|, |postcode=|, |midcode=| (also +% |rowpercode| and |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 +% |attachedcapstyle=| & |relatedcapstyle=| +% \\\hline +% |floatstyle=| & |style=| +% \\\hline +% |floatfont=| & |font=| +% \\\hline +% |putcaptionbeside=| & |capposition=beside| +% \\\hline +% |besidecapposition=| & |capbesideposition=| +% \\\hline +% |besidecapwidth=| & |capbesidewidth=| +% \\\hline +% |besidecapframe=| & |capbesideframe=| +% \\\hline +% |floatmarginsset=| & |margins=| +% \\\hline +% |besidecapsep=| & |capbesidesep=| +% \\\hline +% |Precode=| & |rowprecode=| +% \\\hline +% |Postcode=| & |rowpostcode=| +% \\\hline +% |framereduce=| & |framefit=| +% \\\hline +% \extrarowheight0pt\begin{tabular}[t]{@{}l@{}} +% \vphantom{(}options of |objectset=|\\\quad +% and |margins=|\\ +% |flushleft|,\\ |flushright|,\\|center| +% \end{tabular} & +% \extrarowheight0pt\begin{tabular}[t]{@{}l@{}} +% \vphantom{(}options of |objectset=| and |margins=| +% (for unification\\\quad with analogous key options in \package{caption} +% package)\\ +% |raggedright|,\\ |raggedleft|,\\ |centering| +% \end{tabular} +% \\\hline +% \end{longtable} +% \endgroup +% \MakeShortVerb{\|}% +% +% \StopEventually{} +% \hfuzz70pt\clearpage +% +% \section{The Code} +% +% \changes{v0.2b}{2007/09/14}{The \cmd{\changes} of \texttt{v0.1}\meta{x} versions revised +% and many of them transformed into document text.} +% +% \FRorisubsection{The Prelude} +% +% The first step is to check whether \package{float} and +% \package{rotfloat} are loaded or not. If yes, there go error messages; +% if you run through this error message \package{floatrow} loading will be skipped. +% \begin{macrocode} +%<*floatrow> +\@ifundefined{float@caption}{% + \@ifundefined{rotfloat@float}{}% + {\PackageError{floatrow}{Do not use rotfloat package with floatrow.\MessageBreak + The latter will be skipped}{}% + \@namedef{opt@floatrow.sty}{}\endinput}}% + {\PackageError{floatrow}{Do not use float package with floatrow.\MessageBreak + The latter will be skipped}{}% + \@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. +% \begin{macrocode} +\@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} +% +% The \package{floatrow} package uses \package{keyval}'s mechanism widely. +% \begin{macrocode} +\RequirePackage{keyval} +% \end{macrocode} +% +% Here goes request for \file{caption3} file, core part of \package{caption} +% package (the \package{floatrow} package uses macros, similar to \package{caption}'s +% in ``append'' mode). There is not any compatibility for versions, +% older than \texttt{3.0q}, so in the case of older version you'll get error message +% and skip loading of \package{floatrow}. +% \changes{v0.2a}{2007/08/24}{Added check and error message for version older 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\endinput} +% \end{macrocode} +% This provide command loaded for compatibility with 3.0q. +% \begin{macrocode} +\providecommand*\caption@fnum[1]{% + \caption@lfmt{\@nameuse{#1name}}{\@nameuse{the#1}}} +% \end{macrocode} +% +% Here is list of macronames of \package{caption} package which are used inside \package{floatrow}. +%\begin{Options}{/caption@setfloattype}% +%\item[\cmd{\l@addto@macro}]local version of |\g@addto@macro|; +%\item[\cmd{|\@nameundef}]opposite to |\@namedef| used, for example, in |\clearfloatsetup|;%^^A +%\\[1ex]%^^A +%\item[\cmd{\caption@fnum}]defined with |\providecommand| few lines above (for compatibility with caption 3.0q); +%\item[\cmd{\caption@ifinlist}]widely used in key--val options (|\floatsetup| stuff); +%\item[\cmd{\caption@setkeys}]custom definition for |\setkeys| macro: to refer to current package +% (error messages for |\floatsetup| stuff); +%\item[\cmd{\caption@setoptions}]used in current package to switch on necessary float settings +% (|\floatsetup| stuff); +%^^A\item[\cmd{\caption@set@bool}]used for boolean key options (|\floatsetup| stuff); +%\item[\cmd{\caption@@make}]used in |\floatfoot@box| macro for building of float foots +% (|\floatfoot| command); +%\item[\cmd{\caption@@@make}]used during calculation of caption height or width, also used for creation of +% caption labels only (|\floatbox| stuff); +%\item[\cmd{\caption@lfmt}]obsolete, used together inside |\caption@@@make| macro; +%\item[\cmd{\caption@setposition}]follows caption position options of current package +% (|capposition| key of |\floatsetup| stuff; |\captop|, |\CAPTOP|, +% |\capbeside| and |\nocapbeside| commands); +%\item[\cmd{\caption@settype}]obsolete variant of |\caption@setoptions|, used for cooperation with +% caption 3.0q; +%\item[\cmd{\caption@setfloattype}]used in current package to switch on necessary float settings +% (together with |\caption@setoptions|); +%\item[\cmd{\caption@setstyle*}]used in current package to switch on necessary float settings +% (together with |\caption@setoptions|) +%\item[\cmd{\caption@setfont}]used for font definition in font option of current package and for definition +% of float foot font (|font| key of |\floatsetup| stuff);%^^A +%\\[1ex]%^^A +%\item[\cmd{\DeclareCaptionOption}]declares |\floatfoot| font option; +%\item[\cmd{\DeclareCaptionFont}]$\to$|\DeclareFloatFont|; +%\item[\cmd{\DeclareCaptionJustification}]$\to$|\DeclareObjectSet|; +%\item[\cmd{\DeclareCaptionLabelSeparator}]$\to$|\DeclareFloatSeparators|;%^^A +%\\[1ex]%^^A +%\item[\cmd{\caption@sty@}\meta{float style}]used in current package to switch on necessary float settings +% (together with |\caption@setoptions|); +%\item[\cmd{\caption@fnt}\meta{font option}]used in |\flrow@setfont| +% (|\caption@setfont| analog); +%\item[\cmd{\caption@hj@}\meta{justification}]used in |\flrow@FBoAlign| \\ +% (|\caption@setjustification| analog); +%\item[\cmd{\caption@lsep@}\meta{separator}]used in |\flrow@setFRsep| \\ +% (|\caption@setlabelseparator| analog); +%\end{Options}% +% +% \subsection{Storing of \LaTeX's Internal Macros} +% +% \begin{macro}{\FR@flboxreset} +% First goes storage of \LaTeX's macros |\@floatboxreset| and |\@makecaption| +% from bundle of float definitions. +% \begin{macrocode} +\@ifdefinable\FR@flboxreset{\let\FR@flboxreset\@floatboxreset} +% \end{macrocode} +% Please note, since the \package{caption3} package already loaded in this point, here are stored the +% \package{caption}'s definition. +% \begin{macrocode} +\@ifdefinable\FR@makecaption{\let\FR@makecaption\@makecaption} +% \end{macrocode} +% \end{macro} +% +% \emph{Floatrow note}. The next macro and few of others were renamed to change prefix ``|@FB|'' +% to ``|flrow@|'' to avoid possible conflict with French babel package. +% +% \begin{macro}{\flrow@caption} +% Here is repeated standard \LaTeX's code of |\caption| command +% (it is used below for caption width counting). +% \begin{macrocode} +\newcommand\flrow@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} +% This emulation code which says to some other packages +% that \package{float} package's mechanism is used for building of floats. +% \begin{macrocode} +\@ifdefinable\float@caption{\let\float@caption\@caption} +% \end{macrocode} +% \end{macro} +% +% \subsection{Borrowed Code (with original comment) from The \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} +% \begin{macro}{\flrow@error} +% {\em [floatrow] The \package{float}'s error message +% (the command \cmd{\float@error}\meta{arg}) changed to +% \cmd{\flrow@error}\meta{arg}. It is similar to \package{caption}'s one. +% (First goes the command of name of package.)} +% \begin{macrocode} +\newcommand\flrow@package{floatrow} +\newcommand*\flrow@error[1]{\PackageError\flrow@package{#1}\flrow@eh} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\flrow@eh} +% {\em[floatrow] This is the analog of \package{caption} package's help |\caption@eh|.} +% \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} +% Here is the \package{floatrow} package version of \package{float}'s command. +% \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.) +% \changes{v0.1p}{2007/06/24}{The \cmd{\fname@}\meta{floatname} changed to +% \cs{}\meta{floatname}|name| macros redefined locally (AS).} +% \begin{macrocode} +\newcommand\floatname[2]{\@namedef{#1name}{#2}} +\newcommand\floatplacement[2]{\@namedef{fps@#1}{#2}} +% \end{macrocode} +% {\em [floatrow] \startNotes\Note The definition of command name for float, +% in the |\floatname| macro, from version \texttt{0.1p} +% is build like |\|\meta{floatname}|name|.} \quad +% {\em\Note Here was stuff of undocumented command +% \cmd{\floatevery} which, I suppose, allowed 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} +% [floatrow] +% 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. +% \begin{macrocode} +\newcommand\FR@redefs{% +% \@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} +% The definition of this caption borrowed mechanism of saving caption contents +% into special box (like in \package{float} package). +% The |\FBc@wd| parameter here is used as flag for wrapped floats (for the +% case when natural width of float calculated). +% Since |\caption| stuff uses +% |\linewidth| parameter, here it is redefined to predefined |\hsize|. +% \changes{v0.2b}{2007/10/28}{Added check and error message for second caption outside +% \cmd{\floatbox} command.} +% \begin{macrocode} +\newcommand\flrow@makecaption[2]{\ifnum\floatbox@depth=\z@ + \ifvoid\@floatcapt + \else\flrow@error{Caption(s) lost}\fi\fi + \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 +% \end{macrocode} +% The check of |\hsize| for |\sloppy| paragraph settings. +% \changes{v0.2b}{2007/10/28}{The \cmd{\sloppy} settings added for short lines.} +% \begin{macrocode} + \ifdim\hsize<70mm\sloppy\fi + \normalsize + \abovecaptionskip\z@\belowcaptionskip\z@ + \FR@makecaption{#1}{#2}\egroup} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\killfloatstyle} +% The third one allows to define again float layout style: it could be +% necessary in mixed float rows. These redefinitions make local changes. +% \begin{macrocode} +\newcommand\killfloatstyle{\FBbuildtrue\if@@FS\hsize\FB@wd\fi\@@FSfalse} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\flrow@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. +% \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. The |\relax| meaning is used as flag. +% \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. +% \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} +% The command which redefines macros for building of floats in the way similar to \package{float} +% package after |\restylefloat| macro. That means that contents of floating environment analyzed, +% caption and foot material are saved in special box registers, then full float box is built +% accordingly to current settings. +% \begin{macrocode} +\newcommand\flrow@restyle[1]{% +% \end{macrocode} +% One-column floating environment. +% \begin{macrocode} + \@namedef{#1}{\killfloatstyle\def\@captype{#1}\FR@redefs + \flrow@setlist{{#1}}% + \textwidth\columnwidth\edef\FBB@wd{\the\columnwidth}% + \FRifFBOX\@@setframe\relax\@@FStrue\@float{#1}}% +% \end{macrocode} +% Two-column (wide) floating 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\relax\@@FStrue\edef\FBB@wd{\the\textwidth}% +% \end{macrocode} +% {\sl[float] 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. +% \begin{macrocode} + \let\@xdblfloat\@xfloat\relax + \FR@ifdoubleaswide + {\if@twocolumn\else\let\@dblfloat\@float\fi}\relax + \@dblfloat{#1}}% + \expandafter\let\csname end#1\endcsname\float@end + \expandafter\let\csname end#1*\endcsname\float@dblend +% \end{macrocode} +% One-column rotated floating 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\relax\@@FStrue + \let\rotfloat@@makebox\float@makebox + \let\float@makebox\rotfloat@makebox + \@float{#1}}% + \@namedef{endsideways#1}{\FBbuildtrue\float@end} +% \end{macrocode} +% Two-column rotated floating environment without support. +% \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 floating environment with support. +% \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\relax\@@FStrue +% \end{macrocode} +% {\sl[float] 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 floating 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\relax\@@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 is the repeated code from |\float@end| and |\float@dblend|: check whether +% |\floatbox| stuff appeared or not. +% \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 the 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). +% \begin{macrocode} + \@ifundefined{sf@@@subfloat}{}{\@ifundefined{c@sub#1}{\newsubfloat{#1}}{}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\RawFloats} +% This macro restores plain \LaTeX{} mode for floats. i.e. returns core +% macros for commands of floating 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.) +% \begin{macrocode} +\newcommand\RawFloats{\@ifnextchar[%] + \flrow@rawfloatschk\flrow@rawfloats} +% \end{macrocode} +% The macro for usage inside one environment. It redefines only |\end|\meta{float type} +% commands to \LaTeX's standard behavior. +% \begin{macrocode} +\newcommand\flrow@rawfloats{\killfloatstyle\@parboxrestore + \let\@makecaption\FR@makecaption + \expandafter\ifx\csname end\@captype\endcsname\float@endH + \global\FBbuildfalse + \else + \@namedef{end\@captype}{\end@float}% + \fi + \expandafter\ifx\csname end\@captype*\endcsname\float@endH + \global\FBbuildfalse + \else + \@namedef{end\@captype*}{\end@dblfloat}% + \fi + \@ifundefined{@rotfloat}{}{% + \@namedef{endsideways\@captype}{\end@rotfloat}% + \@namedef{endsideways\@captype*}{\end@rotdblfloat}% + }% + \@ifundefined{wrapfloat}{}{% + \@namedef{endwrap\@captype}{\endwrapfloat}% + }} +% \end{macrocode} +% +% \begin{macrocode} +\@ifdefinable\flrow@rawfloatschk{} +\def\flrow@rawfloatschk[#1]{\@ifnextchar[%] + {\flrow@RawFloats[#1]}{\flrow@@RawFloats#1,;}} +% \end{macrocode} +% +% The next two macros redefine the |\|\meta{float type} commands. The |\end|\meta{float type} +% in this case won't touched at all. Since at the beginning of document all float commands +% redefined accordingly to \package{floatrow} package's settings, the |\flrow@raw@set| +% command is used: in the preamble area it works like |\AtBeginDocument| macro, in the +% |document| area it simply runs its argument. +% \changes{v0.2b}{1007/10/24}{Added \cmd{\flrow@raw@set} command to allow usage of \cmd{\RawFloats} +% both in the preamble and in the document areas.} +% \begin{macrocode} +\@ifdefinable\flrow@RawFloats{} +\newcommand\flrow@raw@set{\AtBeginDocument} +\AtBeginDocument{\let\flrow@raw@set\@firstofone} +\def\flrow@RawFloats[#1][#2]{\flrow@RawFloats@[#1]#2,;} +\def\flrow@RawFloats@[#1]#2,{% + \caption@ifinlist{#2}{float}{\flrow@raw@set + {\@namedef{#1}{\@float{#1}}}% + }{\caption@ifinlist{#2}{widefloat}{\flrow@raw@set% + {\@namedef{#1*}{\let\@xdblfloat\@xfloat\@dblfloat{#1}}}% + }{\caption@ifinlist{#2}{rotfloat}{% + \@ifundefined{@rotfloat}{}{\flrow@raw@set + {\@namedef{sideways#1}{\@rotfloat{#1}}}}% + }{\caption@ifinlist{#2}{widerotfloat}{% + \@ifundefined{@rotfloat}{}{\flrow@raw@set + {\@namedef{sideways#1*}{\@rotdblfloat{#1}}}}% + }{\caption@ifinlist{#2}{wrapfloat}{% + \@ifundefined{wrapfloat}{}{\flrow@raw@set + {\@namedef{wrap#1}{\wrapfloat{#1}}}}}% + }{\caption@ifinlist{#2}{all,allfloats}{% + \flrow@@RawFloats{#1}% + }{\flrow@error{Undefined float subtype `#2'}% + }}}}}\@ifnextchar;\@gobble{\flrow@RawFloats@[#1]}} +% \end{macrocode} +% +% \begin{macrocode} +\@ifdefinable\flrow@@RawFloats{} +\def\flrow@@RawFloats#1,{% + \flrow@raw@set{\@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} +% This macro is used by |rawfloats=| key. If this key is true, it replaces +% the |\flrow@restyle| command when definitions of float run. +% \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}{\RawCaption} +% The command of caption which doesn't use box register. +% \begin{macrocode} +\newcommand\RawCaption[1]{{\let\@makecaption\FR@makecaption #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 [floatrow] +% The |\newfloat| changed and uses |\floatsetup| stuff (redefined by +% suggestions of Axel Sommerfeldt).} +% \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 [floatrow] 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[floatrow] 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.} +% +% {\em[floatrow] In the case of loaded \package{setspace} package, the |\@xfloat| +% definition ought to be fixed.} +% \changes{v0.3b}{2009/08/02}{The fixation re-fixed by suggestions of A.Sommerfeldt} +% \begin{macrocode} +\AtBeginDocument{% + \@ifundefined{latex@xfloat}{}{% + \let\floatrow@ORI@xfloat\@xfloat + \def\@xfloat#1[#2]{% + \floatrow@ORI@xfloat{#1}[#2]% + \floatfont}}}% +% \end{macrocode} +% +% 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 |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[floatrow] If we want to put barrier +% ^^A (i.e. use beta-package \package{flafplins}).} +% ^^A \changes{v0.1j}{2006/03/12}{Added \cmd{\FloatHBarrier}} +% \begin{macrocode} + \@ifundefined{FloatHBarrier}{}\FloatHBarrier +% \end{macrocode} +% {\em[floatrow] Locally redefine the end of the environment. To allow usage of |[H]| option in wide floats +% i.e. starred environments in one-column layout there is added the \cmd{\FR@ifdoubleaswide} flag.} +% \begin{macrocode} + \expandafter\let\csname end#1\endcsname\float@endH + \FR@ifdoubleaswide + {\expandafter\let\csname end#1*\endcsname\float@endH}\relax +% \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. +% {\em[floatrow] The special settings for H-floats |floatH| were added.} +% \changes{v0.3b}{2009/08/02}{Fixed bug of \cs{thisfloatsetup} usage} +% \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. +% +% {\em [floatrow] +% Here added zeroing of list margins in the case of appearance of |\floatbox| +% inside list environment. +% Also the settings for \verb|\linewidth| and were zeroed +% margins were added for the case of appearance +% of \verb|\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} +% [floatrow] +% 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 +% |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. +% \begin{macrocode} +\newcommand\flrow@flboxreset{\FR@flboxreset + \@ifundefined{capstart}{}{\capstart}% + \FB@facing\@tempswafalse\FR@iffacing\@tempswatrue\relax + \if@tempswa\FB@readaux{\relax}\fi + \global\let\FBcheight\relax\global\let\FBoheight\relax + \global\let\FBfheight\relax + \FBifcapbeside\FC@fs@wd\FB@fs@wd + \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 |minipage| +% environment or in |\parbox|) mean usage of natural height of components. +% \begin{macrocode} +\@ifdefinable\FBcheight{\let\FBcheight\relax} +\@ifdefinable\FBoheight{\let\FBoheight\relax} +\@ifdefinable\FBfheight{\let\FBfheight\relax} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\FB@fs@wd} +% The width settings for float box with caption above or below object. +% \begin{macrocode} +\newcommand\FB@fs@wd{\@tempdima\FBB@wd +% \end{macrocode} +% The |\flrow@setwd| could define the width for current float. +% \begin{macrocode} + \flrow@setwd\textwidth\@tempdima + \adj@dim\@tempdima-\FB@wadj=\@tempdima + \settowidth\@tempdimb{{\FBleftmargin}{\FBrightmargin}}% + \advance\@tempdima-\@tempdimb + \global\FBc@wd\@tempdima\global\FB@wd\@tempdima + \adj@dim\@tempdima-\FBo@wadj={\global\FBo@wd}% + \hsize\FBo@wd\linewidth\hsize + \FBifcaptop + {\ifnum\FPOScnt=\z@\columnwidth\hsize\else\columnwidth\FBc@wd\fi}% + {\columnwidth\FBc@wd}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\FC@fs@wd} +% The width settings for float box with caption beside object. +% \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\@tempswatrue\@tempswafalse + \if@tempswa + \ifx\FCwidth\relax + \flrow@error{You didn't define width of caption\MessageBreak + for plain floating 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}\relax + \fi + \else + \global\FBc@wd\@tempdima + \fi + \FC@ifo@fil\relax{\@tempdima.5\@tempdima +% \end{macrocode} +% The |\flrow@setwd| could define the width for followed float. +% \begin{macrocode} + \flrow@setwd\FB@wd\@tempdima}% + \adj@dim\@tempdima-\FBo@wadj={\global\FBo@wd}% + \FC@ifc@wd\relax{\global\advance\FBc@wd-\FB@wd}% + \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 [floatrow \ldots Skipped explanation of float package.]} +% +% \begin{em} +% [floatrow] +% 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 floating environment in minipage-like mode. +% +% \begin{macrocode} +\newcommand\float@makebox[1]{% + \FBifcapbeside{\flrow@FC{#1}}{\flrow@FB{#1}}} +% \end{macrocode} +% The definitions of vertical fine tuning corrections. +% \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. +% \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}% + \FR@iffacing{\FB@writeaux{\string\global\string\c@FBcnt\thepage}}\relax +% \@tempswafalse\FR@iffacing\@tempswatrue\relax +% \ifCADJ\@tempswatrue\fi\ifOADJ\@tempswatrue\fi +% \if@tempswa +% \FB@writeaux{\string\c@FBcnt\thepage +% \string\def\string\FB@@boxmax{% +% \ifOADJ\string\FBo@ht\the\FBo@ht +% \string\FBf@ht\the\FBf@ht\fi +% \ifCADJ\string\FBc@ht\the\FBc@ht\fi}}\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. +% 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}% + \FR@iffacing{\FB@writeaux{\string\global\string\c@FBcnt\thepage}}\relax +% \@tempswafalse\FR@iffacing\@tempswatrue\relax +% \if@tempswa +% \FB@writeaux{\string\c@FBcnt\thepage +% \string\def\string\FB@@boxmax{% +% \ifOADJ\string\FBo@ht\the\FBo@ht +% \string\FBf@ht\the\FBf@max\fi +% \ifCADJ\string\FBc@ht\the\FBc@ht\fi}}\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. +% \begin{macrocode} +\newcommand\FCc@box[1]{\def\@parboxto{}\FC@bbox#1\FC@ebox} +\newcommand\FC@bbox{\vbox\@parboxto\bgroup} +\newcommand\FC@ebox{\vskip\z@\egroup} +\newcommand\FCo@box[1]{\def\@parboxto{}\ifx\FBoheight\relax\FC@bbox\else + \def\@parboxto{to\FBoheight}\FC@bbox\vsize\FBoheight\fi#1\FC@ebox} +% \end{macrocode} +% Definitions for fill material for vertical alignment and command with +% width settings of boxes. +% \begin{macrocode} +\newcommand\FBafil{\vfill}\newcommand\FBbfil{\vfill} +\newcommand\FBw@box[1]{\hsize#1\columnwidth#1\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. +% At first we reset temporary definitions for current float. +% \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. +% \begin{macrocode} + \@parboxrestore\leftmargin\z@\rightmargin\z@ + \@@FBabove + \FBifcaptop\@tempswatrue\@tempswafalse + \if@tempswa +% \end{macrocode} +% If needed and exists---caption box above float object. +% If key |footposition=caption| under caption loaded +% foot material. +% \begin{macrocode} + \ifvoid\@floatcapt\else + \FB@vbox\FBc@wd\FBcheight{\FBifCAPTOP\relax\vfill + \unvbox\@floatcapt + \ifnum\FPOScnt=\@ne\vbox{\FB@foot}\fi\vfil}% + \@@FBskip\hrule\@height\z@\@depth\z@ + \fi +% \end{macrocode} +% Box of float object. If key |footposition=default| +% foot material loaded in the bottom of float object box. In the case of +% |footposition=foot| 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=\z@ + \FB@vtop\FBo@wd\FBfheight{\FB@foot\vfil}\fi}}\par + \vskip\z@ + \ifnum\FPOScnt=\tw@\vskip\z@ + \FB@vtop\FBc@wd\FBfheight{\FB@foot\vfil}\fi}% +% \end{macrocode} +% If needed and exists---caption box below float object. +% If key |footposition=default| or |footposition=caption| +% foot material loaded under caption contents. +% \begin{macrocode} + \else\ifnum\FPOScnt=\z@\FPOScnt=\@ne\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=\@ne\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 +% |postcode=| material. +% \changes{v0.2b}{2007/10/28}{Caption box deleted if still exists.} +% \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 + \global\setbox\@floatcapt\box\voidb@x}} +% \end{macrocode} +% +% Second internal macro for float row builds float box with beside caption. +% At first we reset temporary definitions for current float. +% \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} +% 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. +% \changes{v0.2b}{2007/10/28}{Caption box deleted if still exists.} +% \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 + \global\setbox\@floatcapt\box\voidb@x}} +% \end{macrocode} +% Macro for foots and command for skip outside float row. +% \begin{macrocode} +\newcommand\FB@foot{\let\FR@ifFOOT\@firstoftwo\FB@putfoots\@@par\FB@putfnotes} +\newcommand\FB@zskip{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{em} +% \end{macro} +% +% \begin{macro}{\float@end} +% [float] 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 [floatrow] 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.} +% \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 [floatrow] Added flag |\ifFBbuild| for float box layout building. +% This flag stops repeated usage of |\float@makebox| after |\floatbox|.} +% 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}\relax + \vskip\intextsep + \ifFBbuild\setbox\@currbox\float@makebox\columnwidth\fi + \box\@currbox\par + \FR@iffloatHaslist + {\addpenalty\@endparpenalty\@endpetrue}\relax + \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 [floatrow] +% Added flag |\ifFBbuild| for float box layout building. +% This flag stops repeated usage of |\float@makebox| after |\floatbox|.} +% \begin{macrocode} +\newcommand\float@dblend{\ifFBbuild\@endfloatbox + \global\setbox\@currbox\float@makebox\textwidth + \let\@endfloatbox\relax\fi + \end@dblfloat} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{The \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} +% +% [floatrow \ldots Skipped explanation. Original definition of caption is stored in |\flrow@caption| above. +% The storing mechanism of caption box was moved in |\@makecaption| stuff (|\flrow@makecaption| command).] +% +% \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([floatrow] 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. +% {\em [floatrow] The definition of list entry +% layout moved in \cmd{\DeclareNewFloatType} command.} +% \changes{v0.2b}{2007/12/09}{The main definition of list entry layout moved in +% \cmd{\DeclareNewFloatType} command, here it is provided.} +% \begin{macrocode} + \expandafter\providecommand\csname l@#1\endcsname + {\@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 [floatrow] 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} +% +% ^^A ------------------------------------------------------------------------------------------------------- +% +% \subsection{Borrowed Code (With Original Comment) +% from The \package{rotfloat} Package} +% +% {\em [floatrow] If there is the \package{rotating} package in \LaTeX's +% installation the \package{rotfloat} package's stuff will be loaded.} +% \begin{macrocode} +\IfFileExists{rotating.sty}{\@tempswatrue}{\@tempswafalse} +\if@tempswa +% \end{macrocode} +% +% {\em [floatrow] +% 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 [floatrow] 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 [floatrow] 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 [floatrow] of borrowed code of +% \package{rotfloat} package, v1.2. 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. The footnote stuff works like +% in minipage, +% \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} +\@ifdefinable\FR@ifFOOT{\let\FR@ifFOOT\@secondoftwo} +% \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}\relax + \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}\relax + \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 |minipage| environment. That could be useful in +% multiple footnote marks in tables. Since the same definition was loaded +% in \package{footmisc} version 4.10, dated 2003/01/20 and later, 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 follows its style. It uses |\caption| mechanism. +% \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} +% +% \begin{macro}{\floatfoot@box} +% For the case of usage outside of |\floatbox| and floating environments. E.g. +% inside |longtable| environment. +% \begin{macrocode} +\newcommand\floatfoot@box[1]{% + \@ifundefined{@captype}{\def\@captype{floatfoot}}{}% +% \end{macrocode} +% The |\if@@FS| flag stored for |wrap...| environments. +% \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} +% \end{macro} +% +% \subsection{Defining New Float Box Commands} +% +% \begin{macro}{\newfloatcommand} +% \begin{macro}{\renewfloatcommand} +% The following macros allow to define user commands-abbreviations of |\floatbox| command: +% they have common unchanged preamble and setting for default width of +% float box. +% The definition of command for new float command. +% \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][]}} +% \end{macrocode} +% This group ends at the end of |\@@@floatbox| macro. +% \begin{macrocode}% +\def\FB@@nc#1#2[#3][#4]{% + \@namedef{#1}{\begingroup +% \end{macrocode} +% The option with temporary 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} +% +% \FRorisubsubsection{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). The |\newdimen| register is +% necessary because of these parameters can catch values from skip parameters +% during calculations, +% also the skip values of widths could ``conflict'' with skips-separators between floats. +% \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@fcaddcnt} +% \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|, |\stepcounter| and +% |\refsteponlycounter|. +% \begin{macrocode} +\newcommand\FR@loc@refcnt[1]{% + \@ifundefined{c@#1}{\@nocounterr{#1}}% + {\advance\csname c@#1\endcsname1\relax}} +% \end{macrocode} +% Gobbling of caption label and localization of counter change. +% \begin{macrocode} +\newcommand\FR@loc@{% +% \flrow@gobble + \let\FR@ifunloc\@gobble + \let\label\@gobble + \let\refstepcounter\FR@loc@refcnt + \let\stepcounter\FR@loc@refcnt + \let\refsteponlycounter\FR@loc@refcnt + \let\FR@ifcountH\@secondoftwo +% \end{macrocode} +% The |\cl@@ckpt| is macro which ``globalizes'' all counters. It is used by +% |tabularx| environment. Here it is emptied during local creation of +% caption box. Also here is gobbled macro from \package{subfig} package. +% \changes{v0.2b}{2008/01/06}{Added redefinitions of \texttt{..addcontentsline} +% commands for (subcaption) compatibility with caption 3.1. (AS)} +% \begin{macrocode} + \let\cl@@ckpt\empty\let\addtocounter\FR@loc@addcnt + \let\caption@kernel@addcontentsline\@gobbletwo + \let\caption@addcontentsline\@gobbletwo + \def\sf@updatecaptionlist##1##2##3##4{}} +% \end{macrocode} +% The macro for temporary redefinition for counting of caption width. +% \changes{v0.1p}{2007/06/24}{Added \cmd{\relax} for compatibility with +% caption 3.1.} +% \changes{v0.2b}{2007/12/10}{Contents of \cmd{\FBtmp@cap} became \cmd{\captionlabel} for (sub)caption labels.} +% \begin{macrocode} +\def\FBtmp@cap#1[#2]#3{\sbox\@tempboxa{\captionlabel{#3}}% + \global\@tempdimb\wd\@tempboxa} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\captionlabel} +% \begin{macro}{\subcaptionlabel} +% Here goes support for caption and subcaption labels. (The |\captionlabel| command is +% used as internal macro for calculating width of caption.) +% This macro uses internal \package{caption} commands |\caption@@@make| and |\caption@lfmt|. +% The temporary macro |\FR@tmp| defined as |\@captype| or |sub\@captype|, depending to +% ``depth'' of float box. +% \changes{v0.2b}{2007/12/10}{The \cmd{\captionlabel} created for (sub)caption label, +% with suggestions A.Sommerfeldt.} +% \begin{macrocode} +\newcommand\captionlabel[1]{{\def\FR@tmp{\@captype}\ifnum\floatbox@depth>\@ne + \def\FR@tmp{sub\@captype}\caption@setsubtype*{\FR@tmp}\stepcounter{\FR@tmp}\fi + \caption@@@make{\caption@fnum\FR@tmp}{#1}}} +% \end{macrocode} +% The |\subcaptionlabel| command +% \begin{macrocode} +\newcommand\subcaptionlabel[1]{{\floatbox@depth\tw@\captionlabel{#1}}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\FBget@box} +% This macro calculates 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 |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). +% \begin{macrocode} + \FBiffloatrow\relax + {\ifx\FBB@wd\relax + \ifdim\hsize=\z@ +% \end{macrocode} +% The |\floatbox| stuff doesn't use special |\caption| definition inside +% |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}% + \adj@dim\hsize-\FB@wadj=\@tempdima + \FBifcapbeside + {\FCget@@wd{#1}{#3}}% + {\nofilFCOhsize + \FBiffloatrow\relax + {\settowidth\@tempdimb{{\FBleftmargin}{\FBrightmargin}}% + \advance\@tempdima-\@tempdimb}}% + \FC@ifo@fil{\@tempdima\FB@wd}{\FB@wd\@tempdima}% + \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. +% \begin{macrocode} + \FBiffloatrow\relax{\hsize\FBo@wd}% +% \end{macrocode} +% |\FB@wd| changed only for beside captions. +% \begin{macrocode} + \FBifcapbeside{\hsize\FB@wd}\relax + \linewidth\hsize +% \end{macrocode} +% If there are defined the width and/or height arguments in |\floatbox| +% macro (re)calculates 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\relax{\advance\FBc@wd-\FB@wd}}% + {\FBc@wd\FB@wd}% +% \end{macrocode} +% From this point macro calculates heights of caption and object if necessary. +% \begin{macrocode} + \setbox\z@\vbox{\let\FR@ifROWFILL\@secondoftwo\FR@loc@\hsize\FBo@wd\linewidth\hsize + \FBifcaptop + {\ifnum\FPOScnt=\z@\columnwidth\hsize\else\columnwidth\FBc@wd\fi}% + {\columnwidth\FBc@wd}% + #3}% + \FBc@ht\ht\@floatcapt\advance\FBc@ht\dp\@floatcapt + \FBo@ht\ht\z@\advance\FBo@ht\dp\z@\let\FBheight\FBo@ht + \setbox\tw@\vbox{\null\par\FB@foot\par}% + \FBf@ht\ht\tw@\advance\FBf@ht\dp\tw@ + \FBiffloatrow + {\ifdim\FBf@ht>\FBf@max\global\FBf@max\FBf@ht\fi + \ifCADJ + \FBifcaptop + {\ifnum\FPOScnt=\@ne\global\advance\FBc@ht\FBf@ht\fi}% + {\ifnum\FPOScnt=\tw@ + \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}% + \ifdim\FBc@ht>\FBc@max\global\FBc@max\FBc@ht\fi + \gdef\FBcheight{\FBc@ht}\gdef\FBfheight{\FBf@ht}% + \fi}\relax + \def\reserved@a{#2}\ifx\reserved@a\empty + \FBiffloatrow{\ifOADJ + \ifdim\FBo@ht>\FBo@max\global\FBo@max\FBo@ht\fi + \FBifcaptop + {\ifnum\FPOScnt=\z@ + \ifdim\FBf@ht>\FBf@max\global\FBf@max\FBf@ht\fi + \fi}\relax + \gdef\FBoheight{\FBo@ht}\gdef\FBfheight{\FBf@ht}% + \fi}\relax + \else +% \end{macrocode} +% \changes{v0.2b}{2007/12/09}{The argument with floatbox contents added.} +% \begin{macrocode} + \FBget@@ht{#2}{#3}% + \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\relax + {\settowidth\@tempdimb{{\FCleftmargin}{\FCrightmargin}}% + \advance\@tempdima-\@tempdimb\advance\hsize-\@tempdimb}% + \settowidth\@tempdimb{\floatcapbesidesep}\advance\@tempdima-\@tempdimb + \FC@ifo@fil{\FB@wd\@tempdima}\relax + \FC@ifc@wd\@tempswatrue\@tempswafalse + \if@tempswa +% \end{macrocode} +% If |\FCwidth| was not defined (|\relax|), macro calculates +% natural caption width (in this case |\caption| restores plain \LaTeX's +% behavior). The contents of float thrown out in |\box\@ne|. +% \begin{macrocode} + \ifx\FCwidth\relax + \setbox\@ne\vbox{\FR@loc@ + \let\caption\flrow@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}\relax + \else + \FBc@wd\@tempdima + \fi + \@tempdima.5\@tempdima} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\flrow@gobble@} +% \begin{macro}{\flrow@gobble} +% \begin{macrocode} +\newcommand\flrow@gobble@[2][]{\unskip\ignorespaces} +\newcommand\flrow@gobble{% + \let\caption\flrow@gobble@ + \let\floatfoot\flrow@gobble@ + \let\footnote\flrow@gobble@ + \let\footnotetext\flrow@gobble@ + } +% \end{macrocode} +% \end{macro} +% \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. +% \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 + \setbox\z@\hbox{\let\FR@ifROWFILL\@secondoftwo\FR@loc@#2}% + \FBo@wd\wd\z@\let\FBwidth\FBo@wd + \setlength\FBo@wd{#1}% + \advance\FBo@wd\leftskip\advance\FBo@wd\rightskip +% \end{macrocode} +% The width |\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. +% \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.2b}{2007/12/09}{The argument with floatbox contents added. Corrected bug +% with height calculating.} +% \begin{macrocode} +\newcommand\FBget@@ht[2]{\@tempswafalse + \begingroup + \@tempdimb-3000pt\let\FBheight\@tempdimb + \setlength\dimen@{#1}\ifdim\dimen@<\z@ + \global\@tempswatrue\fi + \endgroup + \if@tempswa + \setbox\z@\hbox{\let\FR@ifROWFILL\@secondoftwo\FR@loc@#2}% + \FBo@ht\ht\z@\advance\FBo@ht\dp\z@ + \let\FBheight\FBo@ht\setlength\FBo@ht{#1}% + \adj@dim\FBo@ht+\FBo@hadj=\FBo@ht + \FBifcaptop{\ifnum\FPOScnt=\z@\advance\FBo@ht\FBf@ht\fi}\relax + \else + \setlength\FBo@ht{#1}% + \adj@dim\FBo@ht-\FBo@hadj=\FBo@ht + \adj@dim\FBo@ht-\FB@hadj=\FBo@ht + \setbox\z@\vbox{\offinterlineskip\vbox{\@@FBabove}% + \FBifcapbeside\relax{\@@FBskip\hrule\@height\z@\@depth\z@}% + \vtop{\@@FBbelow}}% + \global\advance\FBo@ht-\ht\z@\global\advance\FBo@ht-\dp\z@ + \FBifcapbeside\relax\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=\z@\advance\FBo@ht\FBf@ht\fi}\relax + \fi}\relax + \def\FBoheight{\FBo@ht}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\FBget@@@ht} +% If there was set the height of float box this macro +% calculates 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 |\box\z@| settings moved up in |\FBget@@ht| macro. +% \begin{macrocode} +% \global\advance\FBo@ht-\ht\z@\global\advance\FBo@ht-\dp\z@ + \ifdim\FBc@ht>\FBc@max + \global\advance\FBo@ht-\FBc@ht + \else + \global\advance\FBo@ht-\FBc@max + \fi + \FBifcaptop{\ifnum\FPOScnt=\@ne\else + \ifdim\FBf@ht>\FBf@max + \global\advance\FBo@ht-\FBf@ht + \else + \global\advance\FBo@ht-\FBf@max + \fi + \fi}\relax + } +% \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}{\FR@ifFCBOX} +% \begin{macro}{\FBs@raise} +% \begin{macro}{\FBf@raise} +% \begin{macro}{\FCset@vpos} +% The |\FR@ifFCBOX| flag if true aligns top or bottom of object's +% frame with top or bottom of beside caption if fancy layout used. +% \begin{macrocode} +\@ifdefinable\FR@ifFCBOX{\let\FR@ifFCBOX\@secondoftwo} +\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 +% |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}% + \FR@ifFCBOX{\gdef\FBf@raise{\raisebox{-\height}}}% + {\gdef\FBf@raise{}}% + \gdef\FBs@raise{\raisebox{-\totalheight}}% + \or\gdef\FC@bbox{\vbox\@parboxto\bgroup}\gdef\FC@ebox{\vskip\z@\egroup}% + \FR@ifFCBOX{\gdef\FBf@raise{\raisebox{\depth}}}% + {\gdef\FBf@raise{}}% + \gdef\FBs@raise{}\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\adj@dim} +% Dimension defines locally box widths and heights in special styles. +% The argument |#4| can be set in form like |{\global\hsize}| to +% globalize result. +% \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. The option with settings for float +% box saved to temporary command. For possible including |\floatbox| in |\floatbox| +% the |\floatbox@depth| counter was added. We need to do all settings and calculations +% in group. +% \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. +% \begin{macrocode} + \if@@FS\else\FR@redefs + \ifcase\floatbox@depth\or + \flrow@setlist{{\@captype}}\or +% \end{macrocode} +% The |\caption| stuff catches |sub\@captype| settings by itself. In this case +% in the second label were loaded only float layout settings. +% \changes{v0.2b}{2007/12/10}{The redundant(?) caption settings for subtypes removed.} +% \begin{macrocode} + \flrow@settype{subfloat}\flrow@settype{subtype}\flrow@settype{sub\@captype}% + \fi + \FRifFBOX\@@setframe\relax\@@FStrue + \fi +% \end{macrocode} +% 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\relax +% \end{macrocode} +% Restoring standard justified paragraph settings${{}+{}}$|\parindent\z@|. +% \begin{macrocode} + \@parboxrestore\leftmargin\z@\rightmargin\z@ + \floatobjectset\floatfont +% \end{macrocode} +% Here is called macro which calculates widths and heights of caption +% and object. +% \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\relax + \FBiffloatrow{\FR@floatbox{\@ifundefined{capstart}{}{\capstart}#4#5}}% +% \end{macrocode} +% The restoring of full |\hsize| of current float box. +% For the case of counting of float width inside |wrap...| environment +% here defined the |\FBB@wd| macro. Inside the |\FBsetbox@obj| macro it |\relax|ed +% again to get brand-new settings for possible inner |\floatbox|es. +% \changes{v0.1f}{2005/06/14}{The \cmd{\capstart} added as +% b)~\cmd{\FBsetbox@obj} argument (in float row).} +% \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}{\flrow@FB\FBB@wd}% + \global\FBbuildfalse + \FR@iffacing{\FB@writeaux{\string\global\string\c@FBcnt\thepage}}\relax +% \global\FB@wd\hsize + }\advance\floatbox@depth\m@ne +% \end{macrocode} +% 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. |boxed| +% or |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@\flrow@FB@ + \end@FBBOX +% \end{macrocode} +% The each float box in float row reduces special counter |FRobj| +% by~1. +% \begin{macrocode} + \addtocounter{FRobj}\m@ne + \@tempswafalse\FR@iffacing\@tempswatrue\relax + \ifCADJ\@tempswatrue\fi\ifOADJ\@tempswatrue\fi +% \end{macrocode} +% At end of row it equals zero. +% \begin{macrocode} + \advance\Xhsize-\FB@wd + \FBifcapbeside + {\advance\Xhsize-\FBc@wd + \FR@ifcountH{\global\advance\Zhsize-\FBc@wd}\relax + \settowidth\@tempdimb{\floatcapbesidesep}% + \advance\Xhsize-\@tempdimb + \FR@ifcountH{\global\advance\Zhsize-\@tempdimb}\relax}\relax + \ifnum\c@FRobj=\z@ +% \end{macrocode} +% Here goes macro which prints in \file{.aux}-file the final +% countdown of maximum caption and object heights if necessary. +% At last goes 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} +% \FBifcapbeside +% {\advance\Xhsize-\FBc@wd +% \FR@ifcountH{\global\advance\Zhsize-\FBc@wd}\relax +% \settowidth\@tempdimb{\floatcapbesidesep}% +% \advance\Xhsize-\@tempdimb +% \FR@ifcountH{\global\advance\Zhsize-\@tempdimb}\relax}\relax + \floatrowsep + \adj@dim\Xhsize-\FB@wadj={\global\Xhsize}% + \adj@dim\Zhsize-\FB@wadj={\global\Zhsize}% + \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=\z@\columnwidth\FBo@wd\else\columnwidth\FBc@wd\fi}% + {\FB@vbox\FBo@wd\FBoheight\bgroup\FBafil\floatobjectset\floatfont + \columnwidth\FBc@wd}% + #1\FBbfil\egroup\color@endbox + \let\@currbox\float@box} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Building Float Row} +% +% \FRorisubsubsection{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} +\@ifdefinable\FBiffloatrow{\let\FBiffloatrow\@secondoftwo} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\c@FRobj} +% Counter of objects in 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} +\newcounter{FRsobj} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Xhsize} +% \begin{macro}{\Yhsize} +% \begin{macro}{\Zhsize} +% 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} +% Next dimensions are used for calculation of the common height of photos +% in a row. +% \begin{macrocode} +\newlength\sXhsize +\newlength\Zhsize +\newlength\sZhsize +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Float Row Environment} +% +% \begin{environment}{floatrow} +% \label{floatrow} +% Environment for placing beside floats (of one type). +% First goes counter of floats in row, then the settings for float layout. +% \changes{v0.2a}{2007/08/24}{Redefined boxes for building of above and below +% material} +% \begin{macrocode} +\newcommand\flrow@to{to\hsize} +\newcommand\flrow@boxset[1]{#1} +\newcommand\flrow@setrowhbox{% +\FR@ifROWFILL{\def\flrow@left{\hskip\leftskip}\def\flrow@right{\hskip\rightskip}% + }{\let\flrow@to\empty\def\flrow@left{}\def\flrow@right{}}% +} +\newcommand\flrow@left{}\newcommand\flrow@right{} +\newcommand\flrow@hbox@bgroup{\hbox\flrow@to + \bgroup\flrow@left} +\newcommand\flrow@hbox@egroup{\flrow@right + \egroup} +\newbox\flrow@rowbox +\newcommand\floatrow[1][2]{\c@FRobj=#1\relax +% \end{macrocode} +% If depth of row more than~0 the subfloatrow settings are switched. +% \changes{v0.3b}{2009/08/02}{Fixed bug of \cs{thisfloatsetup} usage} +% \begin{macrocode} + \ifcase\floatbox@depth + \flrow@setlist*{{floatrow}{\@captype row}}% + \or +% \end{macrocode} +% The |\caption| stuff catches |sub\@captype| settings by itself. The other reason to skip +% caption settings here is possible usage of upper level |\caption| inside of |\RawCaption| +% command which need ``parent'' settings. In this case +% in the second label were loaded only float layout settings. +% \begin{macrocode} + \flrow@settype{subfloat}\flrow@settype{subtype}\flrow@settype{sub\@captype}% + \flrow@settype{subfloatrow}\flrow@settype{sub\@captype row}% + \ifx\flrow@to\empty\def\flrow@boxset##1{}\fi + \fi% +% \end{macrocode} +% Settings for facing/non-facing layout, common/non-common heights of captions and objects. +% \begin{macrocode} + \FB@facing\@tempswafalse\FR@iffacing\@tempswatrue\relax + \ifCADJ\@tempswatrue\fi\ifOADJ\@tempswatrue\fi + \if@tempswa\FB@readaux{\relax}\fi + \flrow@boxset{\ifx\FBB@wd\relax\edef\FBB@wd{\the\hsize}\else\hsize\FBB@wd\fi}% +% \end{macrocode} +% Settings analyzed. +% The building of box of row of floats started. +% \begin{macrocode} + \ifnum\floatbox@depth=\z@\vspace\FBaskip\else\leavevmode\fi + \hbox\flrow@to\bgroup%outer h box + \FRleftmargin + \flrow@boxset{\hsize\FBB@wd + \settowidth\@tempdima{{\FRleftmargin}{\FRrightmargin}}\advance\hsize-\@tempdima}% + \bgroup\ifx\FR@frame\empty\else\def\FB@frame{}\def\FB@wadj{}\def\FB@hadj{}\fi%frame set + \flrow@boxset{\adj@dim\hsize-\FR@wadj=\hsize}% + \setbox\flrow@rowbox\vbox\bgroup%v box +% \end{macrocode} +% Material above. +% \begin{macrocode} + \@@FRabove +% \end{macrocode} +% Row |\hbox|. +% \begin{macrocode} + \flrow@setrowhbox + \flrow@hbox@bgroup\let\FBiffloatrow\@firstoftwo +% \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@\m@ne +% \settowidth\@tempdima{{\FRleftmargin}{\FRrightmargin}}\advance\Xhsize-\@tempdima + \settowidth\@tempdima{\floatrowsep}\advance\Xhsize-\count@\@tempdima + \@tempdimb\Xhsize + \FR@iftwolevel + {\ifnum\floatbox@depth=\z@\Zhsize\Xhsize\else + \ifdim\Zhsize=\z@\Zhsize\Xhsize\sZhsize\Xhsize\fi + \FR@ifcountH{\global\advance\Zhsize-\count@\@tempdima}\relax + \fi}{\@tempdimb\Xhsize\Zhsize\Xhsize}% + \divide\@tempdimb#1\relax\FB@wd\@tempdimb +% \end{macrocode} +% Here goes recalculated |\hsize|. +% \begin{macrocode} + \hsize\@tempdimb\ignorespaces} +% \end{macrocode} +% Macro for float row end. +% \begin{macrocode} +\def\endfloatrow{\ifdim\lastskip>\z@\unskip\fi + \flrow@hbox@egroup%h box +% \end{macrocode} +% Material below. +% \begin{macrocode} + \@@FRbelow + \egroup%v box + \FR@frame{\box\flrow@rowbox}% + \egroup%frame set + \FRrightmargin\egroup%outer h box + \ifnum\floatbox@depth=\z@\vspace\FBbskip\fi +% \end{macrocode} +% The building of box of row of floats finished. +% Values of common heights and skips zeroed, default box settings restored. +% \begin{macrocode} + \gdef\FBaskip{\z@}\gdef\FBbskip{\z@}% + \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 +% |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 from \package{fr-subfig} +% in main package body} +% \begin{macrocode} +\newenvironment{subfloatrow}{\capsubrowsettings + \captionsetup{subtype}\@nameuse{subfloatrow*}}{\@nameuse{endsubfloatrow*}} +\newcommand\capsubrowsettings{\caption@setoptions{subfloatrow}\caption@setoptions{sub\@captype row}} +\newenvironment{subfloatrow*}[1][2]{\let\flrow@to\empty + \let\Xhsize\sXhsize%\let\Zhsize\sZhsize + \FR@ifunloc{\let\FR@ifcountH\@firstoftwo}\let\c@FRobj\c@FRsobj + \def\FRleftmargin{}\def\FRrightmargin{}\let\floatrowsep\subfloatrowsep + \floatrow[#1]\killfloatstyle}{\ifdim\lastskip>\z@\unskip\fi + \@ifundefined{adjustsubfloats}\relax\adjustsubfloats\endfloatrow} +% \end{macrocode} +% \end{environment} +% +% The definition of subfloat separator. +% \begin{macrocode} +\newcommand\subfloatrowsep{\hskip\columnsep} +% \end{macrocode} +% +% \begin{macrocode} +\@ifdefinable\FR@ifcountH{\let\FR@ifcountH\@firstoftwo} +\@ifdefinable\FR@ifunloc{\let\FR@ifunloc\@firstofone} +\@ifdefinable\FR@iftwolevel{\let\FR@iftwolevel\@secondoftwo} +\newcommand\CommonHeightRow{\@ifstar + {\let\FR@iftwolevel\@firstoftwo\CommonHeightRow@ + }{\let\FR@iftwolevel\@secondoftwo\CommonHeightRow@}} +% \end{macrocode} +% +% \begin{macrocode} +\newcommand\DefaultCommonHeight{25pt} +\newcommand\CommonHeight{\DefaultCommonHeight} +\newcommand\CommonHeightRow@[2][\DefaultCommonHeight]{\def\CommonHeight{#1}\setbox\z@ + \hbox{\FR@loc@\let\FR@ifunloc\@firstofone#2}% + \ifcase\floatbox@depth\def\@tempa{\Xhsize}\def\@tempb{\Zhsize}\or + \def\@tempa{\sXhsize}\def\@tempb{\Zhsize}\fi + \FR@calc@CommonHeight#2} +\@ifdefinable\FR@Zunitlength{\newdimen\FR@Zunitlength} +% \end{macrocode} +% The width of row, occupied by graphics divided in |1pt| segments. (To get |2pt| +% segment the |\count@| value must be divided by |131072|; +% to get |1pt| segment the |\count@| value must be divided by |65536|; +% to get |.5pt| segment the |\count@| value must be divided by |32768|.) +% \begin{macrocode} +\newcommand\FR@calc@CommonHeight{% + \@tempdima\@tempb\advance\@tempdima-\@tempa + \count@\@tempdima\relax\divide\count@16384\relax +% \end{macrocode} +% The same number of segments will be for the necessary width of graphics. +% The value of segment loaded in |\FR@Zunitlength| dimension. +% \begin{macrocode} + \divide\@tempb\count@\relax\FR@Zunitlength\@tempb\relax + \@tempdima\CommonHeight\relax +% \end{macrocode} +% Now divide |\CommonHeight| in |1pt| segments. +% \begin{macrocode} + \count@\@tempdima\relax\divide\count@16384\relax + \@tempdima\count@\FR@Zunitlength\relax +% \end{macrocode} +% And then these segments get value of |\FR@Zunitlength|. +% \begin{macrocode} + \edef\CommonHeight{\the\@tempdima}} +% \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 |floatrow|. +% \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} +% 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} +\def\newdimentocommand #1#2#3{% + #1\@tempdima{#3}\@ifdefinable#2{\xdef#2{\the\@tempdima}}} +\def\renewdimentocommand#1#2#3{% + #1\@tempdima{#3}\xdef#2{\the\@tempdima}} +\def\newskiptocommand #1#2#3{% + #1\@tempskipa{#3}\@ifdefinable#2{\xdef#2{\the\@tempskipa}}} +\def\renewskiptocommand #1#2#3{% + #1\@tempskipa{#3}\xdef#2{\the\@tempskipa}} +% \end{macrocode} +% The company to standard |\newlength| command. +% \begin{macrocode} +\def\newlengthtocommand{\newskiptocommand} +\def\renewlengthtocommand{\renewskiptocommand} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +%</floatrow> +% \end{macrocode} +% +% \begin{macrocode} +%<*floatsetup> +% \end{macrocode} +% +% \subsection{Float Settings Stuff} +% +% \FRorisubsubsection{Definitions Analogous to The \package{caption}'s Ones} +% +% +% \begin{macro}{\flrow@setbool} +% The next definition follows \package{caption} package macro +% to organize analogous mechanism of booleans. +% It uses |\caption@set@bool| macro. +% \changes{v0.2b}{2007/09/14}{The \cmd{\flrow@setbool}} +% \begin{macrocode} +\newcommand*\flrow@setbool[1]{% + \expandafter\caption@set@bool\csname FR@if#1\endcsname} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Defining Stuff for Float Layout Settings} +% +% \begin{macro}{\floatsetup} +% This macro analogous to |\captionsetup|. +% \begin{macrocode} +\def\floatsetup{\@ifnextchar[\flrow@setuptype\flrow@setup} +\def\flrow@setuptype[#1]#2{% + \@ifundefined{flrow@typ@#1}{\@namedef{flrow@typ@#1}{#2}}% + {\expandafter\l@addto@macro\csname flrow@typ@#1\endcsname{,#2}}} +% \end{macrocode} +% Setup for only following float. +% \begin{macrocode} +\newcommand\thisfloatsetup{\floatsetup[tmpset]} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\flrow@setup} +% \begin{macro}{\flrow@esetup} +% \begin{macro}{\flrow@settype} +% Macros analogous to |\caption@setup|, |\caption@esetup| and +% |\caption@setoptions|. Here is used the |\caption@setkeys| instead of |setkeys| +% to get correct error messages about misspelled keys. +% \begin{macrocode} +\def\flrow@setup{\caption@setkeys[floatrow]{floatrow}} +\def\flrow@esetup#1{% + \edef\FR@tmp{\noexpand\flrow@setup{#1}}\FR@tmp} +\def\flrow@settype#1{\@ifundefined{flrow@typ@#1}{}% + {\flrow@esetup{\csname flrow@typ@#1\endcsname}}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\flrow@setlist} +% \begin{macro}{\flrow@FClist} +% This macro declares list of float and caption settings (like |widefloat|, +% {rotfloat} etc.); the temporary settings created by |\thisfloatsetup| +% command are added at very end of the float +% settings list. The contents of temporary settings are emptied immediately after +% their first usage, so the second usage of emptied settings discard +% previously defined temporary definitions. +% But there are two points where the additional list of special settings is loaded: +% the floats with the option |[H]| and at the start of |floatrow| +% environment. In this cases is used starred form of |\flrow@setlist| +% without temporary settings (since they always will be loaded +% when floating environment is loaded or, in the case of usage +% outside floating environment, the |\floatbox| command is loaded). +% \changes{v0.3b}{2009/08/02}{Fixed bug of \cs{thisfloatsetup} usage} +% \begin{macrocode} +\newcommand\flrow@setlist{\@ifstar\flrow@setlist@@\flrow@setlist@} +\newcommand\flrow@setlist@[1]{\@flrow@setlist#1{tmpset};% + \FR@ifCST{\flrow@capsetup}\relax\@cap@setlist#1;% + \caption@setposition{\FBifcaptop tb}} +\newcommand\flrow@setlist@@[1]{\@flrow@setlist#1;% + \FR@ifCST{\flrow@capsetup}\relax\@cap@setlist#1;% + \caption@setposition{\FBifcaptop tb}} +\newcommand\@flrow@setlist[1]{\flrow@settype{#1}\@ifnextchar;\@gobble + \@flrow@setlist} +% \end{macrocode} +% The compatibility with both version of \package{caption} \texttt{3.0q} +% and new version \texttt{3.1} (code suggestions of Axel Sommerfeldt). +% \begin{macrocode} +\@ifundefined{caption@setoptions}{\let\caption@setoptions\caption@settype}{} +% \end{macrocode} +% The code of |\@cap@setlist| co-operated with \package{caption} package +% (code suggestions of Axel Sommerfeldt). +% \begin{macrocode} +\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}{\clearfloatsetup} +% Removes all settings for chosen type of float. The |\@nameundef| macro is +% defined in \package{caption}. +% \begin{macrocode} +\newcommand*\clearfloatsetup[1]{\@nameundef{flrow@typ@#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\DeclareFROpt} +% The |\DeclareCaptionOption|-analog.\\ +% Since this command has internal usage (before end of package) it has +% abbreviation-like name. +% \begin{macrocode} +\newcommand\DeclareFROpt{% + \@ifstar{\flrow@declopt\AtEndOfPackage} + {\flrow@declopt\@gobble}} +\newcommand*\flrow@declopt[2]{% + #1{\undefine@key{floatrow}{#2}}\define@key{floatrow}{#2}} +% \end{macrocode} +% These macros allowed only in preamble. +% \begin{macrocode} +\@onlypreamble\DeclareFROpt +\@onlypreamble\flrow@declopt +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{rawfloats} +% The default behavior of floats is like in \package{float}-like mode after +% |\restylefloat|. +% \begin{macrocode} +\@ifdefinable\FR@ifrawfloats{\let\FR@ifrawfloats\@secondoftwo} +% \end{macrocode} +% The boolean key which defines, whether floats run in plain \LaTeX{} mode. +% \begin{macrocode} +\DeclareFROpt*{rawfloats}[0]{\flrow@setbool{rawfloats}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{doublefloataswide} +% Starred environments work like non-starred with special |\floatsetup| settings. +% \begin{macrocode} +\@ifdefinable\FR@ifdoubleaswide{\let\FR@ifdoubleaswide\@secondoftwo} +% \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{doubleaswide}{#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} +\@ifdefinable\FR@iffloatHaslist{\let\FR@iffloatHaslist\@secondoftwo} +% \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{floatHaslist}{#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. +% There are also loaded the co-named caption settings, if exist. +% \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. The |plain| style is consists of default settings. +% \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} +% +% The default style settings. +% \changes{v0.2b}{2007/11/09}{The style with default settings added.} +% \begin{macrocode} +\DeclareFloatStyle{default}{% + style=plain,captionskip=10pt, + margins=centering,objectset=centering, + capbesideposition=left,facing=no, + floatrowsep=columnsep,capbesidesep=columnsep, + font=default,footfont=footnotesize} +% \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---|ruled|. +% \begin{macrocode} +\@ifdefinable\FR@ifCST{\let\FR@ifCST\@firstoftwo} +% \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{CST}{#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|). +% \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. +% \changes{v0.2d}{2009/05/24}{Defined using let to use that as flag} +% \begin{macrocode} +\@ifdefinable\floatfont{\let\floatfont\empty} +% \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 (uses +% caption's key-val settings).\\ +% It's usage:\\ +% |\DeclareFloatFont{|\meta{name}|}{|\meta{code}|}|. +% This macro is allowed only in preamble. +% \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.1p}{2007/06/24}{Changed definition of \cmd{\flrow@setfont} +% for compatibility with caption 3.1 (AS).} +% \begin{macrocode} +\newcommand*\flrow@setfont[2]{% + \caption@setfont{@tempa}{#2}% + \expandafter\let\csname float#1\endcsname\caption@tempa} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Declaring of Caption Position} +% +% \begin{macro}{capposition} +% Keys for defining caption position in float box. +% \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. +% \begin{macrocode} +\@ifdefinable\FBifcaptop{\let\FBifcaptop\@secondoftwo} +\newcommand\captop{\let\FBifcaptop\@firstoftwo} +\newcommand\capbot{\let\FBifcaptop\@secondoftwo} +% \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} +\@ifdefinable\FBifCAPTOP{\let\FBifCAPTOP\@secondoftwo} +\newcommand\CAPTOP{\captop\let\FBifCAPTOP\@firstoftwo\CADJtrue} +% \end{macrocode} +% In this case if you change contents of caption which could enlarge +% or reduce the number of lines, you ought to run \LaTeX{} twice. +% \end{macro} +% \end{macro} +% +% \begin{macro}{\FBifcapbeside} +% \begin{macro}{\capbeside} +% \begin{macro}{\nocapbeside} +% There is flag and commands for printing caption and object beside. +% \begin{macrocode} +\@ifdefinable\FBifcapbeside{}\let\FBifcapbeside\@secondoftwo +\newcommand\capbeside{\let\FBifcapbeside\@firstoftwo} +\newcommand\nocapbeside{\let\FBifcapbeside\@secondoftwo} +% \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. +% \begin{macrocode} +\DeclareFROpt{capbesideframe}[0]{\flrow@setbool{FCBOX}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{capbesidewidth} +% This key defines width of beside caption. +% \begin{macrocode} +\DeclareFROpt{capbesidewidth}[1]{\flrow@FCc@wd{#1}} +\@ifdefinable\FC@ifc@wd{\let\FC@ifc@wd\@secondoftwo} +\newcommand\useFCwidth{\let\FC@ifc@wd\@firstoftwo\let\FCwidth\relax} +\@ifdefinable\FCwidth{\let\FCwidth\relax} +\newcommand\flrow@FCc@wd[1]{% + \caption@ifinlist{#1}{none,sidefil}{\let\FC@ifc@wd\@secondoftwo + }{\useFCwidth\def\FCwidth{#1}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{capbesideposition} +% Declares position of beside caption in document. +% \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\FR@iffacing\@secondoftwo\count@\@ne}} +\DeclareSCPos{right}{\def\@FC@hpos{\let\FR@iffacing\@secondoftwo\count@\z@}} +\DeclareSCPos{inside}{\def\@FC@hpos{\let\FR@iffacing\@firstoftwo + \count@\c@FBcnt\ifnum\count@=\z@\count@\@ne\fi + }} +\DeclareSCPos{outside}{\def\@FC@hpos{\let\FR@iffacing\@firstoftwo + \count@\c@FBcnt\ifnum\count@=\z@\else\advance\count@\@ne\fi + }} +\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 default key: |capbesideposition=bottom| +% \begin{macrocode} +\newcommand*\@FC@vpos{\count@\tw@} +% \end{macrocode} +% Command for default key: |capbesideposition=left|. +% In version 0.2b of package it was |capbesideposition=inside|, since +% default key is |facing=no|, the +% |capbesideposition=inside| will be equal to |capbesideposition=left|. +% \begin{macrocode} +\newcommand*\@FC@hpos{\let\FR@iffacing\@secondoftwo\count@\@ne} +% \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. The fill skips for +% |c|enter and |s|tretch alignment were set in |\vss|-like mode. +% \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}{\FR@iffacing} +% \begin{macro}{facing} +% Defines, if necessary, flag for facing pages. +% \begin{macrocode} +\@ifdefinable\FR@iffacing{\let\FR@iffacing\@secondoftwo} +\DeclareFROpt{facing}[1]{\flrow@setbool{facing}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\FB@facing} +% Flag and command for |facing=|. +% \begin{macrocode} +\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. +% \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. We don't know whether \package{longtable} +% is loaded. Since in original package (till version v4.11) these skips +% were defined through |\newskip| command it is not harm to repeat this code +% for a while. +% \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@} +% \end{macrocode} +% +% \begin{macrocode} +\newskip\LTleft\newskip\LTright +\DeclareMarginSet{hangleft}{\setfloatmargins + {\hskip-\marginparwidth\hskip-\marginparsep\hskip\leftskip}{\hskip\rightskip}% + \LTleft-\marginparwidth\advance\LTleft-\marginparsep + \LTright=\fill} +\DeclareMarginSet{hangright}{\setfloatmargins + {\hskip\leftskip}{\hskip-\marginparwidth\hskip-\marginparsep\hskip\rightskip}% + \LTleft=\fill + \LTright-\marginparwidth\advance\LTright-\marginparsep} +\DeclareMarginSet{hanginside}{\setfloatmargins + *{\hskip-\marginparwidth\hskip-\marginparsep\hskip\leftskip}{\hskip\rightskip}% +% \end{macrocode} +% With the \texttt{hangoutside} and \texttt{hanginside} settings the usage of +% |longtable| environment looks absurdly. +% \begin{macrocode} + } +\DeclareMarginSet{hangoutside}{\setfloatmargins + *{\hskip\leftskip}{\hskip-\marginparwidth\hskip-\marginparsep\hskip\rightskip}% + } +% \end{macrocode} +% +% \begin{macrocode} +\newcommand\flrow@mj@default{\flrow@mj@centering} +% \end{macrocode} +% +% \begin{macro}{\floatfacing} +% Defines settings accordingly to left (even) or right (odd) pages. +% Starred from used for facing settings of float with beside captions. +% \begin{macrocode} +\newcommand\floatfacing{\@ifstar + {\@FC@hpos\floatfacing@}{\FB@facing\floatfacing@}} +\newcommand\floatfacing@[2]{\ifodd\count@#1\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. +% \begin{macrocode} +\newcommand\FB@mset{\@ifstar{\FB@mset@}{\FB@@mset}} +\newcommand\FB@mset@[2]{% + \def\FB@facing{\let\FR@iffacing\@firstoftwo\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. +% \begin{macrocode} +\DeclareFROpt{objectset}{\flrow@FBoAlign{#1}} +\DeclareFROpt{justification}{\flrow@FBoAlign{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\DeclareObjectSet} +% The |\DeclareCaptionJustification|-twin (uses +% caption's key-val settings).\\ +% Macros for float object's contents justification and |\floatbox| +% alignment. This macro is allowed only in preamble. +% \begin{macrocode} +\let\DeclareObjectSet\DeclareCaptionJustification +\@onlypreamble\DeclareObjectSet +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\flrow@FBoAlign} +% |\caption@setjustification|-analog (uses +% caption's key-val settings).\\ +% Command for |objectset=| +% \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 floating environments. +% \begin{macrocode} +\DeclareFROpt{floatwidth}{\flrow@FBo@wd{#1}} +\@ifdefinable\FC@ifo@fil{\let\FC@ifo@fil\@secondoftwo} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\filFCOhsize} +% \begin{macro}{\nofilFCOhsize} +% Flags and commands for |floatwidth=|. +% \begin{macrocode} +\newcommand\filFCOhsize{\let\FC@ifo@fil\@firstoftwo} +\newcommand\nofilFCOhsize{\let\FC@ifo@fil\@secondoftwo} +\newcommand\flrow@setwd{\relax} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\flrow@FBo@wd} +% Settings for the width of object. +% \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. +% \begin{macrocode} +\DeclareFROpt{floatrowsep}{\flrow@setFRsep\floatrowsep{#1}} +% \end{macrocode} +% Option |subfloatrowsep| sets separations for beside captions and objects. +% \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 |floatrow| environment and for beside +% object and caption. +% +% The |\DeclareCaptionLabelSeparator|-twin (uses +% caption's key-val settings).\\ +% This macro is allowed only in preamble. +% \begin{macrocode} +\let\DeclareFloatSeparators\DeclareCaptionLabelSeparator +\@onlypreamble\DeclareFloatSeparators +% \end{macrocode} +% +% The |\caption@setlabelseparator|-analog (uses +% caption's key-val settings).\\ +% Command which defines settings for separators in float row, and +% between beside caption and float object. +% \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. In float settings can be used the caption separators +% |quad| and |none|. +% \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). +% \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 +% \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\relax{\@nameuse{flrow@FBr@#3}}}% + \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. All settings localized---that allows +% usage |\floatbox| inside |\floatbox|. +% \begin{macrocode} +\newcommand\FBstyle@reset{\let\FRifFBOX\@secondoftwo\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\FR@frame{}% + \def\FBo@wadj{}\def\FBo@hadj{}\def\FB@wadj{}\def\FB@hadj{}\def\FR@wadj{}\def\FR@hadj{}} +\newcommand\@@FBskip{\vskip\captionskip} +\@ifdefinable\@@FRabove{\def\@@FRabove{}} +\@ifdefinable\@@FRbelow{\def\@@FRbelow{}} +\@ifdefinable\@@FBabove{\def\@@FBabove{}} +\@ifdefinable\@@FBbelow{\def\@@FBbelow{}} +\@ifdefinable\FB@frame {\def\FB@frame {}} +\@ifdefinable\FBo@frame{\def\FBo@frame{}} +\@ifdefinable\FR@frame {\def\FR@frame {}} +\@ifdefinable\FBo@wadj {\def\FBo@wadj {}} +\@ifdefinable\FBo@hadj {\def\FBo@hadj {}} +\@ifdefinable\FB@wadj {\def\FB@wadj {}} +\@ifdefinable\FB@hadj {\def\FB@hadj {}} +\@ifdefinable\FR@wadj {\def\FR@wadj {}} +\@ifdefinable\FR@hadj {\def\FR@hadj {}} +\@ifdefinable\FB@Bset {\def\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\@secondoftwo}{\let\FRifFBOX\@firstoftwo\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 |framearound|. +% \begin{macrocode} +\newcommand*\flrow@fr@round[1]{% + \caption@ifinlist{#1}{object,contents}{\let\FRifFBOX\@firstoftwo + \def\FB@BO@{FBo}% + }{\caption@ifinlist{#1}{floatbox,all}{\let\FRifFBOX\@firstoftwo + \def\FB@BO@{FB}% + }{\caption@ifinlist{#1}{row}{\let\FRifFBOX\@firstoftwo + \def\FB@BO@{FR}% + }{\caption@ifinlist{#1}{none}{\let\FRifFBOX\@secondoftwo + }{\flrow@error{Undefined framed object `#1'}% + }}}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{framefit} +% \begin{macro}{rowfill} +% \begin{macro}{frameset} +% This boolean key defines whether frame size fits to current |\hsize|. +% \begin{macrocode} +\@ifdefinable\FR@ifFIT{\let\FR@ifFIT\@secondoftwo} +\@ifdefinable\FR@ifROWFILL{\let\FR@ifROWFILL\@secondoftwo} +\DeclareFROpt{framefit}[0]{\flrow@setbool{FIT}{#1}} +\@ifdefinable\flrow@@setROWFILL{} +\@ifdefinable\flrow@leftfill{}\@ifdefinable\flrow@rightfill{} +% \end{macrocode} +% \begin{macrocode} +\DeclareFROpt{rowfill}[0]{\flrow@setbool{ROWFILL}{#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} +\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}{\FR@ifFIT{\@nameuse{FB@\FB@B@ @reset}\FB@Bset + \@nameuse{FB@\FB@B@ @adj}}\relax}% + \@namedef{\FB@BO@ @frame}{\@nameuse{FB@\FB@B@ @reset}\FB@Bset + \@nameuse{FB@\FB@B@ @frame}}% + \ifx\FR@frame\empty\else%\ifx\FB@frame\empty + \def\FB@hadj{\@nameuse{FB@\FB@B@ @reset}\FB@Bset + \@nameuse{FB@\FB@B@ @adj}}% + \def\FB@wadj{\FR@ifFIT{\@nameuse{FB@\FB@B@ @reset}\FB@Bset + \@nameuse{FB@\FB@B@ @adj}}\relax}% + \def\FB@frame{\@nameuse{FB@\FB@B@ @reset}\FB@Bset + \@nameuse{FB@\FB@B@ @frame}}% + \fi%\fi + } +% \end{macrocode} +% If box layout used. +% \begin{macrocode} +\@ifdefinable\FRifFBOX{\let\FRifFBOX\@secondoftwo} +% \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{% + \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep}\fbox{#1}% + \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep}}\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} +% +% \subsection{Macros for Color Frame} +% +% \begin{macro}{\FB@colorbox@frame} +% \begin{macro}{\FB@colorbox@adj} +% \begin{macro}{\FB@colorbox@reset} +% 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. +% \changes{v0.2b}{2007/11/09}{The \cmd{\setcolorframe} deleted.} +% \begin{macrocode} +\newcommand\FB@colorbox@frame[1]{\hbox{% + \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep}\FB@fcolorbox{#1}% + \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep}}\ignorespaces} +\@ifdefinable\FB@colorbox@adj{\let\FB@colorbox@adj\FB@fbox@adj} +\newcommand\FB@colorbox@reset{\fboxsep3\p@\fboxrule.4\p@} +\newcommand\FB@fcolorbox{\fbox} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\FB@FRcolorbox@frame} +% \begin{macro}{\FB@FRcolorbox@adj} +% \begin{macro}{\FB@FRcolorbox@reset} +% 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. +% \changes{v0.2b}{2007/11/09}{The \cmd{\setcolorframe} deleted.} +% \begin{macrocode} +\newcommand\FB@fcolorcorners{} +\@ifdefinable\FR@phantom{}\@ifdefinable\FRset@color{} +\newcommand\FB@FRcolorbox@frame[1]{\hbox{\let\color@block\FRcolor@block + \let\FR@phantom\@firstofone\let\FRset@color\set@color\FB@fcolorcorners + \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep}\FB@fcolorbox{#1}% + \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep}}\ignorespaces} +\@ifdefinable\FB@FRcolorbox@adj{\let\FB@FRcolorbox@adj\FB@fbox@adj} +\newcommand\FB@FRcolorbox@reset{\fboxsep3\p@\fboxrule.4\p@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\FB@corners@frame} +% \begin{macro}{\FB@corners@adj} +% \begin{macro}{\FB@corners@reset} +% 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. +% \changes{v0.2b}{2007/11/09}{The \cmd{\setcolorframe} deleted.} +% \begin{macrocode} +\newcommand\FB@corners@frame[1]{\hbox{\let\color@block\FRcolor@block + \let\FR@phantom\phantom\let\FRset@color\relax\FB@fcolorcorners + \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep}\colorbox{white}{#1}% + \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep}}\ignorespaces} +\@ifdefinable\FB@corners@adj{\let\FB@corners@adj\FB@fbox@adj} +\newcommand\FB@corners@reset{\fboxsep3\p@\fboxrule\z@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\flrow@l@color@side} +% \begin{macro}{\flrow@r@color@side} +% \begin{macrocode} +\newcommand\flrow@l@color@side[2]{{\let\unitlength\relax + \picture(\z@,\z@)(\z@,\z@) + \put(\z@,#1){{\flrow@ll@col@put}} + \put(\z@,#2){{\flrow@ul@col@put}} + \endpicture}} +\newcommand\flrow@r@color@side[2]{{\let\unitlength\relax + \picture(\z@,\z@)(\z@,\z@) + \put(\z@,#1){{\flrow@lr@col@put}} + \put(\z@,#2){{\flrow@ur@col@put}} + \endpicture}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\flrow@ll@col@put} +% \begin{macro}{\flrow@ul@col@put} +% \begin{macro}{\flrow@lr@col@put} +% \begin{macro}{\flrow@ur@col@put} +% \begin{macrocode} +\newcommand\flrow@ll@col@put{} +\newcommand\flrow@ul@col@put{} +\newcommand\flrow@lr@col@put{} +\newcommand\flrow@ur@col@put{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\flrow@cboxcorners} +% User command. The (rule) material placed on the corners of the frame. The order of corners +% is similar to corners of the label box (|bbox|) in METAPOST picture. +% \begin{macrocode} +\newcommand\flrow@cboxcorners[4]{% + \def\flrow@ll@col@put{#1}% + \def\flrow@lr@col@put{#2}% + \def\flrow@ur@col@put{#3}% + \def\flrow@ul@col@put{#4}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\flrow@ur@col@put} +% \begin{macrocode} +\newcommand\FRcolorboxwd{\z@} +\newcommand\FRcolorboxht{\z@} +\newcommand\FRcolorboxdp{\z@} +\def\FRcolor@block#1#2#3{% + {\FRset@color + \rlap{\@tempdima#1\edef\FRcolorboxwd{\the\@tempdima}\@tempdima#2\advance\@tempdima#3% + \edef\FRcolorboxht{\the\@tempdima}\@tempdima#3\edef\FRcolorboxdp{\the\@tempdima}% + \ifcolors@\else\let\FR@phantom\phantom\fi + \flrow@l@color@side{-\FRcolorboxdp}{\FRcolorboxht}% + \FR@phantom{\vrule\@width#1\@height#2\@depth#3}% + \flrow@r@color@side{-\FRcolorboxdp}{\FRcolorboxht}% + }}} +% \end{macrocode} +% \end{macro} +% +% This key defines parameters (definition) for color frame. +% \begin{macrocode} +\DeclareFROpt{colorframeset}{\flrow@fcolorbox{#1}} +\DeclareFROpt{colorframecorners}{\flrow@fcolorcorners{#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*\flrow@fcolorcorners[1]{% + \@ifundefined{flrow@fcolorcorners@#1}% + {\flrow@error{Undefined color box corners `#1'}}% + {\expandafter\let\expandafter\FB@fcolorcorners + \csname flrow@fcolorcorners@#1\endcsname}} +\newcommand*\DeclareColorBox[2]{% +% \@ifundefined{color}{\flrow@error +% {For usage of colored frames\MessageBreak load color package}}% +% {\long\@namedef{flrow@fcolorbox@#1}{#2}}} + \@ifundefined{color}{}{\let\flrow@load@colorpackage\relax + \long\@namedef{flrow@fcolorbox@#1}{#2}}} +\newcommand*\DeclareCBoxCorners[5]{% + \@ifundefined{color}{}{\let\flrow@load@colorpackage\relax + \long\@namedef{flrow@fcolorcorners@#1}{\flrow@cboxcorners{#2}{#3}{#4}{#5}}}} +\@onlypreamble\DeclareColorBox +\@onlypreamble\DeclareCBoxCorners +\newcommand\flrow@load@colorpackage{\IfFileExists{color.sty}% + {\def\next{\RequirePackage{color}}}{\let\next\relax}\next} +\AtBeginDocument{\flrow@load@colorpackage\let\flrow@load@colorpackage\relax} +% \end{macrocode} +% +% \subsubsection{Defining Float Skips} +% +% \begin{macro}{captionskip} +% \begin{macro}{footskip} +% The following options define skips: first---between float object and +% caption (if it used in float style); second---before foot material +% (footnote or other foot text). The |\abovecaptionskip| used for compatibility with caption. +% \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 floating 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} +\@ifdefinable\FR@iffancy{\let\FR@iffancy\@secondoftwo} +\DeclareFROpt{fancyboxes}{\flrow@setbool{fancy}{#1}} +% \end{macrocode} +% +% \subsubsection{New Float Type Setup} +% +% \begin{macro}{\DeclareFNOpt} +% Declaring new float type like |\newfloat| does. +% These macros allowed only in preamble. +% \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} +% \changes{v0.2b}{2007/09/24}{\cmd{\flnew@setdefault} removed.} +% +% The |\newtoks| for defining of floating 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).} +% \changes{v0.2b}{2007/09/24}{Defined default extension of list file in the same way as caption's +% \cmd{\DeclareFloatingEnvironment}.} +% \changes{v0.2b}{2007/09/24}{The definition of list entry layout moved here.} +% \changes{v0.2b}{2007/09/24}{Corrected bugs with listof file and \cmd{\fps@}\meta{float type} commands.} +% \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\nobreakspace + \expandafter\noexpand\csname the#1\endcsname}% + \@namedef{the#1}{\arabic{#1}}\flnew@ext{lo#1}\@namedef{fps@#1}{tbp}% + \@namedef{l@#1}{\@dottedtocline{1}{1.5em}{2.3em}}% + \caption@setkeys[floatrow]{newfloat}{#2}\let\FR@tmp=\relax + \xdef\@tempa{\noexpand\flrow@types{\the\flrow@types \FR@tmp{#1}}}% + \@tempa} +\@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} +% +%\changes{v0.2b}{2007/10/24}{The double definition of `relatedcapstyle' option deleted} +% +% \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}}\relax +\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 + }{\flrow@restyle{table}\flrow@restyle{figure}% + \let\FR@tmp\flrow@restyle + }\the\flrow@types + \@onlypreamble\flrow@restyle\@onlypreamble\flrow@Raw@restyle + \flrow@types={}} +% \end{macrocode} +% +% \begin{macrocode} +%</floatsetup> +% \end{macrocode} +% +% \begin{macrocode} +%<*frfancy> +\RequirePackage{fancybox} +% \end{macrocode} +% +% \subsection{Additional Definitions for Fancy Frames} +% +% \FRorisubsubsection{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{% + \FR@ifFIT\relax{\hskip-\fboxrule\hskip-\fboxsep}\FBs@raise{\shadowbox{#1}}% + \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep\kern-\shadowsize}}} +\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 |wshadowbox|---similar to +% |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{% + \FR@ifFIT\relax{\hskip-\fboxrule\hskip-\fboxsep}\FBs@raise{\wshadowbox{#1}}% + \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep\kern-\shadowsize}}} +\@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{% + \FR@ifFIT\relax{\kern-4.75\fboxrule\kern-.5pt\kern-\fboxsep}\doublebox{#1}% + \FR@ifFIT\relax{\kern-4.75\fboxrule\kern-.5pt\kern-\fboxsep}}} +\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} +%</frfancy> +% \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} +% The |\@chkfloatpage| added at as a patch at the very beginning of +% current definition of |\@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} +%</floatpagestyle> +% \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} +% \begin{macro}{\RemoveSpaces} +% A simple command to turn off |\if@nobreak| flag. +% \begin{macrocode} +\newcommand\RestoreSpaces{\@nobreakfalse} +% \end{macrocode} +% Opposite command. Turns on |\if@nobreak| flag. +% \begin{macrocode} +\newcommand\RemoveSpaces {\@nobreaktrue} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\newseparatedlabel} +% \begin{macro}{\newseparatedref} +% \begin{macro}{\makelabelseparator} +% A simple command to create combined label in `label\meta{sep}sublabel' variant. +% \begin{macrocode} +\newcommand\newseparatedlabel[3]{% + \@ifdefinable#1{% + \def#1##1{\protected@edef\@currentlabel{\string + \LP@label@sep {\csname the#3\endcsname}}\label{sub##1}% + \protected@edef\@currentlabel{\csname the#2\endcsname + \string\LP@label@sep {\csname the#3\endcsname}}\label{##1}}}} +% \end{macrocode} +% Command which switch on the necessary \meta{sep}. +% \begin{macrocode} +\newcommand\newseparatedref[2]{\@ifdefinable#1{\def#1##1{{\def\LP@label@sep{#2}\ref{##1}}}}} +% \end{macrocode} +% The definition-check of existence of command name, which will be used for separator. +% The second command defines this label separator globally. +% \begin{macrocode} +\@ifdefinable\LP@label@sep{} +\newcommand\makelabelseparator[1]{\def\LP@label@sep{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +%</listpen> +% \end{macrocode} +% +% +% +% +% \begin{macrocode} +%<*floatrow> +\AtBeginDocument{% +\@ifundefined{sf@@@subfloat}{\@tempswafalse}{\@tempswatrue} +\if@tempswa\RequirePackage{fr-subfig}\fi} +%</floatrow> +% \end{macrocode} +% +% \begin{macrocode} +%<*frforsubfig> +% \end{macrocode} +% +% \subsection{Support for The \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. +% \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 The \package{subfig} Macro} +% +% There is a \package{subfig}'s macro with corrections wich allow 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 +% |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{} +\@ifundefined{newseparatedlabel}\@tempswatrue\@tempswafalse +\if@tempswa + \def\FRsf@Flabel{\label} +\else + \newseparatedlabel\FRsf@Flabel{\@captype}{sub\@captype} +\fi +\def\flrow@@subfloatlabel[#1][#2]{% + \subfloat[]{\FRsf@Flabel{#2}}\endgroup} +% \end{macrocode} +% +% \begin{macrocode} +%</frforsubfig> +% \end{macrocode} +% +% +% +% +% \begin{macrocode} +%<*floatrow> +\AtBeginDocument{% +\@ifundefined{LT@array}{\@tempswafalse}{\@tempswatrue} +\if@tempswa\RequirePackage{fr-longtable}\fi} +%</floatrow> +% \end{macrocode} +% +% \begin{macrocode} +%<*forlongtable> +% \end{macrocode} +% +% \subsection{Support for The \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} +% +% 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} +\@ifdefinable\flrow@oriLT@array{\let\flrow@oriLT@array\LT@array} +\renewcommand\LT@array{% +% \end{macrocode} +% Here are added settings for table font (similar to other table +% environments) skip after caption (\cmd{\belowcaptionskip} is set +% equal to \cmd{\captionskip}). +% \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}}% +% \end{macrocode} +% Definition for table foot +% material (\cmd{\floatfoot}). +% \begin{macrocode} + \def\floatfoot@{\vskip\floatfootskip + \def\@captype{table}\floatfoot@box}% +% \end{macrocode} +% At last goes \package{longtable}'s macro itself. +% \begin{macrocode} + \flrow@oriLT@array} +% \end{macrocode} +% The repeated definitions in the case of separate usage of \package{fr-longtable} package. +% \begin{macrocode} +\providecommand\floatfont{} +\providecommand\floatfootskip{\skip\@mpfootins} +\providecommand\captionskip{10\p@} +\providecommand\floatfoot@box[1]{% +% \end{macrocode} +% The |\if@@FS| flag stored for |wrap...| environments. +% \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. +% \begin{macrocode} + \captionsetup{labelformat=empty,labelsep=none}% + \caption@@make{}{\FR@tmp#1\@finalstrut\strutbox}% + \color@endgroup} +% \end{macrocode} +% +% The definition of caption width for |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} +% \end{macrocode} +% +% \begin{macrocode} +\newcommand*\flrow@useLTcapwidth{} +% \end{macrocode} +% +% \begin{macrocode} +\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{table}{\setLTcapwidth{table}} + \ProcessOptions + } + {\DeclareOption{LTcapwidthtotable}{\setLTcapwidth{table}} + \DeclareOption{table}{\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} +% +% Storing of original definition of |\longtable| macro. +% In the new definition was added counting of |longtable|'s pages +% with |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 |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 + \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} +%</forlongtable> +% \end{macrocode} +% +% +% \Finale +\endinput |