Add compiled versions of the examples along with our useful files
[drexel-thesis.git] / floatrow.sty
1 %%
2 %% This is file `floatrow.sty',
3 %% generated with the docstrip utility.
4 %%
5 %% The original source files were:
6 %%
7 %% floatrow.dtx  (with options: `floatrow,floatsetup')
8 %% 
9 %% IMPORTANT NOTICE:
10 %% 
11 %% For the copyright see the source file.
12 %% 
13 %% Any modified versions of this file must be renamed
14 %% with new filenames distinct from floatrow.sty.
15 %% 
16 %% For distribution of the original source see the terms
17 %% for copying and modification in the file floatrow.dtx.
18 %% 
19 %% This generated file may be distributed as long as the
20 %% original source files, as listed above, are part of the
21 %% same distribution. (The sources need not necessarily be
22 %% in the same archive or directory.)
23 \NeedsTeXFormat{LaTeX2e}[1995/06/01]
24 \ProvidesPackage{floatrow}
25        [2008/08/02 v0.3b floatrow: float package extension]
26 \@ifundefined{float@caption}{%
27   \@ifundefined{rotfloat@float}{}%
28     {\PackageError{floatrow}{Do not use rotfloat package with floatrow.\MessageBreak
29         The latter will be skipped}{}%
30   \@namedef{opt@floatrow.sty}{}\endinput}}%
31   {\PackageError{floatrow}{Do not use float package with floatrow.\MessageBreak
32         The latter will be skipped}{}%
33   \@namedef{opt@floatrow.sty}{}\endinput}
34 \@namedef{ver@float.sty}{2001/11/08 v1.3d (excerpt)
35     Float enhancements (AL)}
36 \@namedef{ver@rotfloat.sty}{2004/01/04 v1.2 (excerpt)
37     Combining float+rotating package (AS)}
38 \RequirePackage{keyval}
39 \RequirePackage{caption3}
40 \@ifpackagelater{caption3}{2007/04/11 v3.0q}{}{\PackageError
41     {floatrow}{For a successful cooperation we need at least\MessageBreak
42     version `2007/04/11 v3.0q' of package caption,\MessageBreak
43         but only version\MessageBreak
44           `\csname ver@caption.\@pkgextension\endcsname'\MessageBreak
45         is available}\@eha\endinput}
46 \providecommand*\caption@fnum[1]{%
47    \caption@lfmt{\@nameuse{#1name}}{\@nameuse{the#1}}}
48 \@ifdefinable\FR@flboxreset{\let\FR@flboxreset\@floatboxreset}
49 \@ifdefinable\FR@makecaption{\let\FR@makecaption\@makecaption}
50 \newcommand\flrow@caption{%
51    \ifx\@captype\@undefined
52      \@latex@error{\noexpand\caption outside float}\@ehd
53      \expandafter\@gobble
54    \else
55      \refstepcounter\@captype
56      \expandafter\@firstofone
57    \fi
58    {\@dblarg{\@caption\@captype}}%
59 }
60 \@ifdefinable\float@caption{\let\float@caption\@caption}
61 \newcounter{float@type}
62 \@ifundefined{c@figure}%
63   {\setcounter{float@type}{1}}%
64   {\setcounter{float@type}{4}}
65 \newcommand\flrow@package{floatrow}
66 \newcommand*\flrow@error[1]{\PackageError\flrow@package{#1}\flrow@eh}
67 \newcommand*\flrow@eh{%
68   If you do not understand this error, please take look\MessageBreak
69   at `floatrow' and `caption' package documentations.\MessageBreak
70   \@ehc}
71 \newcommand\floatstyle[1]{\@ifundefined{flrow@sty@#1}%
72   {\flrow@error{Unknown float style `#1'}}{\edef\float@style{#1}}}
73 \newcommand\floatname[2]{\@namedef{#1name}{#2}}
74 \newcommand\floatplacement[2]{\@namedef{fps@#1}{#2}}
75 \newif\if@@FS
76 \newcommand\FR@redefs{%
77   \@ifundefined{HyOrg@float@makebox}{}%
78     {\let\float@makebox\HyOrg@float@makebox}%
79   \ifx\flrow@makecaption\@makecaption\relax
80   \else
81     \let\FR@makecaption\@makecaption
82     \let\@makecaption\flrow@makecaption
83   \fi
84   \let\@floatboxreset\flrow@flboxreset}
85 \newcommand\flrow@makecaption[2]{\ifnum\floatbox@depth=\z@
86     \ifvoid\@floatcapt
87       \else\flrow@error{Caption(s) lost}\fi\fi
88   \global\setbox\@floatcapt
89   \vbox\bgroup\@parboxrestore
90    \reset@font
91    \if@@FS
92       \ifdim\FBc@wd>\z@
93         \hsize\FBc@wd
94       \else
95         \adj@dim\hsize+\FBo@wadj=\hsize
96       \fi
97    \fi
98    \linewidth\hsize
99    \ifdim\hsize<70mm\sloppy\fi
100    \normalsize
101    \abovecaptionskip\z@\belowcaptionskip\z@
102    \FR@makecaption{#1}{#2}\egroup}
103 \newcommand\killfloatstyle{\FBbuildtrue\if@@FS\hsize\FB@wd\fi\@@FSfalse}
104 \newcommand\flrow@capsetup{}
105 \edef\float@style{plain}
106 \@ifdefinable\FBB@wd{\let\FBB@wd\relax}
107 \newcommand\restylefloat{%
108    \@ifstar{\flrow@restylefloat{no}\flrow@restyle}%
109      {\flrow@restylefloat{yes}\flrow@restyle}}
110 \newcommand\flrow@restylefloat[3]{%
111    \edef\FR@tmp{\noexpand
112      \floatsetup[#3]{style=\float@style,relatedcapstyle=#1}}\FR@tmp
113    #2{#3}}
114 \newcommand\flrow@restyle[1]{%
115   \@namedef{#1}{\killfloatstyle\def\@captype{#1}\FR@redefs
116     \flrow@setlist{{#1}}%
117     \textwidth\columnwidth\edef\FBB@wd{\the\columnwidth}%
118     \FRifFBOX\@@setframe\relax\@@FStrue\@float{#1}}%
119   \@namedef{#1*}{\killfloatstyle\def\@captype{#1}\FR@redefs
120     \flrow@setlist{{#1}{widefloat}{wide#1}}%
121     \FRifFBOX\@@setframe\relax\@@FStrue\edef\FBB@wd{\the\textwidth}%
122     \let\@xdblfloat\@xfloat\relax
123     \FR@ifdoubleaswide
124      {\if@twocolumn\else\let\@dblfloat\@float\fi}\relax
125     \@dblfloat{#1}}%
126   \expandafter\let\csname end#1\endcsname\float@end
127   \expandafter\let\csname end#1*\endcsname\float@dblend
128  \@ifundefined{@rotfloat}{}{%
129   \@namedef{sideways#1}{\killfloatstyle\def\@captype{#1}\FR@redefs
130     \flrow@setlist{{#1}{rotfloat}{rot#1}}%
131     \columnwidth\textheight\edef\FBB@wd{\the\textheight}%
132     \FRifFBOX\@@setframe\relax\@@FStrue
133     \let\rotfloat@@makebox\float@makebox
134     \let\float@makebox\rotfloat@makebox
135     \@float{#1}}%
136   \@namedef{endsideways#1}{\FBbuildtrue\float@end}
137   \ifx\@rotdblfloat\undefined
138    \@namedef{sideways#1*}{%
139      \flrow@error{%
140       You need rotating version 2.10 or newer to do this}%
141      \@nameuse{sideways#1}}%
142   \else
143    \@namedef{sideways#1*}{\killfloatstyle\def\@captype{#1}\FR@redefs
144      \flrow@setlist{{#1}{rotfloat}{rot#1}{widerotfloat}{widerot#1}}%
145      \columnwidth\textheight\edef\FBB@wd{\the\textheight}%
146      \FRifFBOX\@@setframe\relax\@@FStrue
147      \let\@xdblfloat\@xfloat
148      \let\rotfloat@@makebox\float@makebox
149      \let\float@makebox\rotdblfloat@makebox
150      \@dblfloat{#1}}%
151   \fi
152   \@namedef{endsideways#1*}{\FBbuildtrue\float@dblend}}
153  \@ifundefined{wrapfloat}{}{%
154    \@ifundefined{flrow@WF@rapt}{\let\flrow@WF@rapt\WF@rapt
155    \def\WF@rapt[##1]##2{\FRifFBOX\@@setframe\relax\@@FStrue
156      \dimen@##2\relax
157      \ifdim\dimen@>\z@
158        \edef\FBB@wd{\the\dimen@}\FB@fs@wd\dimen@\FBo@wd
159      \fi
160      \flrow@WF@rapt[##1]{\dimen@}%
161        \the\FR@everyfloat\ignorespaces}%
162    }{}%
163    \@namedef{wrap#1}{\killfloatstyle\def\@captype{#1}%
164      \FR@redefs\FBc@wd\z@
165      \flrow@setlist{{#1}{wrapfloat}{wrap#1}}%
166      \def\WF@floatstyhook{\let\@currbox\WF@box
167        \ifFBbuild
168          \global\setbox\WF@box\flrow@FB{\wd\WF@box}%
169        \else
170          \global\let\flrow@typ@tmpset\undefined
171          \global\let\WF@box\@currbox
172        \fi}%
173      \@ifnextchar[\WF@wr{\WF@wr[]}}%]
174    \@namedef{endwrap#1}{\endwrapfloat
175      \@ifundefined{FloatHBarrier}{}\FloatHBarrier
176      }}
177  \@ifundefined{sf@@@subfloat}{}{\@ifundefined{c@sub#1}{\newsubfloat{#1}}{}}}
178 \newcommand\RawFloats{\@ifnextchar[%]
179     \flrow@rawfloatschk\flrow@rawfloats}
180 \newcommand\flrow@rawfloats{\killfloatstyle\@parboxrestore
181     \let\@makecaption\FR@makecaption
182     \expandafter\ifx\csname end\@captype\endcsname\float@endH
183         \global\FBbuildfalse
184     \else
185         \@namedef{end\@captype}{\end@float}%
186     \fi
187     \expandafter\ifx\csname end\@captype*\endcsname\float@endH
188         \global\FBbuildfalse
189     \else
190         \@namedef{end\@captype*}{\end@dblfloat}%
191     \fi
192   \@ifundefined{@rotfloat}{}{%
193     \@namedef{endsideways\@captype}{\end@rotfloat}%
194     \@namedef{endsideways\@captype*}{\end@rotdblfloat}%
195   }%
196   \@ifundefined{wrapfloat}{}{%
197     \@namedef{endwrap\@captype}{\endwrapfloat}%
198   }}
199 \@ifdefinable\flrow@rawfloatschk{}
200 \def\flrow@rawfloatschk[#1]{\@ifnextchar[%]
201     {\flrow@RawFloats[#1]}{\flrow@@RawFloats#1,;}}
202 \@ifdefinable\flrow@RawFloats{}
203 \newcommand\flrow@raw@set{\AtBeginDocument}
204 \AtBeginDocument{\let\flrow@raw@set\@firstofone}
205 \def\flrow@RawFloats[#1][#2]{\flrow@RawFloats@[#1]#2,;}
206 \def\flrow@RawFloats@[#1]#2,{%
207   \caption@ifinlist{#2}{float}{\flrow@raw@set
208         {\@namedef{#1}{\@float{#1}}}%
209   }{\caption@ifinlist{#2}{widefloat}{\flrow@raw@set%
210         {\@namedef{#1*}{\let\@xdblfloat\@xfloat\@dblfloat{#1}}}%
211   }{\caption@ifinlist{#2}{rotfloat}{%
212     \@ifundefined{@rotfloat}{}{\flrow@raw@set
213         {\@namedef{sideways#1}{\@rotfloat{#1}}}}%
214   }{\caption@ifinlist{#2}{widerotfloat}{%
215     \@ifundefined{@rotfloat}{}{\flrow@raw@set
216         {\@namedef{sideways#1*}{\@rotdblfloat{#1}}}}%
217   }{\caption@ifinlist{#2}{wrapfloat}{%
218     \@ifundefined{wrapfloat}{}{\flrow@raw@set
219         {\@namedef{wrap#1}{\wrapfloat{#1}}}}}%
220   }{\caption@ifinlist{#2}{all,allfloats}{%
221     \flrow@@RawFloats{#1}%
222   }{\flrow@error{Undefined float subtype `#2'}%
223   }}}}}\@ifnextchar;\@gobble{\flrow@RawFloats@[#1]}}
224 \@ifdefinable\flrow@@RawFloats{}
225 \def\flrow@@RawFloats#1,{%
226  \flrow@raw@set{\@namedef{#1}{\@float{#1}}%
227     \@namedef{#1*}{\let\@xdblfloat\@xfloat\@dblfloat{#1}}%
228   \@ifundefined{@rotfloat}{}{%
229     \@namedef{sideways#1}{\@rotfloat{#1}}%
230     \@namedef{sideways#1*}{\@rotdblfloat{#1}}%
231   }%
232   \@ifundefined{wrapfloat}{}{%
233     \@namedef{wrap#1}{\wrapfloat{#1}}}%
234   }\@ifnextchar;\@gobble\flrow@@RawFloats
235 }
236 \newcommand\flrow@Raw@restyle[1]{%
237     \@namedef{#1}{\@float{#1}}%
238     \@namedef{#1*}{\@dblfloat{#1}}%
239     \@namedef{end#1}{\end@float}%
240     \@namedef{end#1*}{\end@dblfloat}%
241   \@ifundefined{@rotfloat}{}{%
242     \@namedef{sideways#1}{\@rotfloat{#1}}%
243     \@namedef{sideways#1*}{\@rotdblfloat{#1}}%
244     \@namedef{endsideways#1}{\end@rotfloat}%
245     \@namedef{endsideways#1*}{\end@rotdblfloat}%
246   }%
247   \@ifundefined{wrapfloat}{}{%
248     \@namedef{wrap#1}{\wrapfloat{#1}}%
249     \@namedef{endwrap#1}{\endwrapfloat}%
250   }%
251  }
252 \newcommand\RawCaption[1]{{\let\@makecaption\FR@makecaption #1}}
253 \@ifdefinable\float@exts{\newtoks\float@exts}
254 \newcommand\newfloat{\@ifstar{\flrow@restylefloat{no}\newfloat@}%
255    {\flrow@restylefloat{yes}\newfloat@}}
256 \newcommand\newfloat@[3]{\@ifnextchar[{\@@newfloat{#1}{#2}{#3}}%
257   {\@newfloat{#1}{#2}{#3}}}
258 \newcommand\@newfloat[3]{%
259   \DeclareNewFloatType{#1}{placement=#2,fileext=#3}}
260 \@ifdefinable\@@newfloat{}
261 \def\@@newfloat#1#2#3[#4]{%
262   \DeclareNewFloatType{#1}{placement=#2,fileext=#3,within=#4}}
263 \let\@float@Hx\@xfloat
264 \def\@xfloat#1[{\@ifnextchar{H}{\@float@HH{#1}[}{\@float@Hx{#1}[}}
265 \AtBeginDocument{%
266   \@ifundefined{latex@xfloat}{}{%
267     \let\floatrow@ORI@xfloat\@xfloat
268     \def\@xfloat#1[#2]{%
269       \floatrow@ORI@xfloat{#1}[#2]%
270       \floatfont}}}%
271 \newsavebox\float@box
272 \def\@float@HH#1[H]{%
273   \@ifundefined{FloatHBarrier}{}\FloatHBarrier
274   \expandafter\let\csname end#1\endcsname\float@endH
275   \FR@ifdoubleaswide
276    {\expandafter\let\csname end#1*\endcsname\float@endH}\relax
277   \let\@currbox\float@box
278   \flrow@setlist*{{floatH}{#1H}}%
279   \def\@captype{#1}%\setbox\@floatcapt=\vbox{}%
280   \setbox\@currbox\color@vbox\normalcolor
281     \vbox\bgroup
282       \hsize\columnwidth
283       \linewidth\columnwidth
284       \@parboxrestore\leftmargin\z@\rightmargin\z@
285       \@floatboxreset \@setnobreak
286   \ignorespaces}
287 \newcommand\flrow@flboxreset{\FR@flboxreset
288   \@ifundefined{capstart}{}{\capstart}%
289   \FB@facing\@tempswafalse\FR@iffacing\@tempswatrue\relax
290   \if@tempswa\FB@readaux{\relax}\fi
291   \global\let\FBcheight\relax\global\let\FBoheight\relax
292   \global\let\FBfheight\relax
293   \FBifcapbeside\FC@fs@wd\FB@fs@wd
294   \the\FR@everyfloat}
295 \@ifdefinable\FBcheight{\let\FBcheight\relax}
296 \@ifdefinable\FBoheight{\let\FBoheight\relax}
297 \@ifdefinable\FBfheight{\let\FBfheight\relax}
298 \newcommand\FB@fs@wd{\@tempdima\FBB@wd
299   \flrow@setwd\textwidth\@tempdima
300   \adj@dim\@tempdima-\FB@wadj=\@tempdima
301   \settowidth\@tempdimb{{\FBleftmargin}{\FBrightmargin}}%
302   \advance\@tempdima-\@tempdimb
303   \global\FBc@wd\@tempdima\global\FB@wd\@tempdima
304   \adj@dim\@tempdima-\FBo@wadj={\global\FBo@wd}%
305   \hsize\FBo@wd\linewidth\hsize
306   \FBifcaptop
307     {\ifnum\FPOScnt=\z@\columnwidth\hsize\else\columnwidth\FBc@wd\fi}%
308     {\columnwidth\FBc@wd}%
309   }
310 \newcommand\FC@fs@wd{\@tempdima\FBB@wd\flrow@FClist
311   \settowidth\@tempdimb{{\FCleftmargin}{\FCrightmargin}}%
312   \advance\@tempdima-\@tempdimb
313   \adj@dim\@tempdima-\FB@wadj=\@tempdima
314   \settowidth\@tempdimb{{\floatcapbesidesep}}%
315   \advance\@tempdima-\@tempdimb
316   \FC@ifc@wd\@tempswatrue\@tempswafalse
317   \if@tempswa
318      \ifx\FCwidth\relax
319         \flrow@error{You didn't define width of caption\MessageBreak
320           for plain floating environment.}%
321      \else
322         \global\FBc@wd=\FCwidth
323         \FC@ifo@fil{\advance\@tempdima-\FBc@wd}\relax
324      \fi
325   \else
326     \global\FBc@wd\@tempdima
327   \fi
328   \FC@ifo@fil\relax{\@tempdima.5\@tempdima
329     \flrow@setwd\FB@wd\@tempdima}%
330   \adj@dim\@tempdima-\FBo@wadj={\global\FBo@wd}%
331   \FC@ifc@wd\relax{\global\advance\FBc@wd-\FB@wd}%
332   \hsize\FBo@wd\linewidth\hsize\columnwidth\FBc@wd\linewidth\hsize
333   \FCset@vpos}
334 \newcommand\float@makebox[1]{%
335   \FBifcapbeside{\flrow@FC{#1}}{\flrow@FB{#1}}}
336 \newcommand\FBaskip{\z@}\newcommand\FBbskip{\z@}
337 \newif\ifFBbuild\FBbuildtrue
338 \newcommand\flrow@FB[1]{\vbox{\@tempdima=#1\vskip\FBaskip
339   \@parboxrestore\leftmargin\z@\rightmargin\z@
340   \hbox to\@tempdima{\def\FB@zskip{\vskip\z@}%
341   \FBleftmargin\flrow@FB@\FBrightmargin}%
342   \FR@iffacing{\FB@writeaux{\string\global\string\c@FBcnt\thepage}}\relax
343   \gdef\begin@FBBOX{\vbox\bgroup}\gdef\end@FBBOX{\egroup}%
344   \vskip\FBbskip\gdef\FBaskip{\z@}\gdef\FBbskip{\z@}}}
345 \newcommand\flrow@FC[1]{\vbox{\@tempdima=#1\@parboxrestore
346   \leftmargin\z@\rightmargin\z@\flrow@FClist\vskip\FBaskip
347   \hbox to\@tempdima{\FCleftmargin\flrow@FC@\FCrightmargin}%
348   \FR@iffacing{\FB@writeaux{\string\global\string\c@FBcnt\thepage}}\relax
349   \nocapbeside\global\let\FCwidth\relax
350   \vskip\FBbskip\gdef\FBaskip{\z@}\gdef\FBbskip{\z@}}}
351 \newcommand\FCc@box[1]{\def\@parboxto{}\FC@bbox#1\FC@ebox}
352 \newcommand\FC@bbox{\vbox\@parboxto\bgroup}
353 \newcommand\FC@ebox{\vskip\z@\egroup}
354 \newcommand\FCo@box[1]{\def\@parboxto{}\ifx\FBoheight\relax\FC@bbox\else
355   \def\@parboxto{to\FBoheight}\FC@bbox\vsize\FBoheight\fi#1\FC@ebox}
356 \newcommand\FBafil{\vfill}\newcommand\FBbfil{\vfill}
357 \newcommand\FBw@box[1]{\hsize#1\columnwidth#1\linewidth#1%
358   \normalfont\normalcolor}
359 \newcommand\FB@vbox[3]{\ifx#2\relax\vbox\bgroup\else
360   \vbox to#2\bgroup\vsize#2\fi\FBw@box#1#3\vskip\z@\egroup}
361 \newcommand\FB@vtop[3]{\ifx#2\relax\vtop\bgroup\else
362   \vtop to#2\bgroup\vsize#2\fi\vskip\z@\FBw@box#1#3\egroup}
363 \newcommand\flrow@FB@{\global\let\flrow@typ@tmpset\undefined
364  \FB@frame{\begin@FBBOX
365   \adj@dim\FBo@wd+\FBo@wadj=\hsize
366   \@tempdima\ht\@currbox\advance\@tempdima\dp\@currbox
367   \ifdim\@tempdima=\z@
368      \def\@@FBskip{}\let\FBo@frame\@gobble
369   \fi
370   \@parboxrestore\leftmargin\z@\rightmargin\z@
371   \@@FBabove
372   \FBifcaptop\@tempswatrue\@tempswafalse
373   \if@tempswa
374     \ifvoid\@floatcapt\else
375       \FB@vbox\FBc@wd\FBcheight{\FBifCAPTOP\relax\vfill
376         \unvbox\@floatcapt
377         \ifnum\FPOScnt=\@ne\vbox{\FB@foot}\fi\vfil}%
378       \@@FBskip\hrule\@height\z@\@depth\z@
379     \fi
380     \vtop{\vskip\z@\FBo@frame{\FB@vtop\FBo@wd\FBoheight
381       {\FBafil\unvbox\@currbox\FBbfil
382       \vskip\z@
383       \ifnum\FPOScnt=\z@
384         \FB@vtop\FBo@wd\FBfheight{\FB@foot\vfil}\fi}}\par
385       \vskip\z@
386       \ifnum\FPOScnt=\tw@\vskip\z@
387         \FB@vtop\FBc@wd\FBfheight{\FB@foot\vfil}\fi}%
388   \else\ifnum\FPOScnt=\z@\FPOScnt=\@ne\fi
389     \FBo@frame{\FB@vbox\FBo@wd\FBoheight{\FBafil
390        \unvbox\@currbox\FBbfil}}\par
391     \ifvoid\@floatcapt\else
392       \@@FBskip\hrule\@height\z@\@depth\z@
393       \FB@vtop\FBc@wd\FBcheight{\hsize\columnwidth\unvbox\@floatcapt
394         \ifnum\FPOScnt=\@ne\vtop{\FB@foot}%
395     \fi\par
396         \vfill\vskip\z@\vss
397         \ifnum\FPOScnt=2\FB@vtop\FBc@wd\FBfheight{\FB@foot\vfil}\fi
398         }\fi
399   \fi\@@FBbelow\FB@zskip\end@FBBOX
400   \global\setbox\@floatcapt\box\voidb@x}}
401 \newcommand\flrow@FC@{\global\let\flrow@typ@tmpset\undefined
402  \FB@frame{\begin@FBBOX
403    \adj@dim\FBo@wd+\FBo@wadj=\hsize
404    \settowidth\@tempdimb{\floatcapbesidesep}\advance\hsize\@tempdimb
405    \advance\hsize\FBc@wd\@parboxrestore\leftmargin\z@\rightmargin\z@
406    \@@FBabove
407     \hbox{\floatfacing*%
408       {\ifvoid\@floatcapt\else
409          \FCc@box{\FBw@box\FBc@wd\unvbox\@floatcapt\FB@foot}%
410          \floatcapbesidesep\fi
411        \FBf@raise{\FBo@frame{\FCo@box{\FBw@box\FBc@wd\unvbox\@currbox}}}}%
412       {\FBf@raise{\FBo@frame{\FCo@box{\FBw@box\FBo@wd\unvbox\@currbox}}}%
413        \ifvoid\@floatcapt\else
414          \floatcapbesidesep\FCc@box{\FBw@box\FBc@wd
415            \unvbox\@floatcapt\FB@foot}\fi
416       }}\par\@@FBbelow\vskip\z@
417     \end@FBBOX
418     \global\setbox\@floatcapt\box\voidb@x}}
419 \newcommand\FB@foot{\let\FR@ifFOOT\@firstoftwo\FB@putfoots\@@par\FB@putfnotes}
420 \newcommand\FB@zskip{}
421 \newcommand\float@end{\ifFBbuild\@endfloatbox
422     \global\setbox\@currbox\float@makebox\columnwidth
423     \let\@endfloatbox\relax\fi
424   \end@float}
425 \newcommand\floatHpenalties{}
426 \newcommand\float@endH{\@endfloatbox\par
427   \FR@iffloatHaslist
428    {\floatHpenalties\relax
429     \addpenalty\@beginparpenalty}\relax
430   \vskip\intextsep
431   \ifFBbuild\setbox\@currbox\float@makebox\columnwidth\fi
432   \box\@currbox\par
433   \FR@iffloatHaslist
434    {\addpenalty\@endparpenalty\@endpetrue}\relax
435   \vskip\intextsep\relax}
436 \newcommand\float@dblend{\ifFBbuild\@endfloatbox
437     \global\setbox\@currbox\float@makebox\textwidth
438     \let\@endfloatbox\relax\fi
439   \end@dblfloat}
440 \newsavebox\@floatcapt
441 \newcommand*{\listof}[2]{%
442   \@ifundefined{ext@#1}{\flrow@error{Unknown float style `#1'}}{%
443     \expandafter\providecommand\csname l@#1\endcsname
444         {\@dottedtocline{1}{1.5em}{2.3em}}%
445     \float@listhead{#2}%
446     \begingroup\setlength{\parskip}{\z@}%
447       \@starttoc{\@nameuse{ext@#1}}%
448     \endgroup}}
449 \providecommand*{\float@listhead}[1]{%
450   \@ifundefined{chapter}{\def\@tempa{\section*}}%
451     {\def\@tempa{\chapter*}}%
452   \@tempa{#1\@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}}%
453 \newcommand\float@addtolists[1]{%
454   \def\float@do##1{\addtocontents{##1}{#1}} \the\float@exts}
455 \PackageInfo{floatrow}{Modified float package code loaded}
456 \IfFileExists{rotating.sty}{\@tempswatrue}{\@tempswafalse}
457 \if@tempswa
458   \let\rotfloat@HH\@float@HH
459   \def\@float@HH#1{%
460     \expandafter\let\csname endsideways#1\endcsname\float@endH
461     \let\end@float\relax
462     \rotfloat@HH{#1}}
463   \newcommand*\rotfloat@makebox[1]{%
464     \vbox{\def\@float##1[##2]{}\let\end@float\relax
465       \@rotfloat{}[]%
466       \ifFBbuild\rotfloat@@makebox{#1}\else\box\@currbox\fi
467       \end@rotfloat}}
468   \newcommand*\rotdblfloat@makebox[1]{%
469     \vbox{\def\@float##1[##2]{}\let\end@dblfloat\relax
470       \@rotdblfloat{}[]%
471       \ifFBbuild\rotfloat@@makebox{#1}\else\box\@currbox\fi
472       \end@rotdblfloat}}
473 \PackageInfo{floatrow}{Modified rotfloat package code loaded}
474 \fi
475 \@ifdefinable\FR@everyfloat{\newtoks\FR@everyfloat}
476 \FR@everyfloat={\let\@footnotetext\@mpfootnotetext
477   \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@
478   \floatobjectset\floatfont}
479 \@ifdefinable\FR@ifFOOT{\let\FR@ifFOOT\@secondoftwo}
480 \newcommand\FB@putfnotes{%
481   \ifvoid\@mpfootins\else\FR@ifFOOT
482     {\vskip\floatfootskip\normalcolor\FBfootnoterule
483     \unvbox\@mpfootins\@@par}\relax
484   \fi}
485 \@ifdefinable\flrow@foot{\newinsert\flrow@foot}
486 \newcommand\FB@putfoots{%
487   \ifvoid\flrow@foot\else\FR@ifFOOT
488     {\vskip\floatfootskip\normalcolor
489     \unvbox\flrow@foot\@@par}\relax
490   \fi}
491 \AtBeginDocument{\providecommand\mpfootnotemark{\@ifnextchar[%]
492    \@xmpfootnotemark{\stepcounter\@mpfn
493    \protected@xdef\@thefnmark{\thempfn}\@footnotemark}}%
494  \@ifundefined{@xmpfootnotemark}
495    {\def\@xmpfootnotemark[#1]{\begingroup\c@mpfootnote#1\relax
496     \unrestored@protected@xdef\@thefnmark{\thempfn}\endgroup
497     \@footnotemark}}{}}
498 \captionsetup[floatfoot]{labelformat=empty,labelsep=none}
499 \newcommand\floatfoot{\@ifstar
500     {\def\FR@tmp{\@parboxrestore\captionfootfont}\floatfoot@}%
501     {\def\FR@tmp{\captionfootfont}\floatfoot@}}
502 \newcommand\floatfoot@[1]{%
503   \global\setbox\flrow@foot\vbox{%
504   \floatfoot@box{#1}}}%
505 \newcommand\floatfoot@box[1]{%
506   \@ifundefined{@captype}{\def\@captype{floatfoot}}{}%
507     \if@@FS\hsize\columnwidth\linewidth\columnwidth\fi
508     \@parboxrestore\reset@font\color@begingroup
509   \caption@setoptions{\@captype}%
510   \caption@setoptions{floatfoot}%
511      \caption@@make{}{\FR@tmp#1\@finalstrut\strutbox}%
512   \color@endgroup}
513 \newcommand\newfloatcommand[2]{%
514   \@ifundefined{#1}{}%
515     {\flrow@error{\string#1 already defined}}%
516   \@ifnextchar[{\FB@nc{#1}{#2}}{\FB@nc{#1}{#2}[]}}
517 \newcommand\renewfloatcommand[2]{%
518   \@ifundefined{#1}{}%
519     {\PackageInfo{floatrow}{Redefining \string#1}}%
520   \@ifnextchar[{\FB@nc{#1}{#2}}{\FB@nc{#1}{#2}[]}}
521 \@ifdefinable\FB@nc{}\@ifdefinable\FB@@nc{}
522 \def\FB@nc#1#2[#3]{%
523   \@ifnextchar[{\FB@@nc{#1}{#2}[#3]}{\FB@@nc{#1}{#2}[#3][]}}
524 \def\FB@@nc#1#2[#3][#4]{%
525   \@namedef{#1}{\begingroup
526   \def\FB@tmpset{#3}\def\@captype{#2}%
527   \@ifnextchar[{\@floatbox}{\@floatbox[#4]}}}
528 \newfloatcommand{ffigbox}{figure}[\nocapbeside][]
529 \newfloatcommand{ttabbox}{table}[\captop][\FBwidth]
530 \newfloatcommand{fcapside}{figure}[\capbeside][]
531 \@ifdefinable\FB@wd {\newdimen\FB@wd}
532 \@ifdefinable\FBo@wd{\newdimen\FBo@wd}
533 \@ifdefinable\FBc@wd{\newdimen\FBc@wd}
534 \newlength\FBo@ht
535 \newlength\FBc@ht
536 \newlength\FBf@ht
537 \newlength\FBo@max
538 \newlength\FBc@max
539 \newlength\FBf@max
540 \newcommand\FR@loc@addcnt[2]{%
541   \@ifundefined{c@#1}{\@nocounterr{#1}}%
542     {\advance\csname c@#1\endcsname #2\relax}}
543 \newcommand\FR@loc@refcnt[1]{%
544   \@ifundefined{c@#1}{\@nocounterr{#1}}%
545    {\advance\csname c@#1\endcsname1\relax}}
546 \newcommand\FR@loc@{%
547   \let\FR@ifunloc\@gobble
548   \let\label\@gobble
549   \let\refstepcounter\FR@loc@refcnt
550   \let\stepcounter\FR@loc@refcnt
551   \let\refsteponlycounter\FR@loc@refcnt
552   \let\FR@ifcountH\@secondoftwo
553   \let\cl@@ckpt\empty\let\addtocounter\FR@loc@addcnt
554   \let\caption@kernel@addcontentsline\@gobbletwo
555   \let\caption@addcontentsline\@gobbletwo
556   \def\sf@updatecaptionlist##1##2##3##4{}}
557 \def\FBtmp@cap#1[#2]#3{\sbox\@tempboxa{\captionlabel{#3}}%
558   \global\@tempdimb\wd\@tempboxa}
559 \newcommand\captionlabel[1]{{\def\FR@tmp{\@captype}\ifnum\floatbox@depth>\@ne
560        \def\FR@tmp{sub\@captype}\caption@setsubtype*{\FR@tmp}\stepcounter{\FR@tmp}\fi
561    \caption@@@make{\caption@fnum\FR@tmp}{#1}}}
562 \newcommand\subcaptionlabel[1]{{\floatbox@depth\tw@\captionlabel{#1}}}
563 \newcommand\FBget@box[3]{%
564   \FBiffloatrow\relax
565     {\ifx\FBB@wd\relax
566       \ifdim\hsize=\z@
567         \@ifundefined{wf@@caption}{}{\let\caption\wf@@caption}%
568         \hsize.5\columnwidth\advance\hsize-.5\columnsep
569       \else
570         \edef\FBB@wd{\the\hsize}%
571       \fi
572     \else
573       \hsize\FBB@wd
574     \fi}%
575   \adj@dim\hsize-\FB@wadj=\@tempdima
576   \FBifcapbeside
577     {\FCget@@wd{#1}{#3}}%
578     {\nofilFCOhsize
579     \FBiffloatrow\relax
580       {\settowidth\@tempdimb{{\FBleftmargin}{\FBrightmargin}}%
581       \advance\@tempdima-\@tempdimb}}%
582   \FC@ifo@fil{\@tempdima\FB@wd}{\FB@wd\@tempdima}%
583   \adj@dim\@tempdima-\FBo@wadj=\FBo@wd
584   \FBiffloatrow\relax{\hsize\FBo@wd}%
585   \FBifcapbeside{\hsize\FB@wd}\relax
586   \linewidth\hsize
587   \def\reserved@a{#1}\ifx\reserved@a\empty
588     \else\FBget@@wd{#1}{#3}\fi
589   \hsize\FBo@wd\linewidth\hsize
590   \FBifcapbeside
591     {\FC@ifc@wd\relax{\advance\FBc@wd-\FB@wd}}%
592     {\FBc@wd\FB@wd}%
593   \setbox\z@\vbox{\let\FR@ifROWFILL\@secondoftwo\FR@loc@\hsize\FBo@wd\linewidth\hsize
594     \FBifcaptop
595       {\ifnum\FPOScnt=\z@\columnwidth\hsize\else\columnwidth\FBc@wd\fi}%
596       {\columnwidth\FBc@wd}%
597     #3}%
598   \FBc@ht\ht\@floatcapt\advance\FBc@ht\dp\@floatcapt
599   \FBo@ht\ht\z@\advance\FBo@ht\dp\z@\let\FBheight\FBo@ht
600   \setbox\tw@\vbox{\null\par\FB@foot\par}%
601   \FBf@ht\ht\tw@\advance\FBf@ht\dp\tw@
602   \FBiffloatrow
603     {\ifdim\FBf@ht>\FBf@max\global\FBf@max\FBf@ht\fi
604     \ifCADJ
605       \FBifcaptop
606         {\ifnum\FPOScnt=\@ne\global\advance\FBc@ht\FBf@ht\fi}%
607         {\ifnum\FPOScnt=\tw@
608           \ifdim\FBf@ht>\FBf@max
609             \global\advance\FBc@ht\FBf@ht
610           \else
611             \global\advance\FBc@ht\FBf@max
612           \fi
613         \else
614           \global\advance\FBc@ht\FBf@ht
615         \fi}%
616       \ifdim\FBc@ht>\FBc@max\global\FBc@max\FBc@ht\fi
617       \gdef\FBcheight{\FBc@ht}\gdef\FBfheight{\FBf@ht}%
618     \fi}\relax
619   \def\reserved@a{#2}\ifx\reserved@a\empty
620     \FBiffloatrow{\ifOADJ
621       \ifdim\FBo@ht>\FBo@max\global\FBo@max\FBo@ht\fi
622       \FBifcaptop
623         {\ifnum\FPOScnt=\z@
624           \ifdim\FBf@ht>\FBf@max\global\FBf@max\FBf@ht\fi
625         \fi}\relax
626       \gdef\FBoheight{\FBo@ht}\gdef\FBfheight{\FBf@ht}%
627     \fi}\relax
628   \else
629      \FBget@@ht{#2}{#3}%
630   \fi}
631 \newcommand\FCget@@wd[2]{\flrow@FClist
632   \FBiffloatrow\relax
633     {\settowidth\@tempdimb{{\FCleftmargin}{\FCrightmargin}}%
634     \advance\@tempdima-\@tempdimb\advance\hsize-\@tempdimb}%
635   \settowidth\@tempdimb{\floatcapbesidesep}\advance\@tempdima-\@tempdimb
636   \FC@ifo@fil{\FB@wd\@tempdima}\relax
637   \FC@ifc@wd\@tempswatrue\@tempswafalse
638   \if@tempswa
639     \ifx\FCwidth\relax
640       \setbox\@ne\vbox{\FR@loc@
641         \let\caption\flrow@caption
642         \let\@caption\FBtmp@cap
643          #2}%
644       \FBc@wd=\@tempdimb
645     \else
646       \FBc@wd=\FCwidth
647     \fi\FC@ifo@fil{\advance\FB@wd-\FBc@wd}\relax
648   \else
649     \FBc@wd\@tempdima
650   \fi
651   \@tempdima.5\@tempdima}
652 \newcommand\flrow@gobble@[2][]{\unskip\ignorespaces}
653 \newcommand\flrow@gobble{%
654     \let\caption\flrow@gobble@
655     \let\floatfoot\flrow@gobble@
656     \let\footnote\flrow@gobble@
657     \let\footnotetext\flrow@gobble@
658     }
659 \newcommand\FBget@@wd[2]{\@tempswafalse
660   \begingroup
661     \@tempdima-3000pt\let\FBwidth\@tempdima
662     \setlength\dimen@{#1}\ifdim\dimen@<\z@\global\@tempswatrue\fi
663   \endgroup
664   \if@tempswa
665     \setbox\z@\hbox{\let\FR@ifROWFILL\@secondoftwo\FR@loc@#2}%
666     \FBo@wd\wd\z@\let\FBwidth\FBo@wd
667     \setlength\FBo@wd{#1}%
668     \advance\FBo@wd\leftskip\advance\FBo@wd\rightskip
669     \adj@dim\FBo@wd+\FBo@wadj=\FB@wd
670     \setbox\flrow@foot\box\voidb@x
671     \setbox\@mpfootins\box\voidb@x
672   \else
673     \setlength\FB@wd{#1}%
674     \adj@dim\FB@wd-\FB@wadj=\FB@wd
675     \adj@dim\FB@wd-\FBo@wadj=\FBo@wd
676     \let\FBwidth\FBo@wd
677   \fi}
678 \newcommand\FBget@@ht[2]{\@tempswafalse
679   \begingroup
680     \@tempdimb-3000pt\let\FBheight\@tempdimb
681     \setlength\dimen@{#1}\ifdim\dimen@<\z@
682       \global\@tempswatrue\fi
683   \endgroup
684   \if@tempswa
685     \setbox\z@\hbox{\let\FR@ifROWFILL\@secondoftwo\FR@loc@#2}%
686     \FBo@ht\ht\z@\advance\FBo@ht\dp\z@
687     \let\FBheight\FBo@ht\setlength\FBo@ht{#1}%
688     \adj@dim\FBo@ht+\FBo@hadj=\FBo@ht
689     \FBifcaptop{\ifnum\FPOScnt=\z@\advance\FBo@ht\FBf@ht\fi}\relax
690   \else
691     \setlength\FBo@ht{#1}%
692     \adj@dim\FBo@ht-\FBo@hadj=\FBo@ht
693     \adj@dim\FBo@ht-\FB@hadj=\FBo@ht
694     \setbox\z@\vbox{\offinterlineskip\vbox{\@@FBabove}%
695       \FBifcapbeside\relax{\@@FBskip\hrule\@height\z@\@depth\z@}%
696       \vtop{\@@FBbelow}}%
697     \global\advance\FBo@ht-\ht\z@\global\advance\FBo@ht-\dp\z@
698     \FBifcapbeside\relax\FBget@@@ht
699   \fi
700   \FBiffloatrow{\ifOADJ
701     \ifdim\FBo@ht>\FBo@max\global\FBo@max\FBo@ht\fi
702   \fi}\relax
703   \def\FBoheight{\FBo@ht}}
704 \newcommand\FBget@@@ht{%
705     \ifdim\FBc@ht>\FBc@max
706       \global\advance\FBo@ht-\FBc@ht
707     \else
708       \global\advance\FBo@ht-\FBc@max
709     \fi
710     \FBifcaptop{\ifnum\FPOScnt=\@ne\else
711       \ifdim\FBf@ht>\FBf@max
712         \global\advance\FBo@ht-\FBf@ht
713       \else
714         \global\advance\FBo@ht-\FBf@max
715       \fi
716     \fi}\relax
717   }
718 \newcommand\FB@writeaux[1]{%
719   \begingroup
720     \let\thepage\relax\let\protect\@unexpandable@protect
721     \edef\reserved@a{\write\@auxout{\string\gdef
722     \expandafter\string\csname @@FBset@\romannumeral
723     \the\c@FBl@b\endcsname{#1}}}\reserved@a
724   \endgroup
725   \addtocounter{FBl@b}{1}}
726 \newcommand\FB@readaux[1]{%
727   \@ifundefined{@@FBset@\romannumeral\the\c@FBl@b}%
728     {#1}{\@nameuse{@@FBset@\romannumeral\the\c@FBl@b}}}
729 \newcounter{FBl@b}
730 \@ifdefinable\FR@ifFCBOX{\let\FR@ifFCBOX\@secondoftwo}
731 \newcommand\FBs@raise{\raisebox{-\totalheight}}
732 \newcommand\FBf@raise{}
733 \newcommand\FCset@vpos{\@FC@vpos
734   \ifcase\count@
735     \gdef\FC@bbox{$\vcenter\@parboxto\bgroup\vskip\z@}%
736     \gdef\FC@ebox{\vskip\z@\egroup$}%
737     \gdef\FBf@raise{}%
738     \gdef\FBs@raise{\raisebox{-.5\totalheight}}%
739   \or\gdef\FC@bbox{\vtop\@parboxto\bgroup\vskip\z@}%
740     \gdef\FC@ebox{\vskip\z@\egroup}%
741     \FR@ifFCBOX{\gdef\FBf@raise{\raisebox{-\height}}}%
742      {\gdef\FBf@raise{}}%
743     \gdef\FBs@raise{\raisebox{-\totalheight}}%
744   \or\gdef\FC@bbox{\vbox\@parboxto\bgroup}\gdef\FC@ebox{\vskip\z@\egroup}%
745     \FR@ifFCBOX{\gdef\FBf@raise{\raisebox{\depth}}}%
746      {\gdef\FBf@raise{}}%
747     \gdef\FBs@raise{}\fi}
748 \@ifdefinable\adj@dim{}
749 \def\adj@dim#1#2#3=#4{\dimen@\z@#3\ifdim\dimen@=\z@#4#1\else
750   \adj@@dim#1#2#3{#4}\fi}
751 \newcommand\adj@@dim[4]{\@tempdima#1\advance\@tempdima#2\dimen@
752   #4=\@tempdima}
753 \newcommand\floatbox[2][]{\begingroup
754   \def\FB@tmpset{#1}\def\@captype{#2}%
755   \@ifnextchar[{\@floatbox}{\@floatbox[]}}
756 \@ifdefinable\@floatbox{}\@ifdefinable\@@floatbox{}
757 \def\@floatbox[#1]{%
758   \@ifnextchar[{\@@floatbox[#1]}{\@@floatbox[#1][]}}
759 \@ifdefinable\floatbox@depth{\newcount\floatbox@depth}
760 \def\@@floatbox[#1][#2]{%
761   \@ifnextchar[{\@@@floatbox[#1][#2]}{\@@@floatbox[#1][#2][]}}%]
762 \@ifdefinable\@@@floatbox{}
763 \long\def\@@@floatbox[#1][#2][#3]#4#5{\advance\floatbox@depth\@ne
764   \@FB@vpos{#3}%
765   \if@@FS\else\FR@redefs
766     \ifcase\floatbox@depth\or
767       \flrow@setlist{{\@captype}}\or
768       \flrow@settype{subfloat}\flrow@settype{subtype}\flrow@settype{sub\@captype}%
769     \fi
770     \FRifFBOX\@@setframe\relax\@@FStrue
771   \fi
772   \FB@tmpset
773   \FBifcapbeside\flrow@FClist\relax
774   \@parboxrestore\leftmargin\z@\rightmargin\z@
775   \floatobjectset\floatfont
776   \FBget@box{#1}{#2}{#4#5}%
777   \FBifcapbeside\FCset@vpos\relax
778   \FBiffloatrow{\FR@floatbox{\@ifundefined{capstart}{}{\capstart}#4#5}}%
779    {\adj@dim\FB@wd+\FB@wadj=\hsize\linewidth\hsize
780     \ifx\FBB@wd\relax\edef\FBB@wd{\the\hsize}\fi
781     \FBsetbox@obj{\@ifundefined{capstart}{}{\capstart}\let\FBB@wd\relax
782     #4#5}\FBbuildtrue
783     \FBifcapbeside{\flrow@FC\FBB@wd}{\flrow@FB\FBB@wd}%
784     \global\FBbuildfalse
785     \FR@iffacing{\FB@writeaux{\string\global\string\c@FBcnt\thepage}}\relax
786    }\advance\floatbox@depth\m@ne
787   \endgroup\ignorespaces}
788 \newcommand\FR@floatbox[1]{\@tempswafalse
789     \ifOADJ\@tempswatrue\fi\ifCADJ\@tempswatrue\fi
790     \if@tempswa\@ifundefined{FB@@boxmax}{}{\FB@@boxmax}\fi
791     \FBsetbox@obj{#1}\begin@FBBOX
792       \FBifcapbeside\flrow@FC@\flrow@FB@
793     \end@FBBOX
794     \addtocounter{FRobj}\m@ne
795     \@tempswafalse\FR@iffacing\@tempswatrue\relax
796     \ifCADJ\@tempswatrue\fi\ifOADJ\@tempswatrue\fi
797     \advance\Xhsize-\FB@wd
798     \FBifcapbeside
799       {\advance\Xhsize-\FBc@wd
800        \FR@ifcountH{\global\advance\Zhsize-\FBc@wd}\relax
801        \settowidth\@tempdimb{\floatcapbesidesep}%
802        \advance\Xhsize-\@tempdimb
803        \FR@ifcountH{\global\advance\Zhsize-\@tempdimb}\relax}\relax
804     \ifnum\c@FRobj=\z@
805       \if@tempswa
806         \FB@writeaux{\string\c@FBcnt\thepage
807           \string\def\string\FB@@boxmax{%
808           \ifOADJ\string\FBo@ht\the\FBo@max
809           \string\FBf@ht\the\FBf@max\fi
810           \ifCADJ\string\FBc@ht\the\FBc@max\fi}}\fi
811       \global\FBbuildfalse
812     \else
813       \floatrowsep
814       \adj@dim\Xhsize-\FB@wadj={\global\Xhsize}%
815       \adj@dim\Zhsize-\FB@wadj={\global\Zhsize}%
816     \fi}
817 \newcommand\FBsetbox@obj[1]{%
818   \setbox\float@box\color@vbox\normalcolor
819   \FBifcaptop
820      {\FB@vtop\FBo@wd\FBoheight\bgroup\FBafil\floatobjectset\floatfont
821       \ifnum\FPOScnt=\z@\columnwidth\FBo@wd\else\columnwidth\FBc@wd\fi}%
822      {\FB@vbox\FBo@wd\FBoheight\bgroup\FBafil\floatobjectset\floatfont
823       \columnwidth\FBc@wd}%
824   #1\FBbfil\egroup\color@endbox
825   \let\@currbox\float@box}
826 \@ifdefinable\FBiffloatrow{\let\FBiffloatrow\@secondoftwo}
827 \newcounter{FRobj}
828 \newcounter{FRsobj}
829 \newlength\Xhsize
830 \newlength\sXhsize
831 \newlength\Zhsize
832 \newlength\sZhsize
833 \newcommand\flrow@to{to\hsize}
834 \newcommand\flrow@boxset[1]{#1}
835 \newcommand\flrow@setrowhbox{%
836 \FR@ifROWFILL{\def\flrow@left{\hskip\leftskip}\def\flrow@right{\hskip\rightskip}%
837   }{\let\flrow@to\empty\def\flrow@left{}\def\flrow@right{}}%
838 }
839 \newcommand\flrow@left{}\newcommand\flrow@right{}
840 \newcommand\flrow@hbox@bgroup{\hbox\flrow@to
841     \bgroup\flrow@left}
842 \newcommand\flrow@hbox@egroup{\flrow@right
843     \egroup}
844 \newbox\flrow@rowbox
845 \newcommand\floatrow[1][2]{\c@FRobj=#1\relax
846   \ifcase\floatbox@depth
847     \flrow@setlist*{{floatrow}{\@captype row}}%
848   \or
849     \flrow@settype{subfloat}\flrow@settype{subtype}\flrow@settype{sub\@captype}%
850     \flrow@settype{subfloatrow}\flrow@settype{sub\@captype row}%
851     \ifx\flrow@to\empty\def\flrow@boxset##1{}\fi
852   \fi%
853   \FB@facing\@tempswafalse\FR@iffacing\@tempswatrue\relax
854   \ifCADJ\@tempswatrue\fi\ifOADJ\@tempswatrue\fi
855   \if@tempswa\FB@readaux{\relax}\fi
856   \flrow@boxset{\ifx\FBB@wd\relax\edef\FBB@wd{\the\hsize}\else\hsize\FBB@wd\fi}%
857   \ifnum\floatbox@depth=\z@\vspace\FBaskip\else\leavevmode\fi
858   \hbox\flrow@to\bgroup%outer h box
859   \FRleftmargin
860   \flrow@boxset{\hsize\FBB@wd
861      \settowidth\@tempdima{{\FRleftmargin}{\FRrightmargin}}\advance\hsize-\@tempdima}%
862   \bgroup\ifx\FR@frame\empty\else\def\FB@frame{}\def\FB@wadj{}\def\FB@hadj{}\fi%frame set
863   \flrow@boxset{\adj@dim\hsize-\FR@wadj=\hsize}%
864   \setbox\flrow@rowbox\vbox\bgroup%v box
865         \@@FRabove
866     \flrow@setrowhbox
867     \flrow@hbox@bgroup\let\FBiffloatrow\@firstoftwo
868       \Xhsize\hsize\count@#1\advance\count@\m@ne
869       \settowidth\@tempdima{\floatrowsep}\advance\Xhsize-\count@\@tempdima
870       \@tempdimb\Xhsize
871       \FR@iftwolevel
872         {\ifnum\floatbox@depth=\z@\Zhsize\Xhsize\else
873             \ifdim\Zhsize=\z@\Zhsize\Xhsize\sZhsize\Xhsize\fi
874             \FR@ifcountH{\global\advance\Zhsize-\count@\@tempdima}\relax
875          \fi}{\@tempdimb\Xhsize\Zhsize\Xhsize}%
876       \divide\@tempdimb#1\relax\FB@wd\@tempdimb
877       \hsize\@tempdimb\ignorespaces}
878 \def\endfloatrow{\ifdim\lastskip>\z@\unskip\fi
879       \flrow@hbox@egroup%h box
880     \@@FRbelow
881     \egroup%v box
882     \FR@frame{\box\flrow@rowbox}%
883     \egroup%frame set
884     \FRrightmargin\egroup%outer h box
885     \ifnum\floatbox@depth=\z@\vspace\FBbskip\fi
886   \gdef\FBaskip{\z@}\gdef\FBbskip{\z@}%
887   \global\FBf@max\z@\global\FBo@max\z@\global\FBc@max\z@
888   \gdef\begin@FBBOX{\vbox\bgroup}\gdef\end@FBBOX{\egroup}}
889 \newenvironment{subfloatrow}{\capsubrowsettings
890     \captionsetup{subtype}\@nameuse{subfloatrow*}}{\@nameuse{endsubfloatrow*}}
891 \newcommand\capsubrowsettings{\caption@setoptions{subfloatrow}\caption@setoptions{sub\@captype row}}
892 \newenvironment{subfloatrow*}[1][2]{\let\flrow@to\empty
893     \let\Xhsize\sXhsize%\let\Zhsize\sZhsize
894     \FR@ifunloc{\let\FR@ifcountH\@firstoftwo}\let\c@FRobj\c@FRsobj
895     \def\FRleftmargin{}\def\FRrightmargin{}\let\floatrowsep\subfloatrowsep
896     \floatrow[#1]\killfloatstyle}{\ifdim\lastskip>\z@\unskip\fi
897      \@ifundefined{adjustsubfloats}\relax\adjustsubfloats\endfloatrow}
898 \newcommand\subfloatrowsep{\hskip\columnsep}
899 \@ifdefinable\FR@ifcountH{\let\FR@ifcountH\@firstoftwo}
900 \@ifdefinable\FR@ifunloc{\let\FR@ifunloc\@firstofone}
901 \@ifdefinable\FR@iftwolevel{\let\FR@iftwolevel\@secondoftwo}
902 \newcommand\CommonHeightRow{\@ifstar
903     {\let\FR@iftwolevel\@firstoftwo\CommonHeightRow@
904    }{\let\FR@iftwolevel\@secondoftwo\CommonHeightRow@}}
905 \newcommand\DefaultCommonHeight{25pt}
906 \newcommand\CommonHeight{\DefaultCommonHeight}
907 \newcommand\CommonHeightRow@[2][\DefaultCommonHeight]{\def\CommonHeight{#1}\setbox\z@
908     \hbox{\FR@loc@\let\FR@ifunloc\@firstofone#2}%
909     \ifcase\floatbox@depth\def\@tempa{\Xhsize}\def\@tempb{\Zhsize}\or
910         \def\@tempa{\sXhsize}\def\@tempb{\Zhsize}\fi
911     \FR@calc@CommonHeight#2}
912 \@ifdefinable\FR@Zunitlength{\newdimen\FR@Zunitlength}
913 \newcommand\FR@calc@CommonHeight{%
914     \@tempdima\@tempb\advance\@tempdima-\@tempa
915     \count@\@tempdima\relax\divide\count@16384\relax
916     \divide\@tempb\count@\relax\FR@Zunitlength\@tempb\relax
917     \@tempdima\CommonHeight\relax
918     \count@\@tempdima\relax\divide\count@16384\relax
919     \@tempdima\count@\FR@Zunitlength\relax
920     \edef\CommonHeight{\the\@tempdima}}
921 \newcommand\begin@FBBOX{\vbox\bgroup}
922 \def\end@FBBOX{\egroup}
923 \newcommand\CenterFloatBoxes{\CADJfalse\OADJfalse
924   \buildFBBOX{\hbox\bgroup$\vcenter\bgroup\vskip\z@}%
925              {\vskip\z@\egroup$\egroup}}
926 \newcommand\TopFloatBoxes{\CADJfalse\OADJfalse
927   \buildFBBOX{\vtop\bgroup\vskip\z@}{\egroup}}
928 \newcommand\BottomFloatBoxes{\CADJfalse\OADJfalse
929   \buildFBBOX{\vbox\bgroup}{\vskip\z@\egroup}}
930 \newcommand\PlainFloatBoxes{%
931   \gdef\begin@FBBOX{\vbox\bgroup}\gdef\end@FBBOX{\egroup}}
932 \newcommand\buildFBBOX[2]{\gdef\begin@FBBOX{#1}\gdef\end@FBBOX{#2}}
933 \def\newdimentocommand  #1#2#3{%
934     #1\@tempdima{#3}\@ifdefinable#2{\xdef#2{\the\@tempdima}}}
935 \def\renewdimentocommand#1#2#3{%
936     #1\@tempdima{#3}\xdef#2{\the\@tempdima}}
937 \def\newskiptocommand   #1#2#3{%
938     #1\@tempskipa{#3}\@ifdefinable#2{\xdef#2{\the\@tempskipa}}}
939 \def\renewskiptocommand #1#2#3{%
940     #1\@tempskipa{#3}\xdef#2{\the\@tempskipa}}
941 \def\newlengthtocommand{\newskiptocommand}
942 \def\renewlengthtocommand{\renewskiptocommand}
943 \newcommand*\flrow@setbool[1]{%
944   \expandafter\caption@set@bool\csname FR@if#1\endcsname}
945 \def\floatsetup{\@ifnextchar[\flrow@setuptype\flrow@setup}
946 \def\flrow@setuptype[#1]#2{%
947   \@ifundefined{flrow@typ@#1}{\@namedef{flrow@typ@#1}{#2}}%
948     {\expandafter\l@addto@macro\csname flrow@typ@#1\endcsname{,#2}}}
949 \newcommand\thisfloatsetup{\floatsetup[tmpset]}
950 \def\flrow@setup{\caption@setkeys[floatrow]{floatrow}}
951 \def\flrow@esetup#1{%
952   \edef\FR@tmp{\noexpand\flrow@setup{#1}}\FR@tmp}
953 \def\flrow@settype#1{\@ifundefined{flrow@typ@#1}{}%
954   {\flrow@esetup{\csname flrow@typ@#1\endcsname}}}%
955 \newcommand\flrow@setlist{\@ifstar\flrow@setlist@@\flrow@setlist@}
956 \newcommand\flrow@setlist@[1]{\@flrow@setlist#1{tmpset};%
957   \FR@ifCST{\flrow@capsetup}\relax\@cap@setlist#1;%
958   \caption@setposition{\FBifcaptop tb}}
959 \newcommand\flrow@setlist@@[1]{\@flrow@setlist#1;%
960   \FR@ifCST{\flrow@capsetup}\relax\@cap@setlist#1;%
961   \caption@setposition{\FBifcaptop tb}}
962 \newcommand\@flrow@setlist[1]{\flrow@settype{#1}\@ifnextchar;\@gobble
963   \@flrow@setlist}
964 \@ifundefined{caption@setoptions}{\let\caption@setoptions\caption@settype}{}
965 \newcommand\@cap@setlist[1]{\caption@setoptions{#1}%
966    \@ifnextchar;{\let\caption@setfloattype\@gobble\@gobble}\@cap@setlist}
967 \newcommand\flrow@FClist{\flrow@setlist
968   {{floatbeside}{capbesidefloat}{\@captype beside}{capbeside\@captype}}}
969 \newcommand*\clearfloatsetup[1]{\@nameundef{flrow@typ@#1}}
970 \newcommand\DeclareFROpt{%
971   \@ifstar{\flrow@declopt\AtEndOfPackage}
972           {\flrow@declopt\@gobble}}
973 \newcommand*\flrow@declopt[2]{%
974   #1{\undefine@key{floatrow}{#2}}\define@key{floatrow}{#2}}
975 \@onlypreamble\DeclareFROpt
976 \@onlypreamble\flrow@declopt
977 \@ifdefinable\FR@ifrawfloats{\let\FR@ifrawfloats\@secondoftwo}
978 \DeclareFROpt*{rawfloats}[0]{\flrow@setbool{rawfloats}{#1}}
979 \@ifdefinable\FR@ifdoubleaswide{\let\FR@ifdoubleaswide\@secondoftwo}
980 \DeclareFROpt{doublefloataswide}[0]{\flrow@setbool{doubleaswide}{#1}}
981 \@ifdefinable\FR@iffloatHaslist{\let\FR@iffloatHaslist\@secondoftwo}
982 \DeclareFROpt{floatHaslist}[0]{\flrow@setbool{floatHaslist}{#1}}
983 \newcommand*\DeclareFloatStyle[2]{%
984   \global\@namedef{flrow@sty@#1}{#2}}
985 \@onlypreamble\DeclareFloatStyle
986 \newcommand*\flrow@setstyle[1]{%
987   \@ifundefined{flrow@sty@#1}%
988     {\flrow@error{Undefined float style `#1'}}%
989     {\FBstyle@reset
990      \def\flrow@capsetup{%
991         \@ifundefined{caption@sty@#1}{}{\caption@setstyle*{#1}}%
992         \caption@setoptions {#1}}%
993      \flrow@esetup{\csname flrow@sty@#1\endcsname}}}
994 \DeclareFloatStyle{plain}{}
995 \DeclareFloatStyle{plaintop}{capposition=top}
996 \DeclareFloatStyle{boxed}{captionskip=2pt,
997   framestyle=fbox,heightadjust=object,framearound=object}
998 \DeclareFloatStyle{ruled}{precode=thickrule,midcode=rule,postcode=lowrule,
999   capposition=top,heightadjust=all}
1000 \DeclareFloatStyle{Ruled}{style=ruled,capposition=TOP}
1001 \DeclareFloatStyle{Plaintop}{capposition=TOP}
1002 \DeclareFloatStyle{Boxed}{style=boxed,framefit=yes}
1003 \DeclareFloatStyle{BOXED}{framestyle=fbox,
1004   framefit=yes,heightadjust=all,framearound=all}
1005 \DeclareFloatStyle{default}{%
1006      style=plain,captionskip=10pt,
1007      margins=centering,objectset=centering,
1008      capbesideposition=left,facing=no,
1009      floatrowsep=columnsep,capbesidesep=columnsep,
1010      font=default,footfont=footnotesize}
1011 \DeclareFROpt{style}{\flrow@setstyle{#1}}
1012 \@ifdefinable\FR@ifCST{\let\FR@ifCST\@firstoftwo}
1013 \DeclareFROpt{relatedcapstyle}[0]{\flrow@setbool{CST}{#1}}
1014 \DeclareFROpt{font}{\flrow@setfont{font}{#1}}
1015 \DeclareFROpt{footfont}{\captionsetup[floatfoot]{font={#1}}}
1016 \DeclareCaptionOption{footfont}{\caption@setfont{footfont}{#1}}
1017 \@ifdefinable\floatfont{\let\floatfont\empty}
1018 \newcommand*\captionfootfont{\normalfont\footnotesize}
1019 \let\DeclareFloatFont\DeclareCaptionFont
1020 \@onlypreamble\DeclareFloatFont
1021 \newcommand*\flrow@setfont[2]{%
1022    \caption@setfont{@tempa}{#2}%
1023    \expandafter\let\csname float#1\endcsname\caption@tempa}
1024 \DeclareFROpt{capposition}{\flrow@cappos{#1}}
1025 \DeclareFROpt{position}{\flrow@cappos{#1}}
1026 \newcommand*\flrow@cappos[1]{%
1027   \caption@ifinlist{#1}{t,top,above}{\captop\nocapbeside
1028   }{\caption@ifinlist{#1}{T,TOP,ABOVE}{\CAPTOP\nocapbeside
1029   }{\caption@ifinlist{#1}{b,bottom,below,default}{\capbot\nocapbeside
1030   }{\caption@ifinlist{#1}{beside,side}{\caption@setposition{a}\capbeside
1031   }{\flrow@error{Undefined caption position `#1'}%
1032   }}}}}
1033 \@ifdefinable\FBifcaptop{\let\FBifcaptop\@secondoftwo}
1034 \newcommand\captop{\let\FBifcaptop\@firstoftwo}
1035 \newcommand\capbot{\let\FBifcaptop\@secondoftwo}
1036 \@ifdefinable\FBifCAPTOP{\let\FBifCAPTOP\@secondoftwo}
1037 \newcommand\CAPTOP{\captop\let\FBifCAPTOP\@firstoftwo\CADJtrue}
1038 \@ifdefinable\FBifcapbeside{}\let\FBifcapbeside\@secondoftwo
1039 \newcommand\capbeside{\let\FBifcapbeside\@firstoftwo}
1040 \newcommand\nocapbeside{\let\FBifcapbeside\@secondoftwo}
1041 \DeclareFROpt{capbesideframe}[0]{\flrow@setbool{FCBOX}{#1}}
1042 \DeclareFROpt{capbesidewidth}[1]{\flrow@FCc@wd{#1}}
1043 \@ifdefinable\FC@ifc@wd{\let\FC@ifc@wd\@secondoftwo}
1044 \newcommand\useFCwidth{\let\FC@ifc@wd\@firstoftwo\let\FCwidth\relax}
1045 \@ifdefinable\FCwidth{\let\FCwidth\relax}
1046 \newcommand\flrow@FCc@wd[1]{%
1047   \caption@ifinlist{#1}{none,sidefil}{\let\FC@ifc@wd\@secondoftwo
1048   }{\useFCwidth\def\FCwidth{#1}}}
1049 \DeclareFROpt{capbesideposition}{\flrow@scpos{#1}}
1050 \newcommand\DeclareSCPos[2]{%
1051   \define@key{flrow@scpos}{#1}[]{\g@addto@macro\FR@tmp{#2}}}
1052 \newcommand*\flrow@scpos[1]{%
1053   \let\FR@tmp\@empty
1054   \begingroup\caption@setkeys[floatrow]{flrow@scpos}{#1}\endgroup
1055   \FR@tmp}
1056 \@onlypreamble\DeclareSCPos
1057 \DeclareSCPos{left}{\def\@FC@hpos{\let\FR@iffacing\@secondoftwo\count@\@ne}}
1058 \DeclareSCPos{right}{\def\@FC@hpos{\let\FR@iffacing\@secondoftwo\count@\z@}}
1059 \DeclareSCPos{inside}{\def\@FC@hpos{\let\FR@iffacing\@firstoftwo
1060     \count@\c@FBcnt\ifnum\count@=\z@\count@\@ne\fi
1061   }}
1062 \DeclareSCPos{outside}{\def\@FC@hpos{\let\FR@iffacing\@firstoftwo
1063     \count@\c@FBcnt\ifnum\count@=\z@\else\advance\count@\@ne\fi
1064   }}
1065 \DeclareSCPos{center}{\def\@FC@vpos{\count@\z@}}
1066 \DeclareSCPos{top}{\def\@FC@vpos{\count@\@ne}}
1067 \DeclareSCPos{bottom}{\def\@FC@vpos{\count@\tw@}}
1068 \newcommand*\@FC@vpos{\count@\tw@}
1069 \newcommand*\@FC@hpos{\let\FR@iffacing\@secondoftwo\count@\@ne}
1070 \newcounter{FBcnt}
1071 \DeclareFROpt{footposition}{\flrow@ftpos{#1}}
1072 \newcommand\DeclareFtPos[2]{%
1073   \define@key{flrow@ftpos}{#1}[]{\g@addto@macro\FR@tmp{#2}}}
1074 \newcommand*\flrow@ftpos[1]{%
1075   \let\FR@tmp\@empty
1076   \begingroup\caption@setkeys[floatrow]{flrow@ftpos}{#1}\endgroup
1077   \FR@tmp}
1078 \@onlypreamble\DeclareFtPos
1079 \@ifdefinable\FPOScnt{\newcount\FPOScnt}
1080 \DeclareFtPos{caption}{\FPOScnt1\relax}
1081 \DeclareFtPos{bottom}{\FPOScnt2\relax}
1082 \DeclareFtPos{default}{\FPOScnt0\relax}
1083 \DeclareFROpt{heightadjust}{\flrow@htadj{#1}}
1084 \newcommand\DeclareHtAdj[2]{%
1085   \define@key{flrow@htadj}{#1}[]{\g@addto@macro\FR@tmp{#2}}}
1086 \newcommand*\flrow@htadj[1]{\let\FR@tmp\@empty
1087   \begingroup\caption@setkeys[floatrow]{flrow@htadj}{#1}\endgroup
1088   \FR@tmp}
1089 \@onlypreamble\DeclareHtAdj
1090 \DeclareHtAdj{all}{\CADJtrue\OADJtrue}
1091 \DeclareHtAdj{caption}{\CADJtrue}
1092 \DeclareHtAdj{object}{\OADJtrue}
1093 \DeclareHtAdj{none}{\CADJfalse\OADJfalse}
1094 \DeclareHtAdj{nocaption}{\CADJfalse}
1095 \DeclareHtAdj{noobject}{\OADJfalse}
1096 \newif\ifCADJ
1097 \newif\ifOADJ
1098 \DeclareFROpt{valign}{\@FB@vpos{#1}}
1099 \newcommand\@FB@vpos[1]{%
1100   \if#1t\def\FBafil{}\def\FBbfil{\vss}\else
1101      \if#1b\def\FBafil{\vss}\def\FBbfil{}\else
1102         \if#1c\def\FBafil{\vskip0ptplus1fillminus1000pt}%
1103               \def\FBbfil{\vskip0ptplus1fillminus1000pt}\else
1104            \if#1s\def\FBafil{\vskip0ptminus1000pt}%
1105                  \def\FBbfil{\vskip0ptminus1000pt}%
1106   \fi\fi\fi\fi}
1107 \@ifdefinable\FR@iffacing{\let\FR@iffacing\@secondoftwo}
1108 \DeclareFROpt{facing}[1]{\flrow@setbool{facing}{#1}}
1109 \newcommand\FB@facing{}
1110 \DeclareFROpt{margins}{\flrow@FBAlign{#1}}
1111 \newcommand*\flrow@FBAlign[1]{%
1112   \@ifundefined{flrow@mj@#1}%
1113     {\flrow@error{Undefined float alignment `#1'}}%
1114     {\@nameuse{flrow@mj@#1}}}
1115 \newcommand*\DeclareMarginSet[2]{%
1116   \global\@namedef{flrow@mj@#1}{#2}}
1117 \@onlypreamble\DeclareMarginSet
1118 \newskip\LTleft\newskip\LTright
1119 \DeclareMarginSet{centering}{\setfloatmargins{\hfill}{\hfill}%
1120   \LTleft=\fill \LTright=\fill}
1121 \DeclareMarginSet{raggedright}{\setfloatmargins{}{\hfil}%
1122   \LTleft=\z@ \LTright=\fill}
1123 \DeclareMarginSet{raggedleft}{\setfloatmargins{\hfil}{}%
1124   \LTleft=\fill \LTright=\z@}
1125 \newskip\LTleft\newskip\LTright
1126 \DeclareMarginSet{hangleft}{\setfloatmargins
1127     {\hskip-\marginparwidth\hskip-\marginparsep\hskip\leftskip}{\hskip\rightskip}%
1128   \LTleft-\marginparwidth\advance\LTleft-\marginparsep
1129   \LTright=\fill}
1130 \DeclareMarginSet{hangright}{\setfloatmargins
1131     {\hskip\leftskip}{\hskip-\marginparwidth\hskip-\marginparsep\hskip\rightskip}%
1132   \LTleft=\fill
1133   \LTright-\marginparwidth\advance\LTright-\marginparsep}
1134 \DeclareMarginSet{hanginside}{\setfloatmargins
1135     *{\hskip-\marginparwidth\hskip-\marginparsep\hskip\leftskip}{\hskip\rightskip}%
1136   }
1137 \DeclareMarginSet{hangoutside}{\setfloatmargins
1138     *{\hskip\leftskip}{\hskip-\marginparwidth\hskip-\marginparsep\hskip\rightskip}%
1139   }
1140 \newcommand\flrow@mj@default{\flrow@mj@centering}
1141 \newcommand\floatfacing{\@ifstar
1142   {\@FC@hpos\floatfacing@}{\FB@facing\floatfacing@}}
1143 \newcommand\floatfacing@[2]{\ifodd\count@#1\else#2\fi}
1144 \newcommand\floatboxmargins{\def\FR@tmp{FB}\FB@mset}
1145 \newcommand\floatrowmargins{\def\FR@tmp{FR}\FB@mset}
1146 \newcommand\floatcapbesidemargins{\def\FR@tmp{FC}\FB@mset}
1147 \newcommand\FB@mset{\@ifstar{\FB@mset@}{\FB@@mset}}
1148 \newcommand\FB@mset@[2]{%
1149   \def\FB@facing{\let\FR@iffacing\@firstoftwo\count@\c@FBcnt}%
1150   \@namedef{\FR@tmp leftmargin}{\floatfacing{#1}{#2}}%
1151   \@namedef{\FR@tmp rightmargin}{\floatfacing{#2}{#1}}}
1152 \newcommand\FB@@mset[2]{\def\FB@facing{}%
1153   \@namedef{\FR@tmp leftmargin}{#1}\@namedef{\FR@tmp rightmargin}{#2}}
1154 \newcommand\setfloatmargins{\@ifstar\FB@allset@\FB@@allset}
1155 \newcommand\FB@allset@[2]{%
1156   \def\FR@tmp{FR}\FB@mset@{#1}{#2}%
1157   \def\FR@tmp{FB}\FB@mset@{#1}{#2}%
1158   \def\FR@tmp{FC}\FB@mset@{#1}{#2}}
1159 \newcommand\FB@@allset[2]{%
1160   \def\FR@tmp{FR}\FB@@mset{#1}{#2}%
1161   \def\FR@tmp{FB}\FB@@mset{#1}{#2}%
1162   \def\FR@tmp{FC}\FB@@mset{#1}{#2}}
1163 \setfloatmargins\hfill\hfill
1164 \DeclareFROpt{objectset}{\flrow@FBoAlign{#1}}
1165 \DeclareFROpt{justification}{\flrow@FBoAlign{#1}}
1166 \let\DeclareObjectSet\DeclareCaptionJustification
1167 \@onlypreamble\DeclareObjectSet
1168 \newcommand*\flrow@FBoAlign[1]{%
1169   \@ifundefined{caption@hj@#1}%
1170     {\flrow@error{Undefined object setting `#1'}}%
1171     {\expandafter\let\expandafter\floatobjectset
1172      \csname caption@hj@#1\endcsname}}
1173 \newcommand*\floatobjectset{\centering}
1174 \DeclareFROpt{floatwidth}{\flrow@FBo@wd{#1}}
1175 \@ifdefinable\FC@ifo@fil{\let\FC@ifo@fil\@secondoftwo}
1176 \newcommand\filFCOhsize{\let\FC@ifo@fil\@firstoftwo}
1177 \newcommand\nofilFCOhsize{\let\FC@ifo@fil\@secondoftwo}
1178 \newcommand\flrow@setwd{\relax}
1179 \newcommand\flrow@FBo@wd[1]{%
1180   \caption@ifinlist{#1}{none,sidefil}{\filFCOhsize
1181   }{\nofilFCOhsize\def\flrow@setwd{\@tempdima=#1}}}
1182 \DeclareFROpt{floatrowsep}{\flrow@setFRsep\floatrowsep{#1}}
1183 \DeclareFROpt{subfloatrowsep}{\flrow@setFRsep\subfloatrowsep{#1}}
1184 \DeclareFROpt{capbesidesep}{\flrow@setFRsep\floatcapbesidesep{#1}}
1185 \let\DeclareFloatSeparators\DeclareCaptionLabelSeparator
1186 \@onlypreamble\DeclareFloatSeparators
1187 \newcommand*\flrow@setFRsep[2]{%
1188   \@ifundefined{caption@lsep@#2}%
1189     {\flrow@error{Undefined float separator `#2'}}%
1190     {\expandafter\let\expandafter#1\csname caption@lsep@#2\endcsname}}
1191 \DeclareFloatSeparators{columnsep}{\hskip\columnsep}
1192 \DeclareFloatSeparators{qquad}{\qquad}
1193 \DeclareFloatSeparators{fil}{\hskip\columnsep plus1fil}
1194 \DeclareFloatSeparators{fill}{\hskip\columnsep plus1fill}
1195 \newcommand\floatrowsep{\hskip\columnsep}
1196 \newcommand\floatcapbesidesep{\hskip\columnsep}
1197 \DeclareFROpt{precode}{\flrow@FBrule\@@FRabove\@@FBabove{#1}}
1198 \DeclareFROpt{rowprecode}{\flrow@FRrule\@@FRabove\@@FBabove{#1}}
1199 \DeclareFROpt{midcode}{\flrow@FBskip{#1}}
1200 \DeclareFROpt{postcode}{\flrow@FBrule\@@FRbelow\@@FBbelow{#1}}
1201 \DeclareFROpt{rowpostcode}{\flrow@FRrule\@@FRbelow\@@FBbelow{#1}}
1202 \newcommand\DeclareFloatVCode[2]{\@namedef{flrow@FBr@#1}{#2}}
1203 \@onlypreamble\DeclareFloatVCode
1204 \newcommand*\flrow@FBrule[3]{%
1205   \@ifundefined{flrow@FBr@#3}%
1206     {\flrow@error{Undefined rule `#3'}}%
1207     {\let#1\empty
1208      \expandafter\let\expandafter#2\csname flrow@FBr@#3\endcsname}}
1209 \newcommand*\flrow@FRrule[3]{%
1210   \@ifundefined{flrow@FBr@#3}%
1211     {\flrow@error{Undefined rule `#3'}}%
1212     {\def#2{\FBiffloatrow\relax{\@nameuse{flrow@FBr@#3}}}%
1213      \expandafter\let\expandafter#1\csname flrow@FBr@#3\endcsname}}
1214 \newcommand*\flrow@FBskip[1]{%
1215   \@ifundefined{flrow@FBr@#1}%
1216     {\flrow@error{Undefined rule `#1'}}%
1217     {\expandafter\let\expandafter\@@FBskip\csname flrow@FBr@#1\endcsname}}
1218 \DeclareFloatVCode{none}{}
1219 \DeclareFloatVCode{thickrule}{\par\rule{\hsize}{.8pt}\vskip2pt\par}
1220 \DeclareFloatVCode{rule}{\vskip2pt\hrule\vskip2pt}
1221 \DeclareFloatVCode{lowrule}{\par\vskip2pt\rule\hsize\@wholewidth\par}
1222 \DeclareFloatVCode{captionskip}{\vskip\captionskip}
1223 \newcommand\FBstyle@reset{\let\FRifFBOX\@secondoftwo\OADJfalse\CADJfalse\capbot
1224   \def\@@FBskip{\vskip\captionskip}\def\@@FRabove{}\def\@@FRbelow{}%
1225   \def\@@FBabove{}\def\@@FBbelow{}%
1226   \def\FB@Bset{}\def\FB@frame{}\def\FBo@frame{}\def\FR@frame{}%
1227   \def\FBo@wadj{}\def\FBo@hadj{}\def\FB@wadj{}\def\FB@hadj{}\def\FR@wadj{}\def\FR@hadj{}}
1228 \newcommand\@@FBskip{\vskip\captionskip}
1229 \@ifdefinable\@@FRabove{\def\@@FRabove{}}
1230 \@ifdefinable\@@FRbelow{\def\@@FRbelow{}}
1231 \@ifdefinable\@@FBabove{\def\@@FBabove{}}
1232 \@ifdefinable\@@FBbelow{\def\@@FBbelow{}}
1233 \@ifdefinable\FB@frame {\def\FB@frame {}}
1234 \@ifdefinable\FBo@frame{\def\FBo@frame{}}
1235 \@ifdefinable\FR@frame {\def\FR@frame {}}
1236 \@ifdefinable\FBo@wadj {\def\FBo@wadj {}}
1237 \@ifdefinable\FBo@hadj {\def\FBo@hadj {}}
1238 \@ifdefinable\FB@wadj  {\def\FB@wadj  {}}
1239 \@ifdefinable\FB@hadj  {\def\FB@hadj  {}}
1240 \@ifdefinable\FR@wadj  {\def\FR@wadj  {}}
1241 \@ifdefinable\FR@hadj  {\def\FR@hadj  {}}
1242 \@ifdefinable\FB@Bset  {\def\FB@Bset  {}}
1243 \DeclareFROpt{framestyle}{\@ifundefined{FB@#1@frame}%
1244   {\let\FRifFBOX\@secondoftwo}{\let\FRifFBOX\@firstoftwo\def\FB@B@{#1}}}
1245 \DeclareFROpt{framearound}{\flrow@fr@round{#1}}
1246 \newcommand*\flrow@fr@round[1]{%
1247  \caption@ifinlist{#1}{object,contents}{\let\FRifFBOX\@firstoftwo
1248     \def\FB@BO@{FBo}%
1249   }{\caption@ifinlist{#1}{floatbox,all}{\let\FRifFBOX\@firstoftwo
1250     \def\FB@BO@{FB}%
1251   }{\caption@ifinlist{#1}{row}{\let\FRifFBOX\@firstoftwo
1252     \def\FB@BO@{FR}%
1253   }{\caption@ifinlist{#1}{none}{\let\FRifFBOX\@secondoftwo
1254   }{\flrow@error{Undefined framed object `#1'}%
1255   }}}}}
1256 \@ifdefinable\FR@ifFIT{\let\FR@ifFIT\@secondoftwo}
1257 \@ifdefinable\FR@ifROWFILL{\let\FR@ifROWFILL\@secondoftwo}
1258 \DeclareFROpt{framefit}[0]{\flrow@setbool{FIT}{#1}}
1259 \@ifdefinable\flrow@@setROWFILL{}
1260 \@ifdefinable\flrow@leftfill{}\@ifdefinable\flrow@rightfill{}
1261 \DeclareFROpt{rowfill}[0]{\flrow@setbool{ROWFILL}{#1}}
1262 \DeclareFROpt{frameset}{\def\FB@Bset{#1}}
1263 \newcommand\FB@BO@{FBo}\newcommand\FB@B@{}
1264 \newcommand\@@setframe{%
1265   \@namedef{\FB@BO@ @hadj}{\@nameuse{FB@\FB@B@ @reset}\FB@Bset
1266     \@nameuse{FB@\FB@B@ @adj}}%
1267   \@namedef{\FB@BO@ @wadj}{\FR@ifFIT{\@nameuse{FB@\FB@B@ @reset}\FB@Bset
1268     \@nameuse{FB@\FB@B@ @adj}}\relax}%
1269   \@namedef{\FB@BO@ @frame}{\@nameuse{FB@\FB@B@ @reset}\FB@Bset
1270     \@nameuse{FB@\FB@B@ @frame}}%
1271   \ifx\FR@frame\empty\else%\ifx\FB@frame\empty
1272      \def\FB@hadj{\@nameuse{FB@\FB@B@ @reset}\FB@Bset
1273        \@nameuse{FB@\FB@B@ @adj}}%
1274      \def\FB@wadj{\FR@ifFIT{\@nameuse{FB@\FB@B@ @reset}\FB@Bset
1275        \@nameuse{FB@\FB@B@ @adj}}\relax}%
1276      \def\FB@frame{\@nameuse{FB@\FB@B@ @reset}\FB@Bset
1277        \@nameuse{FB@\FB@B@ @frame}}%
1278   \fi%\fi
1279   }
1280 \@ifdefinable\FRifFBOX{\let\FRifFBOX\@secondoftwo}
1281 \newcommand\FB@fbox@frame[1]{\hbox{%
1282   \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep}\fbox{#1}%
1283   \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep}}\ignorespaces}
1284 \newcommand\FB@fbox@adj{\dimen@=2\fboxsep\advance\dimen@2\fboxrule}
1285 \newcommand\FB@fbox@reset{\fboxsep3\p@\fboxrule.4\p@}
1286 \newcommand\FB@colorbox@frame[1]{\hbox{%
1287   \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep}\FB@fcolorbox{#1}%
1288   \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep}}\ignorespaces}
1289 \@ifdefinable\FB@colorbox@adj{\let\FB@colorbox@adj\FB@fbox@adj}
1290 \newcommand\FB@colorbox@reset{\fboxsep3\p@\fboxrule.4\p@}
1291 \newcommand\FB@fcolorbox{\fbox}
1292 \newcommand\FB@fcolorcorners{}
1293 \@ifdefinable\FR@phantom{}\@ifdefinable\FRset@color{}
1294 \newcommand\FB@FRcolorbox@frame[1]{\hbox{\let\color@block\FRcolor@block
1295   \let\FR@phantom\@firstofone\let\FRset@color\set@color\FB@fcolorcorners
1296   \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep}\FB@fcolorbox{#1}%
1297   \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep}}\ignorespaces}
1298 \@ifdefinable\FB@FRcolorbox@adj{\let\FB@FRcolorbox@adj\FB@fbox@adj}
1299 \newcommand\FB@FRcolorbox@reset{\fboxsep3\p@\fboxrule.4\p@}
1300 \newcommand\FB@corners@frame[1]{\hbox{\let\color@block\FRcolor@block
1301   \let\FR@phantom\phantom\let\FRset@color\relax\FB@fcolorcorners
1302   \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep}\colorbox{white}{#1}%
1303   \FR@ifFIT\relax{\kern-\fboxrule\kern-\fboxsep}}\ignorespaces}
1304 \@ifdefinable\FB@corners@adj{\let\FB@corners@adj\FB@fbox@adj}
1305 \newcommand\FB@corners@reset{\fboxsep3\p@\fboxrule\z@}
1306 \newcommand\flrow@l@color@side[2]{{\let\unitlength\relax
1307     \picture(\z@,\z@)(\z@,\z@)
1308     \put(\z@,#1){{\flrow@ll@col@put}}
1309     \put(\z@,#2){{\flrow@ul@col@put}}
1310     \endpicture}}
1311 \newcommand\flrow@r@color@side[2]{{\let\unitlength\relax
1312     \picture(\z@,\z@)(\z@,\z@)
1313     \put(\z@,#1){{\flrow@lr@col@put}}
1314     \put(\z@,#2){{\flrow@ur@col@put}}
1315     \endpicture}}
1316 \newcommand\flrow@ll@col@put{}
1317 \newcommand\flrow@ul@col@put{}
1318 \newcommand\flrow@lr@col@put{}
1319 \newcommand\flrow@ur@col@put{}
1320 \newcommand\flrow@cboxcorners[4]{%
1321     \def\flrow@ll@col@put{#1}%
1322     \def\flrow@lr@col@put{#2}%
1323     \def\flrow@ur@col@put{#3}%
1324     \def\flrow@ul@col@put{#4}%
1325     }
1326 \newcommand\FRcolorboxwd{\z@}
1327 \newcommand\FRcolorboxht{\z@}
1328 \newcommand\FRcolorboxdp{\z@}
1329 \def\FRcolor@block#1#2#3{%
1330   {\FRset@color
1331    \rlap{\@tempdima#1\edef\FRcolorboxwd{\the\@tempdima}\@tempdima#2\advance\@tempdima#3%
1332    \edef\FRcolorboxht{\the\@tempdima}\@tempdima#3\edef\FRcolorboxdp{\the\@tempdima}%
1333    \ifcolors@\else\let\FR@phantom\phantom\fi
1334      \flrow@l@color@side{-\FRcolorboxdp}{\FRcolorboxht}%
1335      \FR@phantom{\vrule\@width#1\@height#2\@depth#3}%
1336      \flrow@r@color@side{-\FRcolorboxdp}{\FRcolorboxht}%
1337     }}}
1338 \DeclareFROpt{colorframeset}{\flrow@fcolorbox{#1}}
1339 \DeclareFROpt{colorframecorners}{\flrow@fcolorcorners{#1}}
1340 \newcommand*\flrow@fcolorbox[1]{%
1341   \@ifundefined{flrow@fcolorbox@#1}%
1342     {\flrow@error{Undefined color box `#1'}}%
1343     {\expandafter\let\expandafter\FB@fcolorbox
1344      \csname flrow@fcolorbox@#1\endcsname}}
1345 \newcommand*\flrow@fcolorcorners[1]{%
1346   \@ifundefined{flrow@fcolorcorners@#1}%
1347     {\flrow@error{Undefined color box corners `#1'}}%
1348     {\expandafter\let\expandafter\FB@fcolorcorners
1349      \csname flrow@fcolorcorners@#1\endcsname}}
1350 \newcommand*\DeclareColorBox[2]{%
1351   \@ifundefined{color}{}{\let\flrow@load@colorpackage\relax
1352    \long\@namedef{flrow@fcolorbox@#1}{#2}}}
1353 \newcommand*\DeclareCBoxCorners[5]{%
1354   \@ifundefined{color}{}{\let\flrow@load@colorpackage\relax
1355    \long\@namedef{flrow@fcolorcorners@#1}{\flrow@cboxcorners{#2}{#3}{#4}{#5}}}}
1356 \@onlypreamble\DeclareColorBox
1357 \@onlypreamble\DeclareCBoxCorners
1358 \newcommand\flrow@load@colorpackage{\IfFileExists{color.sty}%
1359     {\def\next{\RequirePackage{color}}}{\let\next\relax}\next}
1360 \AtBeginDocument{\flrow@load@colorpackage\let\flrow@load@colorpackage\relax}
1361 \DeclareFROpt{captionskip}{\def\captionskip{#1}%
1362   \setlength\abovecaptionskip{#1}}
1363 \DeclareFROpt{footskip}{\def\floatfootskip{#1}}
1364 \newcommand\captionskip{10\p@}
1365 \newcommand\floatfootskip{\skip\@mpfootins}
1366 \DeclareFROpt{footnoterule}{\flrow@footrule{#1}}
1367 \newcommand\DeclareFloatFootnoterule[2]{%
1368   \long\@namedef{flrow@fnrule@#1}{#2}}
1369 \newcommand*\flrow@footrule[1]{%
1370   \@ifundefined{flrow@fnrule@#1}%
1371     {\flrow@error{Undefined footnoterule `#1'}}%
1372     {\let\@@FRabove\empty
1373      \expandafter\let\expandafter\FBfootnoterule\csname
1374        flrow@fnrule@#1\endcsname}}
1375 \@onlypreamble\DeclareFloatFootnoterule
1376 \DeclareFloatFootnoterule{normal}{\kern-3\p@
1377   \@tempdima.4\columnwidth
1378   \hrule\@width\@tempdima\kern2.6\p@}
1379 \DeclareFloatFootnoterule{limited}{\kern-3\p@
1380   \@tempdima.4\columnwidth
1381   \ifdim\@tempdima>\frulemax\@tempdima=\frulemax\fi
1382   \hrule\@width\@tempdima\kern2.6\p@}
1383 \newcommand\frulemax{1in}
1384 \DeclareFloatFootnoterule{fullsize}{\kern-3\p@
1385   \hrule\@width\hsize\kern2.6\p@}
1386 \DeclareFloatFootnoterule{none}{}
1387 \@ifdefinable\FBfootnoterule{\let\FBfootnoterule\footnoterule}
1388 \@ifdefinable\FR@iffancy{\let\FR@iffancy\@secondoftwo}
1389 \DeclareFROpt{fancyboxes}{\flrow@setbool{fancy}{#1}}
1390 \newcommand\DeclareFNOpt{%
1391    \@ifstar{\flrow@declfnopt\AtBeginDocument}
1392            {\flrow@declfnopt\@gobble}}
1393 \newcommand*\flrow@declfnopt[2]{%
1394    #1{\undefine@key{newfloat}{#2}}\define@key{newfloat}{#2}}
1395 \@onlypreamble\DeclareFNOpt
1396 \@ifdefinable\flrow@types{\newtoks\flrow@types}
1397 \newcommand\DeclareNewFloatType[2]{\def\FB@captype{#1}%
1398   \expandafter\edef\csname ftype@#1\endcsname{\the\c@float@type}%
1399   \addtocounter{float@type}{\value{float@type}}%
1400   \@namedef{#1name}{#1}\newcounter{#1}%
1401   \expandafter\edef\csname fnum@#1\endcsname
1402     {\expandafter\noexpand\csname #1name\endcsname\nobreakspace
1403        \expandafter\noexpand\csname the#1\endcsname}%
1404   \@namedef{the#1}{\arabic{#1}}\flnew@ext{lo#1}\@namedef{fps@#1}{tbp}%
1405   \@namedef{l@#1}{\@dottedtocline{1}{1.5em}{2.3em}}%
1406   \caption@setkeys[floatrow]{newfloat}{#2}\let\FR@tmp=\relax
1407   \xdef\@tempa{\noexpand\flrow@types{\the\flrow@types \FR@tmp{#1}}}%
1408   \@tempa}
1409 \@onlypreamble\DeclareNewFloatType
1410 \DeclareFNOpt*{placement}{\flnew@fps{#1}}
1411 \newcommand\flnew@fps[1]{\@namedef{fps@\FB@captype}{#1}}
1412 \@onlypreamble\flnew@fps
1413 \DeclareFNOpt*{name}{\flnew@fname{#1}}
1414 \newcommand\flnew@fname[1]{\@namedef{\FB@captype name}{#1}}
1415 \@onlypreamble\flnew@fname
1416 \DeclareFNOpt*{fileext}{\flnew@ext{#1}}
1417 \newcommand\flnew@ext[1]{\@namedef{ext@\FB@captype}{#1}%
1418   \let\float@do=\relax
1419   \xdef\@tempa{\noexpand\float@exts{\the\float@exts \float@do{#1}}}%
1420   \@tempa}
1421 \@onlypreamble\flnew@ext
1422 \DeclareFNOpt*{within}{\flnew@within{#1}}
1423 \newcommand\flnew@within[1]{\@addtoreset{\FB@captype}{#1}%
1424   \expandafter\edef\csname the\FB@captype\endcsname{%
1425       \expandafter\noexpand\csname
1426         the#1\endcsname.\noexpand\arabic{\FB@captype}}}
1427 \@onlypreamble\flnew@within
1428 \def\ProcessOptionsWithKV#1{%
1429   \let\@tempc\relax
1430   \let\FR@tmp\@empty
1431   \@for\CurrentOption:=\@classoptionslist\do{%
1432     \@ifundefined{KV@#1@\CurrentOption}%
1433     {}%
1434     {%
1435       \@ifundefined{KV@#1@\CurrentOption @default}{%
1436        \PackageInfo{#1}{Global option `\CurrentOption' ignored}%
1437       }{%
1438       \PackageInfo{#1}{Global option `\CurrentOption' processed}%
1439       \edef\FR@tmp{\FR@tmp,\CurrentOption,}%
1440       \@expandtwoargs\@removeelement\CurrentOption
1441         \@unusedoptionlist\@unusedoptionlist
1442         }%
1443     }%
1444   }%
1445   \edef\FR@tmp{%
1446     \noexpand\caption@setkeys[floatrow]{#1}{%
1447       \FR@tmp\@ptionlist{\@currname.\@currext}%
1448     }%
1449   }%
1450   \FR@tmp
1451   \let\CurrentOption\@empty
1452   \AtEndOfPackage{\let\@unprocessedoptions\relax}}
1453 \ProcessOptionsWithKV{floatrow}
1454 \FR@iffancy{\RequirePackage{fr-fancy}}\relax
1455 \let\ProcessOptionsWithKV\undefined
1456 \AtBeginDocument{
1457  \FR@ifrawfloats
1458   {\let\FR@tmp\flrow@Raw@restyle
1459  }{\flrow@restyle{table}\flrow@restyle{figure}%
1460    \let\FR@tmp\flrow@restyle
1461   }\the\flrow@types
1462  \@onlypreamble\flrow@restyle\@onlypreamble\flrow@Raw@restyle
1463  \flrow@types={}}
1464 \AtBeginDocument{%
1465 \@ifundefined{sf@@@subfloat}{\@tempswafalse}{\@tempswatrue}
1466 \if@tempswa\RequirePackage{fr-subfig}\fi}
1467 \AtBeginDocument{%
1468 \@ifundefined{LT@array}{\@tempswafalse}{\@tempswatrue}
1469 \if@tempswa\RequirePackage{fr-longtable}\fi}
1470 \endinput
1471 %%
1472 %% End of file `floatrow.sty'.