From d9fe66749d8072f377522910c593df4705a9dc66 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 17 Jul 2006 22:56:22 +0000 Subject: bigfoot update (18jul06) git-svn-id: svn://tug.org/texlive/trunk@1872 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/bigfoot/bigfoot.sty | 1315 +++++++++++++++++++++++ Master/texmf-dist/tex/latex/bigfoot/perpage.sty | 159 +++ Master/texmf-dist/tex/latex/bigfoot/suffix.sty | 28 +- 3 files changed, 1478 insertions(+), 24 deletions(-) create mode 100644 Master/texmf-dist/tex/latex/bigfoot/bigfoot.sty create mode 100644 Master/texmf-dist/tex/latex/bigfoot/perpage.sty (limited to 'Master/texmf-dist/tex/latex/bigfoot') 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 +%% +\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'. diff --git a/Master/texmf-dist/tex/latex/bigfoot/perpage.sty b/Master/texmf-dist/tex/latex/bigfoot/perpage.sty new file mode 100644 index 00000000000..3f4d8e216f4 --- /dev/null +++ b/Master/texmf-dist/tex/latex/bigfoot/perpage.sty @@ -0,0 +1,159 @@ +%% +%% This is file `perpage.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% perpage.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 perpage.sty. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file perpage.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.) +%% +%% perpage is part of the bigfoot bundle for critical typesetting +%% Copyright 2002, 03, 04, 05, 06 David Kastrup +%% +\NeedsTeXFormat{LaTeX2e} +\def\next$#1: #2 #3${#2} +\ProvidesPackage{perpage}[\next$Date: 2006/07/15 21:43:23 $ + \next$Revision: 1.12 $ Reset/sort counters per page] +\newcommand\AddAbsoluteCounter[1] +{\@ifundefined{c@abs#1}{% + \expandafter\newcount\csname c@abs#1\endcsname + \global\value{abs#1}\@ne + \global\expandafter\let\csname cl@abs#1\endcsname\@empty + \expandafter\xdef\csname theabs#1\endcsname{% + \noexpand\number \csname c@abs#1\endcsname}% + \global\@namedef{c@pabs@#1}{\z@=\z@{% + \stepcounter{abs#1}% + \afterassignment}\count@}% + \@addtoreset{pabs@#1}{#1}}{}} +\AddAbsoluteCounter{page} +\def\theabspage{\ifx\thepage\relax + \noexpand\theabspage + \else + \number\c@abspage + \fi} +\newcommand*\MakePerPage[2][\@ne]{% + \pp@makeperpage{#2}\c@pchk@{#1}} +\newcommand*\MakeSorted[1]{% + \setcounter{#1}{\z@}% + \pp@makeperpage{#1}\c@schk@{\@ne}} +\newcommand*\MakeSortedPerPage[2][\@ne]{% + \pp@makeperpage{#2}\c@spchk@{#1}} +\@onlypreamble\MakePerPage +\@onlypreamble\MakeSorted +\@onlypreamble\MakeSortedPerPage +\def\pp@makeperpage#1#2#3{% + \global\expandafter\mathchardef\csname c@pp@r@#1\endcsname=#3\relax + \global\@namedef{c@pchk@#1}{#2{#1}}% + \newcounter{pp@a@#1}% + \setcounter{pp@a@#1}{#3}% + \addtocounter{pp@a@#1}\m@ne + \@addtoreset{pchk@#1}{#1}% + \AtBeginDocument{\setcounter{pp@a@#1}\z@}% + \edef\next{\noexpand\AtEndDocument{\noexpand\setcounter{pp@a@#1}{% + \number\value{pp@a@#1}}}}\next} +\@onlypreamble\pp@makeperpage +\def\pp@chkvlist{% + \ifcase + \ifvmode + \ifx\lastnodetype\@undefined + \ifdim-\@m\p@=\prevdepth\ifdim\lastskip=\z@\ifnum\lastpenalty=\z@ + \@ne + \fi\fi\fi + \else + \ifnum\lastnodetype=\m@ne \@ne \fi + \fi + \fi \z@ + \or + \PackageWarning{perpage}{\string\stepcounter\space probably at start of + vertical list:^^JYou might need to use \string\leavevmode\space + before it to avoid vertical shifts}% + \fi} +\def\pp@fetchctr#1{\expandafter\expandafter\expandafter\pp@fetchctrii + \csname pp@r@#1@\number\value{pp@a@#1}\endcsname + \@empty\@empty} + +\global\let\theperpage\@empty + +\def\pp@fetchctrii#1#2#3{\edef\pp@label{#1}% + \edef\pp@page{#2}% + \gdef\theperpage{#3}} +\def\c@pchk@#1{\z@=\z@ + \begingroup + \pp@fetchctr{#1}\let\next\pp@page + \addtocounter{pp@a@#1}\@ne + \pp@fetchctr{#1}% + \ifcase\ifx\next\pp@page\else\@ne\fi + \ifnum\value{#1}=\z@\@ne\fi\z@ + \else + \setcounter{#1}{\value{pp@r@#1}}% + \fi + \pp@writectr\pp@pagectr{#1}{\noexpand\theabspage}} +\def\pp@writectr#1#2#3{\edef\next{% + \string#1{#2}{\number\value{pp@a@#2}}{#3}{\noexpand\thepage}}% + \pp@chkvlist + \dimen@=\lastkern + \ifdim\dimen@=\z@ \else \unkern\fi + \protected@write\@auxout{}{\next}% + \ifdim\dimen@=\z@ \nobreak \else \kern\dimen@\fi + \afterassignment\endgroup\count@} +\def\pp@pagectr#1#2#3#4{\@ifundefined{c@pp@a@#1}{}{% + \addtocounter{pp@a@#1}\@ne + \edef\next{\noexpand + \@newl@bel{pp@r@#1}{#2}{{\number\value{pp@a@#1}}{#3}% + {#4}}}\next}} +\def\c@schk@#1{\z@=\z@ + \begingroup + \addtocounter{pp@a@#1}\@ne + \ifnum\value{#1}=\@ne + \expandafter\xdef\csname pp@g@#1\endcsname{\number\value{pp@a@#1}}% + \edef\next{\noexpand\AtEndDocument{\global\let + \expandafter\noexpand\csname pp@g@#1@\number\value{pp@a@#1}\endcsname + \relax}}\next + \fi + \pp@fetchctr{#1}% + \ifx\pp@page\@empty + \else \setcounter{#1}{\pp@label}\fi + \pp@writectr\pp@spagectr{#1}{\csname pp@g@#1\endcsname}}% +\def\pp@spagectr#1#2#3#4{\@ifundefined{c@pp@a@#1}{}{% + \count@0\csname pp@g@#1@#3\endcsname + \advance\count@\@ne + \expandafter\xdef\csname pp@g@#1@#3\endcsname{\number\count@}% + \edef\next{\noexpand + \@newl@bel{pp@r@#1}{#2}{{\number\count@}{#3}% + {#4}}}\next}} +\def\c@spchk@#1{\z@=\z@ + \begingroup + \addtocounter{pp@a@#1}\@ne + \pp@fetchctr{#1}% + \ifx\pp@page\@empty + \else \setcounter{#1}{\pp@label}\fi + \pp@writectr\pp@ppagectr{#1}{\noexpand\theabspage}} +\def\pp@ppagectr#1#2#3#4{\@ifundefined{c@pp@a@#1}{}{% + \def\next{#3}% + \expandafter\ifx\csname pp@page@#1\endcsname\next + \addtocounter{pp@a@#1}\@ne + \else + \setcounter{pp@a@#1}{\value{pp@r@#1}}% + \fi + \global\expandafter\let\csname pp@page@#1\endcsname\next + \edef\next{\noexpand + \@newl@bel{pp@r@#1}{#2}{{\number\value{pp@a@#1}}{#3}% + {#4}}}\next}} + +\endinput +%% +%% End of file `perpage.sty'. diff --git a/Master/texmf-dist/tex/latex/bigfoot/suffix.sty b/Master/texmf-dist/tex/latex/bigfoot/suffix.sty index ccb7284ea68..f78ef43636b 100644 --- a/Master/texmf-dist/tex/latex/bigfoot/suffix.sty +++ b/Master/texmf-dist/tex/latex/bigfoot/suffix.sty @@ -20,34 +20,14 @@ %% original source files, as listed above, are part of the %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) -%%\iffalse -%% suffix.dtx for defining variant commands. -%% Part of the critical bundle around bigfoot. -%% Copyright (C) 2004 David Kastrup %% -%% This program is free software; you can redistribute it and/or modify -%% it under the terms of the GNU General Public License as published by -%% the Free Software Foundation; either version 2 of the License, or -%% (at your option) any later version. +%% perpage is part of the bigfoot bundle for critical typesetting +%% Copyright 2002, 03, 04, 05, 06 David Kastrup %% -%% This program is distributed in the hope that it will be useful, -%% but WITHOUT ANY WARRANTY; without even the implied warranty of -%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -%% GNU General Public License for more details. -%% -%% You should have received a copy of the GNU General Public License -%% along with this program; if not, write to the -%% Free Software Foundation, Inc., 59 Temple Place, Suite 330, -%% Boston, MA 02111-1307 USA -%%\fi -\def\next$#1:#2${#2} -{\catcode`\-\active \def-{.} - \xdef\reserved@a{\expandafter\@gobble\next$Name: $\@empty}} \def\next$#1: #2 #3${#2} -\ifx\reserved@a\@empty \gdef\reserved@a{CVS-\next$Revision: 1.2 $}\fi \edef\next{\noexpand - \ProvidesPackage{suffix}[\next$Date: 2004/02/19 19:49:21 $ - \reserved@a\space]} + \ProvidesPackage{suffix}[\next$Date: 2006/07/15 21:24:56 $ + \next$Revision: 1.5 $ Variant command support]} \next \ifcase\ifx\eTeXversion\@undefined \@ne\fi \ifnum\eTeXversion<\tw@ \@ne\fi\z@ -- cgit v1.2.3