summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/fnpara/fnpara.sty
blob: a5847a8f755e23f3a045d1a5d1152c949b2beaea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
% FNPARA.STY
% A LaTeX style to typeset footnotes in run-on paragraphs.
% See end of this file (after \endinput) for comments.
%
% Copyright 1988, 1995, 2012 Chris Rowley, Dominik Wujastyk,
% and Bradley A. Smith.
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
% 
% The Current Maintainer of this work are the above copyright holders.
%
% This work consists of the file fnpara.sty.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% From latex.ltx :
\long\def\@mpfootnotetext#1{%
  \global\setbox\@mpfootins\vbox{%
    \unvbox\@mpfootins
    \reset@font\footnotesize
    \hsize\columnwidth
    \@parboxrestore
    \protected@edef\@currentlabel
         {\csname p@mpfootnote\endcsname\@thefnmark}%
    \color@begingroup
    \setbox0=\hbox{%
      \@makefntext{%
        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox
        \penalty -10
        \hskip\footglue
      }%
    }%
    \dp0=0pt \ht0=\fudgefactor\wd0 \box0
    \color@endgroup}}
\long\def\@footnotetext#1{\insert\footins{%
    \reset@font\footnotesize
    \interlinepenalty\interfootnotelinepenalty
    \splittopskip\footnotesep
    \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
    \hsize\columnwidth \@parboxrestore
    \protected@edef\@currentlabel{%
       \csname p@footnote\endcsname\@thefnmark
    }%
    \color@begingroup
    \setbox0=\hbox{%
      \@makefntext{%
        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox
        \penalty -10
        \hskip\footglue
      }%
    }%
    \dp0=0pt \ht0=\fudgefactor\wd0 \box0
    \color@endgroup}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%CCCC --- from TeXbook
\newskip\footglue \footglue=1em plus.3em minus.3em
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Cut down from article.cls :
\long\def\@makefntext#1{%
%    \parindent 1em%
%    \noindent
%    \hb@xt@1.8em{\hss\@makefnmark}#1
    \hb@xt@.5em{\hss\@makefnmark}\hskip.5em#1
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% From latex.ltx:
\def\endminipage{%
    \par
    \unskip
    \ifvoid\@mpfootins\else
      \vskip\skip\@mpfootins
      \normalcolor
      \footnoterule
%      \unvbox\@mpfootins
      \mpmakefootnoteparagraph
    \fi
    \global\@minipagefalse   %% added 24 May 89
  \color@endgroup
  \egroup
  \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
\def \@makecol {%
   \ifvoid\footins
     \setbox\@outputbox \box\@cclv
   \else
     \setbox\@outputbox \vbox {%
       \boxmaxdepth \@maxdepth
       \unvbox \@cclv
       \vskip \skip\footins
       \color@begingroup
         \normalcolor
         \footnoterule
%         \unvbox \footins
         \makefootnoteparagraph
       \color@endgroup
       }%
   \fi
   \xdef\@freelist{\@freelist\@midlist}%
   \global \let \@midlist \@empty
   \@combinefloats
   \ifvbox\@kludgeins
     \@makespecialcolbox
   \else
     \setbox\@outputbox \vbox to\@colht {%
       \@texttop
       \dimen@ \dp\@outputbox
       \unvbox \@outputbox
       \vskip -\dimen@
       \@textbottom
       }%
   \fi
   \global \maxdepth \@maxdepth
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% From TeXbook, p.398 ff., AVOIDING the  redefinition of \\ in LaTeX!!
{\catcode`p=12 \catcode`t=12 \gdef\@ennumber#1pt{#1}}

{\footnotesize \newdimen\footnotebaselineskip
%CCCC --definitely needed:
  \global
  \footnotebaselineskip=\normalbaselineskip}

\dimen0=\footnotebaselineskip \multiply\dimen0 by 1024
\divide \dimen0 by \columnwidth \multiply\dimen0 by 64
\xdef\fudgefactor{\expandafter\@ennumber\the\dimen0 }

\def\makefootnoteparagraph{\unvbox\footins \makehboxofhboxes
  \setbox0=\hbox{\unhbox0 \removehboxes}
%CCCC  ---now we are ready to set the paragraph:
    \hsize\columnwidth
    \@parboxrestore
    \baselineskip=\footnotebaselineskip
    \noindent
%CCCC ---this is where the strut is needed:
  \rule{\z@}{\footnotesep}%
  \unhbox0\par}
%
%
\def\mpmakefootnoteparagraph{\unvbox\@mpfootins \makehboxofhboxes
  \setbox0=\hbox{\unhbox0 \removehboxes}
%CCCC  ---now we are ready to set the paragraph:
    \hsize\columnwidth
    \@parboxrestore
    \baselineskip=\footnotebaselineskip
    \noindent
%CCCC ---this is where the strut is needed:
  \rule{\z@}{\footnotesep}%
  \unhbox0\par}
\def\makehboxofhboxes{\setbox0=\hbox{}
  \loop\setbox2=\lastbox \ifhbox2 \setbox0=\hbox{\box2\unhbox0}\repeat}
\def\removehboxes{\setbox0=\lastbox
  \ifhbox0{\removehboxes}\unhbox0 \fi}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\endinput

                           FNPARA.STY
    A LaTeX style to typeset footnotes in run-on paragraphs.

History:

A vain attempt at this LaTeX modification was tried in late
September 1988 by Dominik Wujastyk, and sent to TeXhax and UKTeX
for comment.  Chris Rowley came up with a working
version a few days later, but it still needs thorough testing.

The Style:

This LaTeX style changes the way LaTeX does footnotes.  With this
style invoked (\documentstyle[fnpara]{article}), footnotes will
be typeset in a running paragraph, instead of one above another.
It is suitable for texts such as critical editions, which contain
many short footnotes.

This is based on the TeX macros described by Knuth in the
TeXbook, Dirty Tricks, pages 398--400.  It is  not tested beyond
some simple examples.   In particular, it has not been tested
properly in connection with even the simplest of environments, nor with
other floats.

(In fact, ordinary LaTeX footnotes sometimes do not work well
if they need splitting (e.g. producing blank pages,
or appearing in shufled form): but these
problems should not affect this style.
I --CR-- have sent in a Bug Report about some
of these problems.)

Be aware of Knuth's note on the limitations of this method of
doing the job:  the TeX stack is used four times per footnote,
and the stack is limited (TeXbook pp. 300--301).  So if you have
very many footnotes (in the hundreds) and encounter
  "! TeX capacity exceeded, sorry [... save size ...]"
errors, you may need to break your text into smaller sections.
Fortunately, this is very easy to do with LaTeX.  And the
footnote counter can be reset to make the joins seamless.

Chris Rowley
Dominik Wujastyk

October 3, 1988

---------------------------
Modified 11/12/95
Updated with new copies of relevant definitions from base files, and
added definitions for paragraph footnotes inside minipages
Bradley Smith - http://www.baysmith.com/

---------------------------
Modified 10 March 2012
Updated to be explicitly under the LPPL, per agreement of all authors.
Web site for Bradley Smith contact.