summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/ednotes/mfparptc.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/ednotes/mfparptc.sty
Initial commit
Diffstat (limited to 'macros/latex/contrib/ednotes/mfparptc.sty')
-rw-r--r--macros/latex/contrib/ednotes/mfparptc.sty208
1 files changed, 208 insertions, 0 deletions
diff --git a/macros/latex/contrib/ednotes/mfparptc.sty b/macros/latex/contrib/ednotes/mfparptc.sty
new file mode 100644
index 0000000000..e2008f199d
--- /dev/null
+++ b/macros/latex/contrib/ednotes/mfparptc.sty
@@ -0,0 +1,208 @@
+%% MFParPtc.sty---Uwe L"uck http://www.contact-ednotes.sty.de.vu.
+%% Modifies Alexander Rozhenko's manyfoot.sty.
+%%
+%% Copyright (C) 2003--2006 by Uwe L"uck--author-maintained.
+%%
+%% This file can be redistributed and/or modified under
+%% the terms of the LaTeX Project Public License; either
+%% version 1.3c of the License, or any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% We did our best to help you, but there is NO WARRANTY.
+%%
+%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{mfparptc}[2006/06/26 v0.41 %% TODO
+ ^^J\string"patch\string" for manyfoot.sty's paragraph footnotes
+ (ul)]
+%
+% The paragraphed-footnote style of Alexander Rozhenko's manyfoot.sty
+% derives, like the same style of Dominik Wujastyk's and John
+% Lavagnino's EDMAC.doc, from Donald Knuth's proposal on pp.
+% 398--400 of the TeXbook. However, the two packages improve this
+% proposal in different respects. EDMAC (i) adds to the TeXbook
+% macros penalties solving a page breaking problem and (ii) accounts
+% for some problems of line breaking and hyphenation in the
+% footnotes (see EDMAC.doc, Section
+% `Footnotes'--`Paragraphed footnotes'). manyfoot.sty does not deal
+% with these things.
+%
+% The present version of the "patch" rearms the latter with EDMAC's
+% remedies (maybe at the cost of \linebreak and \\, see below).
+%% TODO
+% We aim at manyfoot.sty v1.4 from 1998/12/19.
+%
+% Alex and me could not convince ourselves entirely of these
+% "patches". They are *experimental*. When we have made up our minds,
+% they may become part of other packages.
+%
+% Indeed, the present "patches" disable the \SplitNote macro
+% from manyfoot.sty. So you have to choose between \SplitNote
+% (not loading present package) and the EDMAC enhancements
+% (loading the present package).
+%
+% --If you want to use this package for working with ednotes.sty,
+% load the latter with option `edmacpara'--this loads the
+% present file at a suitable time. This is useful only unless
+% only `plain' options of `ednotes.sty' are called.
+% --If you don't work with ednotes.sty and want to use the present
+% file only for modifying manyfoot functionality, load the present
+% file after manyfoot.sty has been loaded. This is useful only if
+% some footnote layer has been declared with option `para' or
+% `para*'.
+%
+% Implementation:
+%
+%% Note: \Requirepackage[...]{manyfoot} would cause option clash.
+%
+% \MFL@fnotepara expected:
+% (Also tests whether manyfoot.sty has been loaded with option
+% `para' or `para*'.)
+\CheckCommand*\MFL@fnotepara[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
+ }%
+}
+% For splitting footnote paragraphs EDMAC inserts a (low) \penalty
+% after \box\@tempboxa at Wayne Sullivan's suggestion, see
+% EDMAC.doc after \def\para@vfootnote.
+% Another patch is needed to get \language whatsit nodes and
+% \discretionary's---cf. EDMAC.doc's description of \para@vfootnote.
+% This is due to Michael Downes, Wayne Sullivan, and Donald Knuth.
+% The insert text is first typeset in an "infinitely" wide \vbox.
+% Some problems remain as in EDMAC. No \break should occur in the
+% insert text. We locally redefine \@M and \hfil hoping to repair
+% \\ and \linebreak (even \break!) (experimental---please report!) %% TODO
+% (EDMAC.doc refers to Michael Downes, `Line breaking in \unhboxed
+% Text', TUGboat 11 (1990), pp. 605--612.)
+% TODO: Might redefine \hfill and more; cf. Michael Downes' paper.
+\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\vbox{% <- PATCH!
+ \@parboxrestore % <- PATCH
+ \hsize\maxdimen \noindent % <- PATCH!
+% \setbox\@tempboxa\hbox{%
+ \if@tempswa
+ \hskip\@tempdima\unhbox\@tempboxa\nobreak
+ \fi
+ \mathchardef\@M9999 % <- PATCH!
+ \def\hfil{\hskip\linewidth\@minus\linewidth}% <- PATCH!
+ \ignorespaces#3\unskip\strut
+% \ifMFL@split \penalty\m@ne\space \else % PATCH: removed.
+% \penalty-10 \hskip\footglue % PATCH: reinserted below.
+% \fi
+ }%
+ \setbox\@tempboxa\hbox{% <- PATCH!
+% Here is a suitable variant of EDMAC.doc's \unvxh, due to Michael
+% Downes:
+ \setbox\z@\vbox{%
+ \unvbox\@tempboxa \global\setbox\@ne\lastbox}%
+ \unhbox\@ne \unskip \unskip \unpenalty
+ \ifMFL@split % Moved here from above.
+ \penalty\m@ne\space
+ \else
+ \penalty-10 \hskip\footglue
+ \fi
+ }%
+ \dp\@tempboxa\z@ \ht\@tempboxa\MFL@fudgefactor\wd\@tempboxa
+ \box\@tempboxa
+ \penalty\z@ % <- PATCH!
+ \color@endgroup
+ }%
+}
+% Like in EDMAC.doc, the additional penalty is removed by
+% \MFL@makehhbox which corresponds to \makehboxofhboxes.
+% \MFL@makehhbox differs from \makehboxofhboxes, however, in even
+% \unvbox'ing a note bundle from a minipage. It seems not to be easy
+% to tell a \penalty 0 placed by patched \MFL@fnotepara from another.
+% In this version we just hope that removing such other penalties
+% causes no damage---after all, the bundle was not supposed to be
+% splitted.
+\def\MFL@makehhbox{%
+ \loop
+ \unpenalty % <- PATCH!
+ \setbox\z@\lastbox
+ \ifhbox\z@
+ \setbox\@tempboxa\hbox{\box\z@\unhbox\@tempboxa}%
+ \repeat
+ \ifvbox\z@ \unvbox\z@ \MFL@makehhbox \fi
+}
+\endinput
+
+VERSION HISTORY:
+
+v0.1 2003/01/19 First. Sent to John Lavagnino + ...
+v0.2 2003/01/23 Corrected \Provides... file name;
+ supplied \vbox in \unvxh (bug fix!).
+v0.21 2003/02/27 Stressed problem with \linebreak and \\ in doc.
+v0.23 2003/02/28 Further comment on \CheckCommand,
+ improved explanation mentioning \para@vfootnote.
+v0.3 2003/03/01 Changed \@M and \hfil to enable \\ and \linebreak
+ in para-style.
+v0.31 2003/03/24 Reminded above that v0.2 was a real bug fix;
+ added ednotes.sty@web.de.
+v0.32 2003/03/26 Added TODO on Alex' provision. [!?? 2004/04/25]
+v0.33 2003/03/28 Added `experimental'; `missing' -> `bad' (hyph.)
+ 2004/01/29 Corrected, in the explanation for users, allusion
+ to problems to be solved (line breaking, not only
+ hyphenation) and added mention of \SplitNote
+ problem.
+v0.34 2004/04/25 Added copyright etc.; added missing `%' before
+ `manyfoot.sty does not deal [...]'. Made
+ `(loading ...)' more clear.
+ `patch...' -> `"patch..."'.
+v0.35 2004/05/10 Note on \RequirePackage[...]{manyfoot}; enlarged
+ on loading (Ednotes.sty); manyfoot -> Manyfoot.
+ 2004/05/20 Enhanced comment on \CheckCommand.
+ 2004/07/26 \string" with \Provides..., ^^J.
+v0.36 2004/08/21 Added \@parboxrestore--as a bug fix for `center'
+ environment.
+ 2004/08/23 LPPL v1.3.
+ 2004/08/31 Rearranged preamble concerning maintenance.
+v0.4 2004/10/07 Ednotes -> ednotes etc.; instructions:
+ ednotes option `edmacpara'.
+v0.4a 2004/11/07 LPPL v1.3a.
+v0.4b 2005/01/10 Contact via http.
+v0.41 2006/06/26 \MFL@makemark -> \MFL@makefnmark for nccfoots v1.2;
+ LPPL v1.3c.