406 lines
12 KiB
TeX
Executable File
406 lines
12 KiB
TeX
Executable File
%%
|
|
%% This is file `manyfoot.sty',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% manyfoot.dtx (with options: `package')
|
|
%%
|
|
%% IMPORTANT NOTICE:
|
|
%%
|
|
%% This file is a generated file from the sources of the `ncctools'
|
|
%% bundle.
|
|
%%
|
|
%% You are not allowed to modify this file.
|
|
%%
|
|
%% You are allowed to distribute this file if and only if
|
|
%% it is distributed with the corresponding source files in
|
|
%% the `ncctools' bundle.
|
|
%%
|
|
%% For the copying and distribution conditions of the source files,
|
|
%% see the README file distributed with the ncctools bundle.
|
|
%%
|
|
%% File: manyfoot.dtx Copyright (C) 1998--2005 by Alexander I. Rozhenko
|
|
%%
|
|
\NeedsTeXFormat{LaTeX2e}[1993/12/01]
|
|
\ProvidesPackage{manyfoot}
|
|
[2005/09/11 v1.10 Many Footnote Levels Package (NCC)]
|
|
\RequirePackage{nccfoots}
|
|
\newcommand{\extrafootnoterule}{}
|
|
\DeclareOption{ruled}{\def\extrafootnoterule{\defaultfootnoterule}}
|
|
\newdimen\MFL@columnwidth
|
|
\def\MFL@floathook{\MFL@columnwidth\columnwidth}
|
|
\long\def\MFL@insert#1#2{%
|
|
\insert#1{\splittopskip\footnotesep \splitmaxdepth \dp\strutbox
|
|
\floatingpenalty\@MM #2%
|
|
}%
|
|
\FN@mf@prepare
|
|
}
|
|
\providecommand\FN@mf@prepare{}
|
|
\let\MFL@realinsert\MFL@insert
|
|
\def\MFL@applyhook#1{\csname MFL@hook\string#1\endcsname}
|
|
\let\MFL@startplain\@gobble
|
|
\@onlypreamble\MFL@startplain
|
|
\let\MFL@processplain\@gobble
|
|
\long\def\MFL@fnoteplain#1#2#3{\NCC@makefnmark{#2}%
|
|
\MFL@insert#1{\reset@font\footnotesize
|
|
\interlinepenalty\interfootnotelinepenalty
|
|
\hsize\MFL@columnwidth \@parboxrestore
|
|
\protected@edef\@currentlabel{\@thefnmark}%
|
|
\color@begingroup
|
|
\MFL@applyhook{#1}%
|
|
\@makefntext{%
|
|
\rule\z@\footnotesep\ignorespaces#3\@finalstrut\strutbox}%
|
|
\color@endgroup
|
|
}%
|
|
}
|
|
\newif\ifMFL@paraindent \MFL@paraindenttrue
|
|
\DeclareOption{para}{%
|
|
\newskip\footglue
|
|
{\footnotesize \global\footglue=1em plus.3em minus.3em }
|
|
\newif\ifMFL@split \MFL@splitfalse
|
|
\newcommand\SplitNote{\MFL@splittrue}
|
|
\def\MFL@startpara#1{%
|
|
\global\advance\skip#1\MFL@paraskip
|
|
\MFL@setsplit{#1}{\MFL@applyhook{#1}}%
|
|
}
|
|
\@onlypreamble\MFL@startpara
|
|
\def\MFL@fnotepara#1#2#3{\let\@thefnmark\@empty
|
|
\NCC@makefnmark{#2}%
|
|
\MFL@insert#1{\reset@font\footnotesize
|
|
\ifx\@thefnmark\@empty \@tempswafalse \else
|
|
\@tempswatrue
|
|
\protected@edef\@currentlabel{\@thefnmark}%
|
|
\fi
|
|
\color@begingroup
|
|
\if@tempswa
|
|
\setbox\@tempboxa\hbox{\@makefnmark}%
|
|
\ifMFL@paraindent
|
|
\@tempdima.8em \advance\@tempdima-\wd\@tempboxa
|
|
\ifdim \@tempdima<\z@ \@tempdima\z@ \fi
|
|
\else
|
|
\@tempdima\z@
|
|
\fi
|
|
\fi
|
|
\setbox\@tempboxa\hbox{%
|
|
\if@tempswa
|
|
\hskip\@tempdima\unhbox\@tempboxa\nobreak
|
|
\fi
|
|
\ignorespaces#3\unskip\strut
|
|
\ifMFL@split \penalty\m@ne\space \else
|
|
\penalty-10 \hskip\footglue
|
|
\fi
|
|
}%
|
|
\dp\@tempboxa\z@ \ht\@tempboxa\MFL@fudgefactor\wd\@tempboxa
|
|
\box\@tempboxa
|
|
\color@endgroup
|
|
}%
|
|
}
|
|
\def\MFL@processpara#1{%
|
|
\advance\@tempskipa -\MFL@paraskip
|
|
\edef\MFL@skip{\vskip\the\@tempskipa\relax}%
|
|
\setbox#1\vbox{%
|
|
\unvbox#1\setbox\@tempboxa\hbox{}\MFL@makehhbox
|
|
\setbox\@tempboxa\hbox{\unhbox\@tempboxa\MFL@removehboxes}%
|
|
\footnotesize
|
|
\hsize\MFL@columnwidth \@parboxrestore
|
|
\ifMFL@paraindent
|
|
\@ifundefined{footnotemargin}%
|
|
{\parindent\footglue}%
|
|
{\parindent\footnotemargin\relax
|
|
\ifdim\parindent<\z@ \parindent\footglue
|
|
\else \advance\parindent -0.8em \fi}%
|
|
\fi
|
|
\csname MFL@split\string#1\endcsname
|
|
\rule\z@\footnotesep
|
|
\unhbox\@tempboxa\unskip
|
|
\ifnum\lastpenalty=\m@ne \parfillskip\z@
|
|
\MFL@setsplit{#1}{\noindent}%
|
|
\else
|
|
\MFL@setsplit{#1}{\MFL@applyhook{#1}}%
|
|
\fi
|
|
}%
|
|
}
|
|
\def\MFL@makehhbox{%
|
|
\loop\setbox\z@\lastbox \ifhbox\z@
|
|
\setbox\@tempboxa\hbox{\box\z@\unhbox\@tempboxa}%
|
|
\repeat
|
|
\ifvbox\z@ \unvbox\z@ \MFL@makehhbox \fi
|
|
}
|
|
\def\MFL@removehboxes{\setbox\@tempboxa\lastbox
|
|
\ifhbox\@tempboxa{\MFL@removehboxes}\unhbox\@tempboxa\fi
|
|
}
|
|
\def\MFL@setsplit#1#2{%
|
|
\expandafter\gdef\csname MFL@split\string#1\endcsname{#2}%
|
|
}
|
|
\g@addto@macro\MFL@floathook{%
|
|
\begingroup
|
|
\footnotesize \@tempdima\normalbaselineskip
|
|
\multiply \@tempdima \@cclvi
|
|
\@tempdimb \columnwidth
|
|
\divide \@tempdimb \@cclvi
|
|
\divide \@tempdima \@tempdimb
|
|
\xdef\MFL@fudgefactor{\strip@pt\@tempdima}%
|
|
\endgroup
|
|
}
|
|
\newcommand*\ExtraParaSkip[1]{%
|
|
\def\MFL@xparaskip{\advance\@tempdima#1\relax}%
|
|
}
|
|
\let\MFL@xparaskip\relax
|
|
\@onlypreamble\ExtraParaSkip
|
|
\@onlypreamble\MFL@xparaskip
|
|
\AtBeginDocument{%
|
|
\begingroup
|
|
\footnotesize
|
|
\@tempdima\footnotesep
|
|
\advance\@tempdima -\ht\strutbox
|
|
\ifdim\@tempdima<\z@ \@tempdima\z@ \fi
|
|
\advance\@tempdima.5\normalbaselineskip
|
|
\MFL@xparaskip % Add extra para skip
|
|
\xdef\MFL@paraskip{\the\@tempdima\relax}%
|
|
\endgroup
|
|
}
|
|
}
|
|
\DeclareOption{para*}{%
|
|
\@ifundefined{MFL@startpara}{\ExecuteOptions{para}}{}%
|
|
\MFL@paraindentfalse
|
|
}
|
|
\newif\ifMFL@perpage \MFL@perpagefalse
|
|
\DeclareOption{perpage}{\MFL@perpagetrue}
|
|
\ProcessOptions\relax
|
|
\ifMFL@perpage \RequirePackage{perpage}\fi
|
|
\def\MFL@list{}
|
|
\newcommand*{\SelectFootnoteRule}[2][0]{%
|
|
\edef\@tempa{\noexpand\MFL@selectrule{#1}{%
|
|
\expandafter\noexpand\csname #2footnoterule\endcsname}}%
|
|
\@ifnextchar[{\@tempa}{\@tempa[]}%
|
|
}
|
|
\def\MFL@selectrule#1#2[#3]{\def\MFL@rule{\MFL@joinrule{#1}{#2}{#3}}}
|
|
\SelectFootnoteRule{extra}% Set the default footnote rule
|
|
\@onlypreamble\SelectFootnoteRule
|
|
\@onlypreamble\MFL@selectrule
|
|
\@onlypreamble\MFL@rule
|
|
\newcommand{\SetFootnoteHook}[1]{\def\MFL@footnotehook{\MFL@fhook{#1}}}
|
|
\@onlypreamble\SetFootnoteHook
|
|
\@onlypreamble\MFL@footnotehook
|
|
\SetFootnoteHook{}% Empty hook by default
|
|
\long\def\MFL@fhook#1#2{%
|
|
\expandafter\def\csname MFL@hook\string#2\endcsname{#1}%
|
|
\SetFootnoteHook{}%
|
|
}
|
|
\@onlypreamble\MFL@fhook
|
|
\newcommand*{\newfootnote}[2][plain]{%
|
|
\@ifundefined{MFL@fnote#1}{%
|
|
\PackageError{manyfoot}{Unknown footnote style #1}%
|
|
{Known styles are `plain' and `para'\MessageBreak
|
|
(if the package was loaded with the para or para* option)}}{}%
|
|
\expandafter\MFL@newinsert\csname footins#2\endcsname
|
|
\edef\@tempa{\noexpand\newcommand
|
|
\expandafter\noexpand\csname Footnotetext#2\endcsname
|
|
{\expandafter\noexpand\csname MFL@fnote#1\endcsname{%
|
|
\expandafter\noexpand\csname footins#2\endcsname}}%
|
|
\noexpand\MFL@footnotehook{%
|
|
\expandafter\noexpand\csname footins#2\endcsname}%
|
|
}%
|
|
\@tempa
|
|
\@cons\MFL@list{{#1}\csname footins#2\endcsname}%
|
|
}
|
|
\@onlypreamble\newfootnote
|
|
\def\MFL@newinsert#1{\newinsert#1%
|
|
\expandafter\let\csname MFL@join\number #1\endcsname \MFL@rule
|
|
\SelectFootnoteRule{extra}% Reset to default rule again
|
|
\skip#1\skip\footins \dimen#1\dimen\footins \count#1\count\footins
|
|
}
|
|
\@onlypreamble\MFL@newinsert
|
|
\def\MFL@makemark#1#2#3{%
|
|
\FN@mf@check
|
|
\@ifnextchar[{\MFL@xmkmark{#1}{#3}}{#2{#1}\MFL@mkmark{#1}{#3}}%
|
|
}
|
|
\providecommand\FN@mf@check{}
|
|
\def\MFL@xmkmark#1#2[#3]{%
|
|
\begingroup
|
|
\csname c@#1\endcsname #3\relax
|
|
\unrestored@protected@xdef\@thefnmark{\csname the#1\endcsname}%
|
|
\endgroup
|
|
#2%
|
|
}
|
|
\def\MFL@mkmark#1#2{\protected@xdef\@thefnmark{\csname the#1\endcsname}%
|
|
#2%
|
|
}
|
|
\newcommand*{\DeclareNewFootnote}[2][plain]{%
|
|
\@ifnextchar[{\MFL@declare{#1}{#2}}{\MFL@declare{#1}{#2}[arabic]}%
|
|
}
|
|
\def\MFL@declare#1#2[#3]{%
|
|
\newfootnote[#1]{#2}%
|
|
\edef\@tempa{\noexpand\newcounter{footnote#2}%
|
|
\noexpand\renewcommand
|
|
\expandafter\noexpand\csname thefootnote#2\endcsname{%
|
|
\expandafter\noexpand\csname @#3\endcsname
|
|
\expandafter\noexpand\csname c@footnote#2\endcsname
|
|
}%
|
|
\ifMFL@perpage \noexpand\MakePerPage{footnote#2}\fi
|
|
\noexpand\newcommand
|
|
\expandafter\noexpand\csname footnote#2\endcsname{%
|
|
\noexpand\MFL@makemark{footnote#2}{\noexpand\stepcounter}{%
|
|
\noexpand\@footnotemark
|
|
\noexpand\let\noexpand\@tempb\noexpand\@thefnmark
|
|
\expandafter\noexpand\csname Footnotetext#2\endcsname{%
|
|
\noexpand\@tempb
|
|
}%
|
|
}%
|
|
}%
|
|
\noexpand\newcommand
|
|
\expandafter\noexpand\csname footnotemark#2\endcsname{%
|
|
\noexpand\MFL@makemark{footnote#2}{\noexpand\stepcounter}{%
|
|
\noexpand\@footnotemark
|
|
}%
|
|
}%
|
|
\noexpand\newcommand
|
|
\expandafter\noexpand\csname footnotetext#2\endcsname{%
|
|
\noexpand\MFL@makemark{footnote#2}{\noexpand\@gobble}{%
|
|
\noexpand\let\noexpand\@tempb\noexpand\@thefnmark
|
|
\expandafter\noexpand\csname Footnotetext#2\endcsname{%
|
|
\noexpand\@tempb
|
|
}%
|
|
}%
|
|
}%
|
|
\noexpand\newcommand
|
|
\expandafter\noexpand\csname Footnotemark#2\endcsname{%
|
|
\noexpand\Footnotemark
|
|
}%
|
|
\noexpand\newcommand
|
|
\expandafter\noexpand\csname Footnote#2\endcsname[1]{%
|
|
\noexpand\Footnotemark{####1}%
|
|
\expandafter\noexpand\csname Footnotetext#2\endcsname{####1}%
|
|
}%
|
|
}%
|
|
\@tempa
|
|
}
|
|
\@onlypreamble\DeclareNewFootnote
|
|
\@onlypreamble\MFL@declare
|
|
\def\MFL@start#1{\csname MFL@start#1\endcsname}
|
|
\@onlypreamble\MFL@start
|
|
\newcommand{\footnoterulepriority}{1}
|
|
\newif\ifMFL@joined \MFL@joinedfalse
|
|
\def\MFL@joinnotes#1{%
|
|
\ifMFL@joined #1%
|
|
\else
|
|
\let\MFL@savedrule \footnoterule
|
|
\let\MFL@currule \defaultfootnoterule
|
|
\ifvoid \footins
|
|
\let\MFL@curpriority \footnoterulepriority
|
|
\else
|
|
\let\MFL@curpriority \m@ne
|
|
\fi
|
|
\let\MFL@elt\@elt
|
|
\let\@elt\MFL@join \MFL@list
|
|
\let\@elt\MFL@elt
|
|
\MFL@joinedtrue #1\MFL@joinedfalse
|
|
\let\footnoterule \MFL@savedrule
|
|
\fi
|
|
}
|
|
\def\MFL@join#1#2{\csname MFL@join\number #2\endcsname{#1}{#2}}
|
|
\def\MFL@joinrule#1#2#3#4#5{%
|
|
\ifnum #1<\MFL@curpriority \else
|
|
\let\MFL@currule#2%
|
|
\def\MFL@curpriority{#1}%
|
|
\fi
|
|
\ifvoid#5\else
|
|
\@tempskipa\skip#5%
|
|
\MFL@ifmcol{\divide\@tempskipa\col@number}{}%
|
|
\edef\MFL@skip{\vskip\the\@tempskipa\relax}%
|
|
\csname MFL@process#4\endcsname #5%
|
|
\ifvoid\footins
|
|
\let\footnoterule\MFL@currule
|
|
\setbox\footins\vbox{#3\unvbox#5}%
|
|
\else
|
|
\setbox\footins\vbox{%
|
|
\unvbox\footins\MFL@skip\MFL@currule#3\unvbox#5%
|
|
}%
|
|
\fi
|
|
\let\MFL@curpriority \m@ne
|
|
\fi
|
|
}
|
|
\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
|
|
\insert#2{\unvbox#2}%
|
|
\fi
|
|
}
|
|
\def\MFL@reinsert{{\let\@elt\MFL@reins \MFL@list}}
|
|
\def\MFL@reins#1#2{\ifvoid#2\else\insert#2{}\fi}
|
|
\long\def\MFL@mpinsert#1#2{%
|
|
\global\setbox#1\vbox{%
|
|
\unvbox#1\setbox\@tempboxa\lastbox
|
|
\ifvbox\@tempboxa \unvbox\@tempboxa \fi
|
|
\vbox{#2}%
|
|
}%
|
|
}
|
|
\def\MFL@mpreinsert#1#2{%
|
|
\ifvoid#2\else
|
|
\setbox\@tempboxa\vbox{\unvbox#2\global\setbox#2\lastbox}%
|
|
\setbox\z@\box#2%
|
|
\ifdim\ht\@tempboxa>\z@ \MFL@realinsert#2{\box\@tempboxa}\fi
|
|
\MFL@realinsert#2{\unvbox\z@}%
|
|
\fi
|
|
}
|
|
\def\MFL@minipage{%
|
|
\ifinner\else
|
|
\MFL@reinsert \let\MFL@insert\MFL@mpinsert
|
|
\fi
|
|
}
|
|
\def\MFL@endminipage{%
|
|
\ifinner\else
|
|
{\let\@elt\MFL@mpreinsert \MFL@list}%
|
|
\fi
|
|
}
|
|
\def\MFL@mult#1#2{%
|
|
\multiply\count#2\col@number
|
|
\multiply\skip#2\col@number
|
|
}
|
|
\def\MFL@ifmcol#1#2{\@tempswafalse
|
|
\ifnum\col@number>\@ne
|
|
\ifnum\count\footins>1999 \@tempswatrue \fi
|
|
\fi
|
|
\if@tempswa #1\else #2\fi
|
|
}
|
|
\AtBeginDocument{%
|
|
{\let\@elt\MFL@start \MFL@list}
|
|
\@ifundefined{defaultfootnoterule}{%
|
|
\@ifundefined{pagefootnoterule}%
|
|
{\let\defaultfootnoterule\footnoterule}%
|
|
{\let\defaultfootnoterule\pagefootnoterule}%
|
|
}{}%
|
|
\let\MFL@doclearpage\@doclearpage
|
|
\def\@doclearpage{\MFL@joinnotes\MFL@doclearpage}
|
|
\let\MFL@makecol\@makecol
|
|
\def\@makecol{\MFL@joinnotes\MFL@makecol}
|
|
\g@addto@macro\@reinserts{%
|
|
\let\MFL@elt\@elt
|
|
\let\@elt\MFL@reinsout \MFL@list
|
|
\let\@elt\MFL@elt
|
|
}
|
|
\MFL@floathook
|
|
\g@addto@macro\@floatplacement{\MFL@ifmcol{}{\MFL@floathook}}
|
|
\let\MFL@iminipage\@iiiminipage
|
|
\def\@iiiminipage{\MFL@minipage\MFL@iminipage}
|
|
\g@addto@macro\endminipage\MFL@endminipage
|
|
\@ifundefined{multi@column@out}
|
|
{\@onlypreamble\MFL@mult \let\MFL@ifmcol\@secondoftwo}
|
|
{\let\MFL@mcolout\multi@column@out
|
|
\def\multi@column@out{\MFL@joinnotes\MFL@mcolout}
|
|
\g@addto@macro\init@mult@footins{%
|
|
\let\MFL@elt\@elt
|
|
\let\@elt\MFL@mult \MFL@list
|
|
\let\@elt\MFL@elt
|
|
}
|
|
\g@addto@macro\reinsert@footnotes{\MFL@reinsert}
|
|
}
|
|
}
|
|
\endinput
|
|
%%
|
|
%% End of file `manyfoot.sty'.
|