summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/bigfoot/bigfoot.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-07-17 22:56:22 +0000
committerKarl Berry <karl@freefriends.org>2006-07-17 22:56:22 +0000
commitd9fe66749d8072f377522910c593df4705a9dc66 (patch)
treeca9258ad5cb90a44ec3c024220a97b98572b214a /Master/texmf-dist/tex/latex/bigfoot/bigfoot.sty
parent037d0c8b95024ed72ea62802db4f25231049bb7d (diff)
bigfoot update (18jul06)
git-svn-id: svn://tug.org/texlive/trunk@1872 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/bigfoot/bigfoot.sty')
-rw-r--r--Master/texmf-dist/tex/latex/bigfoot/bigfoot.sty1315
1 files changed, 1315 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/bigfoot/bigfoot.sty b/Master/texmf-dist/tex/latex/bigfoot/bigfoot.sty
new file mode 100644
index 00000000000..4a27b6154ee
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/bigfoot/bigfoot.sty
@@ -0,0 +1,1315 @@
+%%
+%% 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'.