%PDF- %PDF-
| Direktori : /data/old/usr/share/texlive/texmf-dist/tex/latex/bigfoot/ |
| Current File : //data/old/usr/share/texlive/texmf-dist/tex/latex/bigfoot/bigfoot.sty |
%%
%% This is file `bigfoot.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% bigfoot.dtx (with options: `style')
%%
%% IMPORTANT NOTICE:
%%
%% For the copyright see the source file.
%%
%% Any modified versions of this file must be renamed
%% with new filenames distinct from bigfoot.sty.
%%
%% For distribution of the original source see the terms
%% for copying and modification in the file bigfoot.dtx.
%%
%% This generated file may be distributed as long as the
%% original source files, as listed above, are part of the
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%%
%% bigfoot is part of the bigfoot bundle for critical typesetting
%% Copyright 2004, 05, 06 David Kastrup <dak@gnu.org>
%%
\NeedsTeXFormat{LaTeX2e}
\def\FN@next $#1: #2 #3${#2}
\ProvidesPackage{bigfoot}[\FN@next $Date: 2006/07/15 21:24:56 $
\FN@next $Revision: 1.25 $ makes footnotes work]%}
\DeclareOption{para}{\PackageInfo{bigfoot}{Compatibility option `para'
has no effect:^^J%
Spacing will be guessed from `\string\@makefntext' unless^^J%
`\string\@preparefnhtext' is redefined}}
\DeclareOption{para*}{\PackageInfo{bigfoot}{Compatibility option
`para*':^^J%
Redefining `\string\@preparefnhtext'}%
\def\@preparefnhtext{\ifx\@thefnmark\@empty
\else\@makefnmark\nobreak\fi}}
\DeclareOption{ruled}{\PassOptionsToPackage{ruled}{manyfoot}}
\DeclareOption{verbose}{\AtBeginDocument{%
\def\@testdef #1#2#3{%
\def\reserved@a{#3}%
\expandafter \ifx \csname #1@#2\endcsname
\reserved@a
\else \@tempswatrue
\typeout{Changed label #1/#2:
\csname #1@#2\endcsname->#3}%
\fi}}}
\ProcessOptions*
\ifx\hypersetup\@undefined
\PassOptionsToPackage{hyperfootnotes=false}{hyperref}
\else
\hypersetup{hyperfootnotes=false}
\fi
\RequirePackage{etex}
\RequirePackage{manyfoot}
\RequirePackage{suffix}
\RequirePackage{perpage}
\def\MFL@reinsout#1#2{\ifvoid#2\else
\ifnum\count\@currbox>\z@
\advance\@pageht \ht#2%
\advance\@pageht \skip#2%
\advance\@pageht \dp#2%
\fi
\MFL@realinsert{#2}{\unvbox#2}%
\fi
}
\def\MFL@reins#1#2{\ifvoid#2\else\insert#2{\floatingpenalty\@MM}\fi}
\long\def\MFL@mpinsert#1#2{%
\global\setbox#1\vbox{%
\unvbox#1%
\nointerlineskip
\vbox{#2}%
}%
}
\def\MFL@minipage{%
\ifinner\else
\let\MFL@mpinsertsave\MFL@insert
\MFL@reinsert \let\MFL@insert\MFL@mpinsert
\fi
}
\def\MFL@mpreinsert#1#2{%
\ifvoid#2\else
\setbox\@tempboxa\vbox\bgroup\unvbox#2%
\global\setbox#2\lastbox
\setbox\z@\lastbox
\ifvoid\z@
\egroup
\setbox\z@\box#2%
\else
\MFL@removevboxes \unvbox\z@
\egroup
\setbox\z@\box#2%
\MFL@mpinsertsave#2{\unvbox\@tempboxa}%
\fi
\ifvoid\z@\else
\MFL@mpinsertsave#2{\unvbox\z@}%
\fi
\marks\FN@slave{\number\FN@id}%
\fi}
\def\MFL@removevboxes{{\setbox\z@\lastbox
\ifvbox\z@ \MFL@removevboxes \unvbox\z@\fi}}
\ifx\NCC@makemark\@undefined
\ifx\NCC@makefnmark\@undefined \else
\def\NCC@makemark{\NCC@makefnmark}
\fi
\fi
\def\MFL@startplain#1{\global\dimen#1\maxdimen
\@cons\FN@nestlist{{}#1}%
\expandafter\expandafter\expandafter\newbox\FN@cache#1}
\let\MFL@startpara\MFL@startplain
\def\RestyleFootnote#1#2{\expandafter\xdef
\csname Footnotetext#1\endcsname{\expandafter
\noexpand\csname MFL@fnote#2\endcsname{\csname footins#1\endcsname}}}
\expandafter\def\expandafter\FN@stripfootins\string\footins{}
\def\FN@restylefootnote#1#2{{\edef\next{%
\noexpand\RestyleFootnote{\expandafter\FN@stripfootins
\string#1}{#2}}\next}}
\def\FN@specific#1#2{\romannumeral
\ifcsname FN\string#2\number#1\endcsname
\expandafter
\z@\csname FN\string#2\number#1\expandafter\endcsname
\else\expandafter\z@
\expandafter#2\fi}
\def\FootnoteSpecific#1{\count@\csname footins#1\endcsname\toks@{}%
\FN@specific@ii}
\long\def\FN@specific@ii#1#2{\toks@\expandafter{\the\toks@#1}%
\the\expandafter\toks@
\csname FN\string#2\number\count@\endcsname}
\WithSuffix\def\FN@specific@ii\long{\toks@\expandafter
{\the\toks@\long}\FN@specific@ii}
\WithSuffix\def\FN@specific@ii\global{\toks@\expandafter
{\the\toks@\global}\FN@specific@ii}
\WithSuffix\def\FN@specific@ii\expandafter{\expandafter
\FN@specific@ii\expandafter}
\def\FN@slotxdef#1{%
\global\expandafter\xdef\csname FN@slot#1\endcsname}
\def\FN@slotget#1{\csname FN@slot#1\endcsname}
\def\FN@slotfreelist{}
\def\FN@nextslot{1}
\def\FN@newslot#1{%
\ifx\FN@slotfreelist\@empty
\edef#1{\FN@nextslot}%
\xdef\FN@nextslot{\number\numexpr \FN@nextslot+\@ne}%
\else
\let#1\FN@slotfreelist
\xdef\FN@slotfreelist{\csname FN@slot\FN@slotfreelist\endcsname}%
\fi
}
\def\FN@freeslot#1{%
\global\expandafter\let\csname FN@slot#1\endcsname=\FN@slotfreelist
\xdef\FN@slotfreelist{#1}}
\global\let\FN@stacklist\@empty
\def\DefineFootnoteStack#1{%
\global\expandafter\let\csname FN@stack@#1\endcsname\@empty
\@cons\FN@stacklist{{#1}}%
}
\AtEndDocument{\FN@checkstacklist}
\def\FN@checkstacklist{{\let\@elt\FN@checkstack
\FN@stacklist}}
\def\FN@checkstack#1{{\let\@elt\FN@checkstackentry
\csname FN@stack#1@\endcsname}}
\def\FN@checkstackentry#1#2#3{%
\PackageError{bigfoot}{Unfinished #1 #2 from line #3}%
{The specified footnote range is uncomplete}}
\def\PushFootnoteMark#1{{\let\@elt\relax
\expandafter\unrestored@protected@xdef \csname FN@stack@#1\endcsname
{\@elt{#1}{\@thefnmark}{\number\inputlineno}\csname
FN@stack@#1\endcsname}}}
\def\PopFootnoteMark#1{\expandafter
\ifx\csname FN@stack@#1\endcsname\@empty
\PackageError{bigfoot}{Empty footnote stack #1}%
{The specified footnote type has no uncompleted range}%
\else
{\let\@elt\FN@firstpop
\iffalse{\fi\csname FN@stack@#1\endcsname}}\fi}
\def\FN@firstpop#1#2#3{\protected@xdef\@thefnmark{#2}%
\let\@elt\relax
\expandafter\protected@xdef\csname FN@stack@#1\endcsname{%
\iffalse}\fi}
\def\FN@cache#1{\csname FN@cache\number#1\endcsname}
\def\FN@sortlist{{%
\setbox\z@\lastbox
\ifvoid\z@ \else \FN@sortlist\FN@sortlistii \fi}}
\def\FN@sortlistii{%
\setbox\tw@\lastbox
\ifvoid\tw@\else
\ifdim\wd\tw@<\wd\z@ {\FN@sortlistii}%
\fi\nointerlineskip\box\tw@\fi\nointerlineskip\box\z@}
\def\FN@sortinsert#1#2{\ifvoid\FN@cache#2%
\ifvoid#2\else\global\setbox#2\vbox{\unvbox#2%
\FN@sortlist}\fi\fi}
\def\FN@maybeinvalidatecache#1#2{%
\ifvoid#2\else\global\setbox\FN@cache#2=\box\voidb@x\fi}
\def\FN@regeneratecache#1#2{%
\global\setbox\FN@cache#2=%
\ifvoid#2%
\box\voidb@x
\else
\vbox{\vbox{\unvcopy#2%
\setbox\z@\lastbox
\def\FN@masterinsert{#2}%
\FN@assembleboxes
\global\setbox\FN@cache#2\box\z@}%
\nointerlineskip \box\FN@cache#2}%
\fi}
\def\FN@mayberegeneratecache#1#2{%
\ifvoid\FN@cache#2%
\FN@regeneratecache{}#2%
\fi}
\def\FN@cachesize#1#2{%
\ifvoid\FN@cache#2%
\else
+\skip#2+(\ht\FN@cache#2+\dp\FN@cache#2)*\count#2/\@m
\fi}
\def\FN@clearcache#1#2{%
\global\setbox\FN@cache#2=\box\voidb@x}
\def\@makefnvtext#1{%
\FN@specific\FN@masterinsert\@makefntext{%
\clubpenalties\tw@\@MM\clubpenalty
\vadjust{\nobreak\vskip-\baselineskip}\nobreak\hfill\break#1}}
\ifx\@preparefnhtext\@undefined
\def\@preparefnhtext{{%
\setbox\z@\vbox{\FN@specific\FN@masterinsert\@makefntext{%
\unskip\unpenalty\setbox\z@\lastbox
\dimen@
\ifnum\parshape>\z@
\dimexpr\parshapeindent\tw@-\parshapeindent\@ne\relax
\else \ifnum\hangafter=\@ne\hangindent \else
\ifnum\hangafter=\m@ne -\hangindent
\else \z@ \fi\fi\fi
\dimen@ii\dimen@
\ifhbox\z@ \advance\dimen@-\wd\z@
\setbox\z@\hbox{\unhbox\z@}%
\advance\dimen@\wd\z@
\fi
\xdef\FN@tempinfo{\hskip\the\dimen@
\vadjust{}\nobreak\hskip-\the\dimen@ii\relax}}}}%
\FN@tempinfo}
\fi
\def\@makefnstartbox{%
\reset@font\footnotesize
\hsize\MFL@columnwidth \@parboxrestore
\interlinepenalty\FN@specific\FN@masterinsert\interfootnotelinepenalty
\widowpenalty\FN@specific\FN@masterinsert\footnotewidowpenalty
\clubpenalty\FN@specific\FN@masterinsert\footnoteclubpenalty
\advance\linepenalty500\relax}
\def\@makefnendbox{%
\widowpenalty\FN@specific\FN@masterinsert\finalfootnotewidowpenalty}
\newcount\footnotewidowpenalty
\footnotewidowpenalty=250
\newcount\footnoteclubpenalty
\footnoteclubpenalty=250
\newcount\finalfootnotewidowpenalty
\finalfootnotewidowpenalty=4000
\ifx\@makefnvbox\@undefined
\def\@makefnvbox#1{\vbox{%
\@makefnstartbox
\clubpenalties\tw@\@MM\clubpenalty
\let\@thefnmark\@empty
\FN@specific\FN@masterinsert\@makefntext{\rule\z@\footnotesep
\nobreak
#1\@finalstrut\strutbox
\@makefnendbox}}}
\fi
\def\hfootfraction{0.9}
\def\vtypefraction{0.6}
\def\FN@assembleboxes{%
\ifhbox\z@
\dimen@\dp\z@
\dimen@ii\z@
\setbox\tw@\box\voidb@x
\loop \advance\dimen@ii\dimexpr\ht\z@+\dp\z@\relax
\setbox\tw@\hbox{\box\z@\unhbox\tw@}%
\setbox\z@\lastbox
\ifhbox\z@
\repeat
{\FN@assembleboxes\nointerlineskip\unvbox\z@}%
\global\setbox\FN@tempbox\copy\tw@
\setbox\z@\@makefnvbox{%
{\unhbox\FN@tempbox}%
\setbox\z@\lastbox\FN@joinhboxes}%
\ifdim\FN@vfound>\dimexpr\vtypefraction\p@*\FN@found\relax
\ifdim\dimexpr \ht\z@+\dp\z@>\hfootfraction\dimen@ii
\global\setbox\FN@tempbox\box\tw@
\setbox\z@\@makefnvbox{\let\@makefnbreak\FN@pseudofillbreak
{\unhbox\FN@tempbox}\setbox\z@\lastbox\FN@joinhboxes}%
\fi
\fi
\setbox\tw@\box\voidb@x
\ht\z@\dimexpr \ht\z@+\dp\z@-\dimen@\relax
\dp\z@\dimen@
\else
\ifvbox\z@
{\setbox\z@\lastbox
\FN@assembleboxes\nointerlineskip\unvbox\z@}%
\fi
\fi}
\def\FN@fuzzyeval#1#2#3{%
\ifdim\dimexpr(#3)<\dimexpr(#2)\relax
\ifdim\dimexpr(#3)>\dimexpr(#1)\relax
*(\dimexpr(#3)-(#1))%
/(\dimexpr(#2)-(#1))%
\else *\z@
\fi
\fi}
\def\FN@fuzzyor#1#2{(\p@-(\p@-(#1))*(\dimexpr\p@-(#2))/\p@)}
\def\FN@magicglue#1#2#3#4#5#6{%
\dimen@\dimexpr\p@\FN@fuzzyeval{#1}{#2}\FN@lasthsize\relax
\dimen@ii\dimexpr\p@\FN@fuzzyeval{#3}{#4}{\ht\z@+\dp\z@}\relax
\dimen@\dimexpr\FN@fuzzyor\dimen@\dimen@ii
\count@\numexpr((#6)-(#5))*\dimen@/\p@+(#5)\relax
\xdef\FN@vfound{\the\dimexpr\FN@vfound+\dimen@}%
\ifnum\count@>-\@M
\penalty\count@
\hskip\glueexpr -\parfillskip+1em minus 0.5em\relax
\else
\FN@pseudobreak
\fi
\xdef\FN@found{\number\numexpr\FN@found+\@ne}%
}
\def\FN@pseudobreak{%
{\parskip\z@skip\parfillskip\z@skip\parindent\z@\vadjust{}\par\noindent
\vadjust{\nobreak\vskip-\baselineskip}\nobreak\hfill\break}}
\def\FN@pseudofillbreak{\nobreak\hskip\parfillskip\FN@pseudobreak}
\def\@makefnbreak{\FN@magicglue {\footnotesep+\dp\strutbox}%
{\footnotesep+\dp\strutbox+\baselineskip}%
{\footnotesep+\dp\strutbox+0.5\baselineskip}%
{\footnotesep+\dp\strutbox+2\baselineskip}{-200}{-12000}}
\def\FN@joinhboxes{%
\begingroup\setbox\z@\lastbox
\ifhbox\z@ \FN@joinhboxes
\endgroup
\nobreak\hskip\parfillskip
\@makefnbreak
\else
\endgroup
\vadjust{\nobreak\vskip-\baselineskip}\nobreak\hfill\break
\xdef\FN@vfound{\z@}%
\xdef\FN@found{\z@}%
\fi
\xdef\FN@lasthsize{\the\dimexpr \ht\z@ +\dp\z@}%
\unhbox\z@}
\def\FN@par{\unskip\nobreak\hskip\parfillskip
\vadjust{\vskip\parskip}\break\null\kern\parindent\ignorespaces}
\def\FN@noindent{\unkern}
\def\FN@indent{\unkern{\setbox\z@\null\wd\z@\parindent\box\z@}}
\def\MFL@fnoteplain{\FN@fnotenested{plain}}
\def\MFL@fnotepara{\FN@fnotenested{para}}
\def\FN@fnotenested#1#2#3{%
\edef\reserved@d{#1}%
\FN@checkvariant{\edef\reserved@d}{%
\FN@checkvariant{\FN@restylefootnote{#2}}%
{\csname FN@fnote\reserved@d\endcsname{#2}{#3}}}}
\def\FN@checkvariant#1#2{\def\reserved@a{#1}%
\def\reserved@b{#2}%
\futurelet\reserved@c\FN@checkvariantii}
\def\FN@checkvariantii{%
\ifx\reserved@c+%
\reserved@a{plain}\expandafter\@firstoftwo
\else\ifx\reserved@c-%
\reserved@a{para}\expandafter\expandafter\expandafter
\@firstoftwo
\fi\fi
\reserved@b}
\newcounter{FN@totalid}
\MakeSorted{FN@totalid}
\def\FN@fnoteplain{\FN@fnotecommon\vbox}
\def\FN@fnotepara{\FN@fnotecommon\hbox}
\def\FN@masterinsert{\@cclv}
\newcount\FN@id
\FN@id\@ne
\newmarks\FN@master
\newmarks\FN@slave
\let\FN@errorstack\@empty
\def\FN@fnotecommon#1#2#3{%
\leavevmode
\stepcounter{FN@totalid}%
\NCC@makemark{#3}%
\ifnum#2<\FN@masterinsert
\FN@colorstackbgroup\MFL@minipage
\FN@newslot\FN@masterslot
\count@\FN@id
\dimen@=\dimexpr64\p@*\FN@masterinsert-\c@FN@totalid sp\relax
\def\FN@masterinsert{#2}%
\edef\FN@errorstack{\FN@errorstack^^J%
\FN@masterinsert\space entered in line \number\inputlineno}%
\let\FN@boxtype=#1%
\setbox\z@#1\bgroup
\let\current@color\default@color
\FN@@color@begingroup
\let\MFL@minipage\relax
\let\MFL@endminipage\relax
\@makefnstartbox
\let\@listdepth\@mplistdepth \@mplistdepth\z@
\@itemdepth\z@ \@enumdepth\z@
\protected@edef\@currentlabel{\csname p@footnote%
\expandafter\FN@stripfootins\string#2\endcsname\@thefnmark}%
\ifx\FN@boxtype\vbox \normalcolor\nobreak
\else \FN@specific{#2}\@preparefnhtext \normalcolor
\fi
\FN@specific{#2}\@makefntext
\iffalse\fi
\expandafter\xdef\csname FN@ht\number#2\endcsname{\the\footnotesep}%
\expandafter\xdef\csname FN@dp\number#2\endcsname{\the\dp\strutbox}%
\marks\FN@master{\FN@masterslot}%
\marks\FN@slave{\number\FN@id}%
\nobreak
\bgroup
\aftergroup\FN@commonending
\ifx\FN@boxtype\vbox
\rule\z@\footnotesep
\else
\ifx\FN@par\par\else
\let\FN@@par\par
\let\FN@@noindent\noindent
\let\FN@@indent\indent
\fi
\everyvbox\expandafter{\expandafter\everyvbox
\expandafter{\the\everyvbox}%
\let\par\FN@@par
\let\noindent\FN@@noindent
\let\indent\FN@@indent
\the\everyvbox}%
\let\par\FN@par
\let\noindent\FN@noindent
\let\indent\FN@indent
\fi
\afterassignment\ignorespaces
\expandafter\FN@fnotecommonii
\else
\PackageError{bigfoot}{#2 forbidden in \FN@masterinsert.}%
{Higher-placed footnotes can't be anchored in inferior ones.^^J%
I am not putting this text in a footnote. History:%
\FN@errorstack}%
\rule{1em}{\ht\strutbox}%
\fi}
\def\FN@fnotecommonii#{\let\next}
\newmarks\FN@color
\def\FN@colorstackbgroup{\let\FN@savecolorstack\FN@colorstack
\global\let\FN@colorstack\@empty
\bgroup
\ifdefined\FN@savecolorstack\else
\let\FN@@set@color\set@color
\let\FN@@reset@color\reset@color
\let\FN@@color@begingroup\color@begingroup
\fi
\let\set@color\FN@set@color
\let\reset@color\FN@reset@color
\let\color@begingroup\FN@color@begingroup}
\def\FN@colorstackegroup{\egroup\ifx\FN@colorstack\@empty
\global\let\FN@colorstack\FN@savecolorstack \fi}
\def\FN@colorstackfinish{\def\@elt##1##2{\FN@@reset@color##2}%
\FN@colorstack
\def\@elt##1##2{\noexpand\@elt{}{##2}}%
\xdef\FN@colorstack{\FN@colorstack}%
\let\@elt\relax
\marks\FN@color{}}
\def\FN@reset@color{%
\bgroup\def\@elt##1##2{\def\FN@next{##1}{\gdef\FN@colorstack{##2}}}%
\let\FN@next\@empty
\FN@colorstack
\ifx\FN@next\@empty
\FN@colorstackegroup
\else \egroup
\FN@@reset@color
\marks\FN@color{\FN@colorstack}%
\fi}
\def\FN@color@begingroup{%
\let\reset@color\FN@@reset@color
\let\color@begingroup\FN@@color@begingroup
\let\set@color\FN@@set@color
\color@begingroup}
\def\FN@set@color{\FN@@set@color
\xdef\FN@colorstack{\@elt{\current@color}{\FN@colorstack}}%
\marks\FN@color{\FN@colorstack}}
\def\FN@coloraftersplit#1{%
\def\@elt##1##2{##2\def\current@color{##1}\set@color}%
#1%
\let\@elt\relax}
\def\FN@commonending{%
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\expandafter
\iffalse \FN@specific\FN@masterinsert\@makefntext\fi
\@makefnendbox
\ifx\FN@boxtype\vbox\@finalstrut\strutbox \else \unskip \fi
\FN@colorstackfinish
\color@endgroup
\egroup
\global\advance\FN@id\@ne
\FN@slotxdef\FN@masterslot{\number\FN@id}%
\ifhbox\z@
\global\setbox\FN@tempbox\copy\z@
\setbox\tw@\@makefnvbox{\unhbox\FN@tempbox}%
\ht\z@\dimexpr\ht\tw@+\dp\tw@-\FN@masterslot sp\relax
\else
\ht\z@\dimexpr\ht\z@+\dp\z@-\FN@masterslot sp\relax
\fi
\wd\z@\dimen@
\dp\z@\FN@masterslot sp\relax
\MFL@insert\FN@masterinsert{\nointerlineskip\box\z@}%
\marks\FN@slave{\number\FN@id}%
\MFL@endminipage
\FN@colorstackegroup
}
\dimen\footins\maxdimen
\gdef\FN@nestlist{}
\newdimen\FN@outervsize
\newskip\FN@vsize
\newbox\FN@insertions
\def\FN@retaindelayed{%
\setbox\z@\lastbox
\ifcase
\ifvoid\z@\m@ne\fi \FN@config\z@
\ifnum\dp\z@=\count@\else \FN@freeslot{\number\dp\z@}\fi
\FN@retaindelayed
\or
{\FN@retaindelayed \nointerlineskip \box\z@}%
\else \unpenalty \setbox\z@\lastbox
\fi}
\def\MFL@processplain#1{%
\ifvoid\FN@cache#1%
\global\setbox\FN@tempbox\vbox\bgroup
\unvbox#1%
\count@\z@
\let\@elt\FN@removecheck \FN@retaindelayed
\ifvoid\z@ \egroup
\else \nointerlineskip \box\z@ \egroup
\MFL@realinsert{#1}{\unvbox\FN@tempbox}%
\fi
\expandafter\expandafter
\fi\iffalse\fi
\global\setbox#1\vbox\bgroup%
\unvbox\FN@cache#1%
\ifnum\lastpenalty>\z@
\unpenalty
\setbox\z@\lastbox
\else
\setbox\z@\box\voidb@x
\fi
\count@\dp\z@
\global\setbox\FN@tempbox\vbox\bgroup
\box\z@
\nobreak
\unvbox#1%
\let\@elt\FN@removecheck \FN@retaindelayed
\ifvoid\z@ \egroup \MFL@removevboxes\egroup
\else \nointerlineskip \box\z@ \egroup
\MFL@removevboxes \egroup
\MFL@realinsert{#1}{\unvbox\FN@tempbox}%
\fi}
\let\MFL@processpara\MFL@processplain
\newtoks\FN@output
\FN@output\output
\newbox\FN@tempbox
\newinsert\FN@savebox
\count\FN@savebox\@m
\dimen\FN@savebox\maxdimen
\skip\FN@savebox\z@skip
\global\setbox\FN@savebox\box\voidb@x
\expandafter\expandafter\expandafter\let\FN@cache\FN@savebox=\@cclv
\expandafter\def\csname FN@ht\number\FN@savebox\endcsname{\topskip}%
\expandafter\def\csname FN@dp\number\FN@savebox\endcsname{\maxdepth}
\def\FN@list{\MFL@list\@elt{}\footins}
\def\FN@sweepbox#1#2{\ifvoid#2\else
\nointerlineskip\box#2\penalty#2\fi}
\def\FN@sweepcachebox#1#2{\nointerlineskip
\box\FN@cache#2%
\penalty\FN@cache#2}
\def\FN@copycachebox#1#2{\nointerlineskip
\copy\FN@cache#2%
\penalty\FN@cache#2}
\def\FN@restoreboxes{\count@\lastpenalty \unpenalty
\ifnum\count@>\z@
\global\setbox\count@\lastbox
\expandafter\FN@restoreboxes
\fi}
\def\FN@removecheck#1#2{%
\ifnum#1<\FN@slotget{\number\dp\z@} %
\ifnum#2>\FN@slotget{\number\dp\z@} %
\@ne\fi\fi}
\def\FN@recordinsertparam#1#2{\ifvoid#2\else
\global\skip\number#2=\the\skip#2\relax\fi}
\def\FN@clearinsertparam#1#2{\ifvoid#2\else
\global\skip#2=\z@skip\fi}
\def\FN@insertouterspace#1#2{\ifvoid#2\else
+\skip#2+(\ht#2+\dp#2)*\count#2/\@m\fi}
\def\FN@list@iterate#1{\let\FN@eltsave\@elt
\let\@elt#1%
\FN@list
\let\@elt\FN@eltsave}
\def\FN@nest@iterate#1{\let\FN@eltsave\@elt
\let\@elt#1%
\FN@nestlist
\let\@elt\FN@eltsave}
\def\FN@allmarks#1{\@elt{#1}%
\ifnum#1<\count266
\expandafter\FN@allmarks\expandafter{\number\numexpr#1+\@ne}%
\fi}
\def\FN@sweeptopmarks{\global\setbox\FN@topmarkbox\vbox{%
\def\@elt##1{\marks##1{\unexpanded\expandafter{\topmarks##1}}}%
\FN@allmarks0}}
\newbox\FN@topmarkbox
\long\def\FN@establishmarks#1#2{\edef\reserved@a{\unexpanded{#2}}%
\edef\reserved@b{\unexpanded\expandafter{\splitbotmarks#1}}%
\ifx\reserved@a\reserved@b
\marks#1{\unexpanded\expandafter{\splitfirstmarks#1}}%
\marks#1{\unexpanded\expandafter{\reserved@b}}%
\fi}
\def\FN@markspassone#1{\noexpand\FN@establishmarks{#1}%
{\unexpanded\expandafter{\splitbotmarks#1}}}
\def\FN@pseudomarks#1{\marks#1{X}}
\def\FN@insertmarks{%
{\setbox\z@\copy\@cclv
\splittopskip-\maxdimen\relax
\vbadness=\maxdimen
\loop
\ifvoid\z@\else
{\let\@elt\FN@pseudomarks
\setbox\z@\vbox{\FN@allmarks0\nobreak\unvcopy\z@}%
\setbox\z@\vsplit\z@ to\maxdimen}%
\let\@elt\FN@markspassone
\edef\next{\FN@allmarks0}%
\setbox\z@\vbox{\nobreak\unvbox\z@}%
{\setbox\z@\vsplit\z@ to\maxdimen}%
\next
\repeat}}
\def\FootnoteMainMinimum{0pt}
\savingvdiscards=\@ne
\output{%
\ifnum\outputpenalty=-13750
\ifnum\insertpenalties>\z@
\PackageError{bigfoot}{Too much insertion material}{%
This error means that the output routine was not able to^^J%
gather all floating insertions in a single pass.^^J%
Complain to the author if you consider this a bug}%
\fi
\global\advance\FN@outervsize\dimexpr\ht\@cclv-\vsize\relax
\global\setbox\@cclv\box\voidb@x
\else
\edef\FN@outputpenalty{\number\outputpenalty}%
\ifvoid\FN@savebox
\ifvoid\@holdpg
\FN@sweeptopmarks
\fi
\ifvoid\@cclv
\global\FN@outervsize\z@
\else
\global\FN@outervsize\ht\@cclv
\global\setbox\@cclv\vbox{\unvbox\@cclv\boxmaxdepth\maxdepth}%
\global\advance\FN@outervsize-\ht\@cclv\relax
\fi
\global\let\FN@vsadjustlist\@empty
\FN@normaloutput
\else
\ifvbox\@cclv
\dimen@\ht\@cclv
\global\setbox\@cclv\vbox{\unvbox\@cclv\boxmaxdepth\maxdepth}%
\global\advance\FN@outervsize\dimexpr\dimen@-\ht\@cclv\relax
\fi
\FN@nest@iterate\FN@maybeinvalidatecache
\vskip\z@skip
\unvbox\FN@savebox
\loop
\count@\lastpenalty
\ifnum\count@>\z@
\unpenalty
\setbox\z@\lastbox
\global\setbox\count@\vbox{\unvbox\z@\unvbox\count@}%
\repeat
\ifcase
\ifnum\FN@outputpenalty=-13749 \@ne\fi
\ifnum\FN@outputpenalty=-13751 \@ne\fi \tw@
\or
\FN@vsadjustlist
\global\setbox\@cclv\vbox{\pagediscards}%
\global\setbox\@cclv\lastbox
\unskip
\ifnum\FN@outputpenalty=-13749
\FN@normaloutput
\else
\the\FN@output
\fi
\else
\dimen@\topskip
\FN@vsadjustlist
\setbox\z@\lastbox
\unskip
\global\setbox\@cclv\vbox{\unvbox\z@
\ifnum\outputpenalty<\@M \penalty\outputpenalty\fi
\pagediscards
\ifvbox\@cclv
\global\setbox\@cclv\vbox{\break\unvbox\@cclv}%
{\splittopskip-\maxdimen \setbox\z@\vsplit\@cclv to\z@}%
\unvbox\@cclv
\fi
\boxmaxdepth\maxdepth}%
\global\outputpenalty\FN@outputpenalty\relax
\ifdim\dimen@>\z@
\hrule\@height\z@\@depth\z@
\unvcopy\FN@topmarkbox
\penalty-13750
\hrule\@height\z@\@depth\z@
\FN@insertmarks
\penalty-13749
\FN@prepareoutput
\global\topskip-\maxdimen
\global\vsize0.5\maxdimen
\global\advance\FN@outervsize-\vsize
\else
\FN@normaloutput
\fi
\fi
\fi
\fi}
\def\FN@normaloutput{%
\FN@nest@iterate{\FN@insertouterspace\global\FN@vsize\dimexpr\z@}%
\FN@nest@iterate\FN@sortinsert
\FN@nest@iterate\FN@clearcache
\xdef\FN@config{\noexpand\@elt{\number0\botmarks\FN@slave}%
{\number\maxdimen}}%
\FN@nest@iterate\FN@reconfig
\global\advance\FN@vsize\FN@outervsize\relax
\ifcase
\ifnum\insertpenalties>\z@ \@ne\fi
\ifnum\outputpenalty>-\@M
\ifdim\FN@vsize>-\gluestretch\FN@vsize \tw@ \fi
\ifdim\FootnoteMainMinimum>\ht\@cclv \tw@ \fi
\fi
\ifdim\FN@vsize<\glueshrink\FN@vsize \thr@@ \fi
\ifx\FN@vsadjustlist\@empty \else \thr@@\fi\z@
\ifvbox\@cclv
{\vbadness\maxdimen
\global\setbox\@cclv\vbox
spread\FN@vsize{\unvbox\@cclv\boxmaxdepth\maxdepth}}%
\fi
\the\FN@output
\FN@nest@iterate\FN@clearcache
\or
\FN@restartoutput
\penalty -13749
\or
\dimen@=\dimexpr\FN@vsize-\glueshrink\FN@vsize\relax
\FN@prepareoutput
\global\topskip \normalbaselineskip
\global\vsize \dimen@
\global\advance\FN@outervsize-\vsize
\global\deadcycles\z@
\else
\edef\FN@masterid{\number\maxdimen}%
\def\FN@masterslot{-1}%
\global\setbox\@cclv\vbox{%
\box\@cclv}%
\xdef\FN@config{\noexpand\@elt{\number0\botmarks\FN@slave}%
{\number\maxdimen}}%
\global\setbox\FN@savebox\vbox{}%
\gdef\FN@badness{0}%
\edef\FN@defaultpenalty{\ifnum\outputpenalty<\@M
\number\outputpenalty
\else
0\fi}%
\let\@elt\FN@newlevel
\@elt{}\FN@savebox\FN@nestlist\FN@mainsplitreturn
\let\@elt\relax
\global\setbox\FN@savebox\box\voidb@x
\count@\vbadness
\vbadness\maxdimen
\global\setbox\@cclv\vbox spread\FN@vsize\bgroup
\unvbox\@cclv
\ifnum\lastpenalty>\z@
\unpenalty
\global\setbox\FN@tempbox\lastbox
\else
\global\setbox\FN@tempbox\box\voidb@x
\fi
\setbox\z@\lastbox
\ifvoid\z@
\ifvbox\FN@tempbox
\ifnum\outputpenalty<\@M
\global\setbox\FN@tempbox{\unvbox\FN@tempbox
\penalty\outputpenalty}%
\fi
\global\outputpenalty=\@M
\fi
\egroup \global\setbox\@cclv\box\voidb@x
\else
\MFL@removevboxes
\unvbox\z@
\let\FN@defaultpenalty\@M
\FN@getbreakpenalty
\setbox\z@\lastbox
\ifcase
\ifvbox\FN@tempbox \@ne\fi
\ifvoid\z@ \else \@ne\fi \z@
\or
\global\setbox\FN@tempbox\vbox{\unvbox\z@
\unvbox\FN@tempbox
\ifnum\outputpenalty<\@M
\penalty\outputpenalty
\fi}%
\global\outputpenalty\FN@breakpenalty
\fi
\boxmaxdepth\maxdepth\egroup
\fi
\vbadness\count@
\setbox\z@\box\FN@tempbox
\let\@elt\relax
\dimen@=\dimexpr\FN@vsize-\glueshrink\FN@vsize\relax
\ifcase
\ifvoid\z@ \else\thr@@\fi
\ifdim\ht\@cclv<\normalbaselineskip \@ne\fi
\ifdim\dimen@<\normalbaselineskip \tw@\fi \@ne
\or
\FN@prepareoutput
\global\topskip \normalbaselineskip
\ifdim\dimen@<\normalbaselineskip \dimen@=2\baselineskip\fi
\global\vsize \dimen@
\global\advance\FN@outervsize-\vsize
\global\deadcycles\z@
\or
\setbox\tw@\vbox{%
\the\FN@output
}%
\unvbox\tw@
\unvbox\z@
\FN@nest@iterate\FN@clearcache
\or
\FN@restartoutput
\penalty -13751
\unvbox\z@
\fi
\fi}
\def\FN@prepareoutput{%
{\let\@elt\FN@recordinsertparam
\xdef\FN@vsadjustlist{%
\global\vsize=\the\vsize
\global\topskip=\the\topskip
\global\outputpenalty=\the\outputpenalty\relax
\FN@list}%
\let\@elt\FN@clearinsertparam
\FN@list}%
\global\setbox\FN@savebox\vbox{%
\box\@cclv
\FN@list@iterate\FN@sweepbox}}
\def\FN@restartoutput{%
\dimen@=\dimexpr\FN@vsize-\glueshrink\FN@vsize\relax
\hrule\@height\z@\@depth\z@
\unvcopy\FN@topmarkbox
\penalty -13750
\hrule\@height\z@\@depth\z@
\FN@insertmarks
\FN@prepareoutput
\global\topskip-\maxdimen\relax
\global\vsize 0.5\maxdimen
\global\advance\FN@outervsize-\vsize
\global\deadcycles\z@
}
\def\FN@getbreakpenalty{{\setbox\z@\lastbox
\nointerlineskip\copy\z@
\setbox\z@
\vbox{\unvbox\z@
\count@\FN@defaultpenalty\relax
\FN@getbreakpenaltyii
\xdef\FN@tempinfo{\edef\noexpand\FN@breakpenalty{%
\number\ifnum\count@>-\@M \count@
\else -\@M \fi}}}}%
\FN@tempinfo}
\def\FN@getbreakpenaltyii{%
\ifcase
\ifnum\lastnodetype<\z@ \m@ne\fi
\ifnum\lastnodetype<11 \@ne\fi
\ifnum\lastnodetype>13 \@ne\fi
\numexpr\lastnodetype-9\relax
\or
\PackageError{bigfoot}{Illegal node type}{This can't happen}%
\or
\count@\z@ \unskip \expandafter\FN@getbreakpenaltyii
\or
\count@\z@ \unkern \expandafter\FN@getbreakpenaltyii
\or
\count@\lastpenalty
\unpenalty \expandafter\FN@getbreakpenaltyii
\fi}
\def\FN@mainsplitreturn{}
\newdimen\FN@myvsize
\newcount\bigfoottolerance
\bigfoottolerance=100
\def\FN@getbadness#1{%
{\hfuzz\maxdimen\hbadness\maxdimen\setbox\z@\hbox to\z@{\hskip-#1}}}
\def\FN@newlevel#1#2#3\FN@mainsplitreturn{%
\count@\FN@cache#2%
\ifvoid\count@
#3\FN@mainsplitreturn
\else
{\def\FN@currentinsertion{#2}%
\def\FN@currentrecursion{#3}%
\let\FN@entryconfig\FN@config
\let\FN@entrybadness\FN@badness
\splittopskip\csname FN@ht\number#2\endcsname\relax
\splitmaxdepth\csname FN@dp\number#2\endcsname\relax
\vbadness=\maxdimen
\vfuzz\maxdimen
\let\@elt\relax
\expandafter\FN@newleveli\expandafter}%
\fi}
\def\FN@newleveli{%
\dimen@\dimexpr\ht\count@+\dp\count@\relax
\global\advance\FN@vsize\dimexpr \dimen@
*\count\FN@currentinsertion/\@m\relax\relax
\global\setbox\count@\vbox\bgroup\unvbox\count@
\ifnum\lastpenalty=\z@
\setbox\tw@\box\voidb@x
\setbox\z@\lastbox
\FN@myvsize=\dimexpr\dimen@-\ht\z@-\dp\z@\relax
\else
\unpenalty
\setbox\tw@\lastbox
\setbox\z@\lastbox
\FN@myvsize=\dimexpr\dimen@-\ht\z@-\dp\z@\relax
\dimen@\dp\z@
\setbox\z@{\unvbox\z@
\setbox\z@\lastbox
\unvbox\z@
\unvbox\tw@}%
\ht\z@=\dimexpr\ht\z@+\dp\z@-\dimen@\relax
\dp\z@\dimen@
\fi
\edef\FN@bestebadness{\number\maxdimen}%
\let\FN@bestconfig\@undefined
\let\FN@bestvsize\z@skip
\let\FN@splitcolors\@empty
\ifnum\FN@currentinsertion=\FN@savebox
\else
\def\FN@defaultpenalty{-\@M}%
\edef\FN@masterslot{\number\dp\z@}%
\edef\FN@masterid{\FN@slotget\FN@masterslot}%
\fi
\setbox\z@
\vbox\bgroup
\let\FN@splitcolors\@empty
\setbox\z@\vbox{\vskip-\glueexpr(\FN@vsize-\dimexpr\FN@vsize
\relax\@minus\glueshrink\FN@vsize)%
*\@m/\count\FN@currentinsertion
\unvbox\z@
\ifnum\FN@defaultpenalty>-\@M
\penalty\FN@defaultpenalty\nointerlineskip
\vbox to\maxdimen{}%
\fi}%
\setbox\tw@\vsplit\z@ to%
\dimexpr\FN@vsize*\@m/\count\FN@currentinsertion
-\FN@myvsize
\relax
\ifnum\FN@defaultpenalty>-\@M
\setbox\z@\vbox\bgroup\unvbox\z@\setbox\z@\lastbox
\unpenalty
\ifnum\lastnodetype<\z@
\egroup \setbox\z@\box\voidb@x
\else
\egroup
\fi
\fi
\setbox\tw@\vbox{%
\vskip\glueexpr(\FN@vsize-\dimexpr\FN@vsize
\relax\@minus\glueshrink\FN@vsize)%
*\@m/\count\FN@currentinsertion
\unvbox\tw@\boxmaxdepth\splitmaxdepth}%
\ifnum\FN@currentinsertion=\FN@savebox
\edef\FN@slaveid{\splitbotmarks\FN@slave}%
\FN@contribute@tw@
\ifdim\FootnoteMainMinimum>\FN@myvsize
\loop
\setbox\tw@\vsplit\z@ to\z@
\edef\FN@slaveid{\splitbotmarks\FN@slave}%
\FN@contribute@tw@
\ifcase\ifdim\FootnoteMainMinimum>\FN@myvsize
\ifvoid\z@
\@ne
\else
\tw@
\fi\fi \z@
\or
\PackageWarning{bigfoot}{too little main material}%
\else
\repeat
\fi
\else
\ifnum0\splitbotmarks\FN@master=\FN@masterslot \else
\loop
\FN@contribute@tw@
\setbox\tw@\vsplit\z@ to\z@
\ifnum0\splitbotmarks\FN@master=\FN@masterslot
\else
\repeat
\fi
\let\FN@splitcolors\@empty
\edef\FN@slaveid{\splitbotmarks\FN@slave}%
\FN@contribute@tw@
\fi
\ifx\FN@slaveid\@empty
\edef\FN@slaveid{\number0\topmarks\FN@slave}%
\fi
\ifnum\numexpr\FN@slaveid+\@ne<\FN@masterid
\let\FN@next\FN@slaveid
\else
\let\FN@next\@empty
\fi
\FN@splitfurther}
\def\FN@vsizerecurse{%
\global\advance\FN@vsize
-\dimexpr\FN@myvsize*\count\FN@currentinsertion/\@m \relax\relax
\let\@elt\FN@newlevel
\FN@currentrecursion\FN@mainsplitreturn
\let\@elt\relax
\global\advance\FN@vsize
\dimexpr\FN@myvsize*\count\FN@currentinsertion/\@m \relax\relax}
\def\FN@splitfurther{%
\ifx\FN@next\@empty \else \let \FN@slaveid\FN@next \fi
\let\FN@next\FN@config
\xdef\FN@config{%
\@elt{\FN@slaveid}%
{\FN@masterid}%
\FN@entryconfig}%
\ifx\FN@next\FN@config
\let\@elt\FN@rejoin
\else
\let\@elt\FN@reconfig
\fi
\FN@currentrecursion
\let\@elt\relax
\xdef\FN@badness{\number\FN@entrybadness}%
\FN@checkcurrent
\ifnum
\ifdim\skip@>\z@ \FN@ebadness \else \FN@badness \fi >\FN@bestebadness
\else
\xdef\FN@badness{\number\FN@entrybadness}%
\FN@vsizerecurse
\FN@checkcurrent
\fi
\ifcase
\ifnum\FN@breakpenalty>-\@M \else \@ne \fi
\ifvoid\z@ \@ne \fi
\ifnum\badness<\@MM \else \@ne \fi
\tw@
\or
\expandafter \FN@returnbest
\else
\FN@mayberecordbest
\setbox\tw@\vsplit\z@ to\z@
\edef\FN@next{\splitbotmarks\FN@slave}%
\FN@contribute@tw@
\expandafter \FN@splitfurther
\fi}
\def\FN@checkcurrent{%
\skip@\glueexpr\FN@vsize-\FN@myvsize
*\count\FN@currentinsertion/\@m\relax
\FN@getbreakpenalty
\FN@getbadness\skip@
\xdef\FN@badness{\number\numexpr\FN@badness+%
\FN@breakpenalty+\@M}%
\ifnum\badness>\@M
\edef\FN@ebadness{\number\numexpr\maxdimen-\@ne}%
\else
\ifnum\badness=\@M
\edef\FN@ebadness{\number\numexpr\maxdimen-\tw@}%
\else
\edef\FN@ebadness{\number\numexpr
\FN@badness+\badness}%
\fi
\fi
\dimen@\glueexpr\FN@bestvsize\relax
}
\def\FN@checkforbest{%
\ifnum\FN@breakpenalty>-\@M \else
\ifnum\badness>\@M \else
\@ne
\fi
\fi
\ifnum\FN@bestebadness>\FN@ebadness \@ne\fi
\ifnum\FN@bestebadness<\FN@ebadness \tw@\fi
\ifdim\skip@<\z@
\ifdim\dimen@<\skip@ \@ne \else \tw@\fi
\fi
\ifdim\dimen@>\skip@ \@ne\fi \tw@}
\def\FN@mayberecordbest{%
\ifcase
\FN@checkforbest
\or
\xdef\FN@tempinfo{\def\noexpand\FN@bestvsize{\the\skip@}%
\def\noexpand\FN@bestebadness{\FN@ebadness}%
\def\noexpand\FN@bestbadness{\number\FN@badness}%
\def\noexpand\FN@bestconfig{\FN@config}%
\def\noexpand\FN@bestslaveid{\FN@slaveid}%
\def\noexpand\FN@bestsplitcolors{\FN@splitcolors}%
\def\noexpand\FN@breakpenalty{\FN@breakpenalty}%
\FN@myvsize=\the\FN@myvsize\relax}%
\global\setbox\FN@tempbox\box\z@
\egroup
\FN@tempinfo
\let\FN@splitcolors\FN@bestsplitcolors
\let\FN@slaveid\FN@bestslaveid
\setbox\tw@\vbox{%
\copy\z@\break\nointerlineskip
\copy\FN@tempbox\penalty\FN@tempbox
\let\@elt\FN@copycachebox
\FN@currentrecursion
\xdef\FN@tempinfo{\FN@myvsize=\the\FN@myvsize\relax}}%
\FN@tempinfo
\setbox\z@
\vbox\bgroup
\unvbox\z@
\setbox\z@\box\FN@tempbox
\fi}
\def\FN@returnbest{%
\ifcase\FN@checkforbest
\or
\xdef\FN@tempinfo{\def\noexpand\FN@bestvsize{\the\skip@}%
\def\noexpand\FN@bestebadness{\FN@ebadness}%
\def\noexpand\FN@bestbadness{\number\FN@badness}%
\def\noexpand\FN@bestconfig{\FN@config}%
\def\noexpand\FN@bestslaveid{\FN@slaveid}%
\def\noexpand\FN@bestsplitcolors{\FN@splitcolors}%
\def\noexpand\FN@breakpenalty{\FN@breakpenalty}%
\FN@myvsize=\the\FN@myvsize\relax}%
\global\setbox\FN@tempbox\box\z@
\egroup
\FN@tempinfo
\let\FN@splitcolors\FN@bestsplitcolors
\let\FN@slaveid\FN@bestslaveid
\global\FN@vsize\FN@bestvsize\relax
\or
\global\let\FN@config\FN@bestconfig
\global\FN@vsize\FN@bestvsize
\global\let\FN@badness\FN@bestbadness
\egroup
\setbox\z@\vbox{\unvbox\tw@ \FN@restoreboxes}%
\let\FN@splitcolors\FN@bestsplitcolors
\let\FN@slaveid\FN@bestslaveid
\unvbox\z@
\setbox\z@\lastbox
\fi
\ifnum\FN@currentinsertion=\FN@savebox
\else
\setbox\z@\vbox{%
\dimen@\dp\z@
\unvbox\z@
\ifvoid\FN@tempbox
\else
\global\setbox\FN@tempbox\vbox{%
\marks\FN@master{\FN@masterslot}%
\marks\FN@slave{\FN@slaveid}%
\FN@coloraftersplit\FN@splitcolors
\nobreak
\unvbox\FN@tempbox}%
\ht\FN@tempbox
\dimexpr\ht\FN@tempbox+\dp\FN@tempbox-\FN@masterslot sp\relax
\dp\FN@tempbox\FN@masterslot sp\relax
\wd\FN@tempbox\maxdimen
\fi
\ifdim\dimen@<\splitmaxdepth
\hrule\@height-\dimen@ \@width\z@
\@depth \splitmaxdepth \relax \fi}%
\ht\z@=\dimexpr\ht\z@+\dp\z@-\FN@masterslot sp\relax
\dp\z@=\FN@masterslot sp
\fi
\nointerlineskip \box\z@
\ifvoid\FN@tempbox \egroup
\else
\dimen@-\dimexpr\ht\FN@tempbox+\dp\FN@tempbox\relax
\nointerlineskip\box\FN@tempbox
\nobreak
\expandafter\egroup
\expandafter\ht\expandafter\count@\expandafter\dimexpr
\the\dimen@+\ht\count@\relax
\fi
}
\def\FN@contribute@tw@{%
\begingroup\edef\FN@next{\splitbotmarks\FN@color}%
\ifx\FN@next\@empty \endgroup\else \endgroup
\edef\FN@splitcolors{\splitbotmarks\FN@color}\fi
\setbox4\lastbox
\ifvoid4 \setbox4\vbox{\splitdiscards}%
\setbox\tw@\vbox{\unvbox\tw@\boxmaxdepth\splitmaxdepth}%
\else
\advance\FN@myvsize-\dimexpr\ht4+\dp4\relax
\setbox4\vbox{\unvbox4}%
\advance\FN@myvsize\dimexpr\ht4+\dp4\relax
\unvbox4
\setbox4\vbox{\splitdiscards}%
\setbox\tw@\vbox{\break\unvbox\tw@}%
{\splittopskip-\maxdimen \setbox\tw@\vsplit\tw@ to\z@}%
\fi
\ht4-\dp\tw@
\dp4\ifdim\dp\tw@<\splitmaxdepth \splitmaxdepth \else \dp\tw@ \fi
\advance\FN@myvsize\dimexpr \ht\tw@+\dp4\relax
\unvbox\tw@
\nointerlineskip
\box4 }
\def\FN@uncontribute@tw@{%
\ifvoid\tw@ \else
\setbox\tw@\vbox{\unvbox\tw@\splitdiscards}%
\setbox\z@\vbox{\break\unvbox\z@}%
{\splittopskip-\maxdimen \setbox\z@\vsplit\z@ to\z@}%
\setbox\z@\vbox{\unvbox\tw@\unvbox\z@}\fi}
\def\FN@reconfig#1#2{\ifvoid#2%
\else
\count@\FN@cache#2%
\ifvoid\count@\else
\global\advance\FN@vsize
\glueexpr(\ht\count@+\dp\count@)*\count#2/\@m+\skip#2\relax
\global\setbox\count@ \box\voidb@x
\fi
\global\setbox\count@\vbox\bgroup\vbox\bgroup\unvcopy#2%
\let\@elt\FN@removecheck
\FN@retainkept
\ifvoid\z@ \egroup\egroup \global\setbox\count@ \box\voidb@x
\else \def\FN@masterinsert{#2}%
\FN@assembleboxes\global\setbox\count@\box\z@\egroup
\nointerlineskip\box\count@\egroup
\global\advance\FN@vsize
-\glueexpr(\ht\count@+\dp\count@)*\count#2/\@m+\skip#2\relax
\fi\fi}
\def\FN@rejoin#1#2{{%
\count@\FN@cache#2%
\ifvoid\count@\else
\global\advance\FN@vsize\dimexpr
(\ht\count@+\dp\count@)*\count#2/\@m\relax
\global\setbox\count@\vbox{%
\unvbox\count@
\ifnum\lastpenalty>\z@
\unpenalty
\setbox\tw@\lastbox
\setbox\z@\lastbox
\dimen@\dp\z@
\setbox\z@\vbox{%
\unvbox\z@
\setbox\z@\lastbox
\unvbox\z@
\unvbox\tw@}%
\ht\z@=\dimexpr\ht\z@+\dp\z@-\dimen@\relax
\dp\z@=\dimen@
\nointerlineskip
\box\z@
\fi}%
\global\advance\FN@vsize-\dimexpr
(\ht\count@+\dp\count@)*\count#2/\@m\relax
\fi}}
\def\FN@retainkept{%
\setbox\z@\lastbox
\ifcase
\ifvoid\z@\m@ne\fi \FN@config\z@
{\FN@retainkept \nointerlineskip \box\z@}%
\or
\FN@retainkept
\fi}
\let\output\FN@output
\def\FN@maybestart#1#2#3{\ifx#3\relax
\csname MFL@start#1\endcsname{#2}\fi#3}
\@onlypreamble\FN@maybestart
\AtBeginDocument{\@ifundefined{footinsdefault}%
{\DeclareNewFootnote[plain]{default}%
{\let\@elt\FN@maybestart
\MFL@list\relax}}{}%
\let\c@footnote\c@footnotedefault
\let\thefootnote\thefootnotedefault
\def\thefootnotedefault{\thefootnote}%
}
\def\footnote{\footnotedefault}
\def\footnotemark{\footnotemarkdefault}
\def\footnotetext{\footnotetextdefault}
\endinput
%%
%% End of file `bigfoot.sty'.