pfnote, fnpos and dblfnote Packages for Footnotes^{∗}

Hiroshi Nakashima (Toyohashi Univ. of Tech.) 1999/07/14

Abstract This file provides three style files; pfnote to enclose footnote numbering in a page;

fnpos to control the vertical position of footnotes; dblfnote to make footnote doublecolumned.

Contents

1 Introduction 2 2 Usage 2

2.1 Loading Style Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.2 pfnote: Enclose Footnote Numbers within a Page . . . . . . . . . . . . . . . 3 2.3 fnpos: Control Vertical Position of Footnotes . . . . . . . . . . . . . . . . . 3 2.4 dblfnote: Make Footnotes Double-Columned . . . . . . . . . . . . . . . . . . 6

3 Known Problems 6

∗This file has version number v1.0, last revised 1999/07/14.

1 Introduction

L^{A}TEX users often bother about fine points of footnote. How can I reset footnote counter when a page is produced in order to keep the counter from having too large, say 30, in a document with many footnotes? How can I place footnotes at more appropriate position? How can I make footnotes double-columned while main text is single-columned?

The style files distributed with this document will solve these problems. You will have the following three style files by processing yafoot.dtx^{1} with docstrip.

pfnote pfnote provides a new version of \footnote to make footnote numbering enclosed in a page. That is, the counter footnote is reset whenever a page is produced and thus the first footnote in a page is numbered 1 no matter how it stands in the sequence of footnotes in a document. Since this document itself uses pfnote, you will see how footnotes are numbered.

fnpos fnpos provides following commands to control the vertical position of footnotes.

\makeFNbottom • \makeFNbottom makes footnotes always placed at the bottom of a \ragged

\makeFNmid bottom page, while \makeFNmid allows footnotes directly follow the main text of a page as standard L^{A}TEX does.

\makeFNbelow • \makeFNbelow places footnotes below bottom floats (i.e. figures and tables), \makeFNabove while \makeFNabove is to place footnotes above bottom floats as standard L^{A}TEX

does.

This document also uses fnpos to make footnotes bottom and below^{2}. The first version of these commands are posted by the author to news groups comp.text.tex and fj.comp.texhax as the answers to the posts by Martin Boyer and Nobuaki Minematsu.

dblfnote dblfnote makes footnotes double-columned. It also provides a few commands to control column breaking. The first version of the style file is created for Tim Armstrong’s post to comp.text.tex. Since this document uses fnpos, you will find that the footnotes^{3} in this page are double-columned.

Note that these style files may be used either solely, or combined each other as done in this document.

2 Usage

2.1 Loading Style Files

All the three style files are usable to both L^{A}TEX 2ε and L^{A}TEX-2.09 users with their standard package loading declaration. If you use L^{A}TEX 2ε and wish to load, for example, pfnote and fnpos, simply do the following.

3This document has many footnotes, some of which are just to show how our footnote mechanisms work.

1It stands for “Yet Another FOOTnote.”

2But the effect will be hardly seen except in the right column of page 5 where we show the effect explicitly.

     \usepackage{pfnote}
     \usepackage{fnpos}

If you still love L^{A}TEX-2.09, the following is what you have to do.

     \documentstyle[..,pfnote,fnpos,...]{⟨main-style⟩}

Note that any combination of three styles are allowed and they are insensitive to their loading order.

2.2 pfnote: Enclose Footnote Numbers within a Page

pfnote Just loading pfnote is everything that you have to do to make footnote numbering enclosed in a page^{1}. Only one thing you have to remember is that footnote numbers will be adjusted after you run L^{A}TEX twice, as \ref-erences to \label-s are.

2.3 fnpos: Control Vertical Position of Footnotes

fnpos The following four commands are available to control the vertical position of footnotes.

\makeFNbottom \makeFNbottom makes footnotes always placed at the bottom of a \raggedbottom page, even if the page is too short to push the footnotes to its bottom because, for example, the page is broken just before a tall object such as a tabular. This is default.

\maekFNmid \makeFNmid cancels the effect of \makeFNbottom to allow footnotes directly follow the main text of a page as standard L^{A}TEX does.

\maekFNbelow \makeFNbelow places footnotes below bottom floats (i.e. figures and tables). This is default.

\maekFNabove \makeFNabove cancels the effect of \makeFNabove to place footnotes above bottom floats as standard L^{A}TEX does.

Note that if you are using pL^{A}TEX, a Japanese version of L^{A}TEX, it might be unnecessary to use pfnote because pL^{A}TEX does what \makeFNbottom and \makeFNbelow do^{2}. However, if you wish to follow the real L^{A}TEX’s standard, \makeFNmid and \makeFNabove will do for you.

The following two two-columned pages show the effects of the commands.

1Here you will find this fourth footnote is numbered one.

2Very strictly speaking, the mechanism of pL^{A}TEX is slightly different from that of fnpos but the difference is hardly recognizable.

This column is typeset with \makeFNmid and

\makeFNabove^{1}.

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

(Main text of this column is here.) . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Here is a bottom float.

This column is typeset with \makeFNmid and

                     \makeFNbelow^{2}.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . (Main text of this column is here.) . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Here is a bottom float.

1Therefore, this footnote is above the bottom float leaving spaces at the bottom of this column.

2Therefore, this footnote is below the bottom float still leaving spaces at the bottom of this column.

This column is typeset with \makeFNbottom

and \makeFNabove^{1}.

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

(Main text of this column is here.) . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Here is a bottom float.

This column is typeset with \makeFNbottom

                     and \makeFNbelow^{2}.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . (Main text of this column is here.) . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Here is a bottom float.

1Therefore, this footnote is above the bottom float that is pushed to the bottom of this column together with this footnote.

2Therefore, this footnote is below the bottom float, and at the bottom of this column alone.

2.4 dblfnote: Make Footnotes Double-Columned

dblfnote Simply loading dblfnote will make footnotes double-columned. For fine tuning of doublecolumning, however, you have a few style parameters and commands as follows.

DFNsloppiness DFNsloppiness defines how sloppy paragrahs in footnotes are typeset. Since lines of footnotes are narrow, you might wish to typeset footnotes in some \sloppy manner in order to avoid underfull. Setting DFNsloppiness to larger value up to 9999, footnote paragraphs will be sloppier. The default is 5000.

\DFNcolumnsep \DFNcolumnsep is the distance of footnote columns is specified by the value of \DFNcolumn sep. If you don’t set this parameter explicitly^{1}, the value is that of \columnsep. For example, the author set \DFNcolumnsep to 1.5 × \columnsep in this document.

\DFNcolumnwidth \DFNcolumnwidth is the width of a footnote column. If you don’t set this parameter explicitly, as expected, it is automatically set to (\textwidth − \DFNcolumnsep)/2.

\DFNallowcbreak  \DFNallowcbreak allows a footnote is broken into two columns, while \DFNinhibitcbreak

\DFNinhibitcbreak inhibits it. In default, column breaking is allowed.

\DFNtrysingle \DFNtrysingle places footnotes only in the left column if the page containing them has \DFNalwaysdouble enough space as shown in pages 1, 3 and this page, while \DFNalwaysdouble makes

them double-columned (almost) always. In default, single-columning is tried.

\DFNruleleft  \DFNruleleft draws \footnoterule over footnotes in left column only, while \DFNrule

\DFNruleboth both draws in both columns. In default, the rule is drawn in left column only.

Note that dblfnote will do nothing if \twocolumn is in effect, as shown in pages 4 and 5. That is, footnotes are put as in usual double-coulumned document. If you change the page structure to \onecolumn, the mechanism of dblfnote is enabled again as shown in this page.

3 Known Problems

1. The style pfnote does not enlose the number of footnotes in minipage environment.

2. The style dblfnote may mistakingly produce a little bit too short pages if an extremely long paragraph has footnotes. More specifically, if a paragraph runs across three or more pages p_{1}, …, p_{n}, and its first and last footnote appears in p_{i} (i ≤ n − 2) and p_{j} (j > i), pages p_{i+1} to p_{j} may be a little bit too short especially for those without footnotes.

Acknowledgments

The author thanks to Martin Boyer and Nobuaki Minematsu whose posts to news groups triggered writing very first version of macros in fnpos. He also thanks to Tim Armstrong whose post to comp.text.tex encouraged him to make the first version of dblfnote that requires considerable hack.

1Strictly speaking, unless you set a non-negative value in the document preamble.

For the implementation of three style files, the author refers the base implementations of the macros for \footnote and for \output routine. These macros are written by Leslie Lamport as a part of L^{A}TEX-2.09 and L^{A}TEX 2ε (1997/12/01) to which Johannes Braams and other authors also contributed.

Index

Underlined number refers to the page where the specification of corresponding entry is described.

columnsep=  \subitem *+\columnsep+, 6
counters:¿DFNsloppiness,  \underline{6}

dblfnote=dblfnote (style file), \underline{2}, \underline{6}

DFNallowcbreak=  \subitem *+\DFNallowcbreak+, \main{6}
DFNalwaysdouble=  \subitem *+\DFNalwaysdouble+, \main{6}
DFNcolumnsep=  \subitem *+\DFNcolumnsep+, \main{6}
DFNcolumnwidth=  \subitem *+\DFNcolumnwidth+, \main{6}
DFNinhibitcbreak=  \subitem *+\DFNinhibitcbreak+, \main{6}
DFNruleboth=  \subitem *+\DFNruleboth+, \main{6}
DFNruleleft=  \subitem *+\DFNruleleft+, \main{6}

DFNsloppiness=DFNsloppiness (counter), \underline{6}

DFNtrysingle=  \subitem *+\DFNtrysingle+, \main{6}
documentstyle=  \subitem *+\documentstyle+, \main{3}

environments:¿minipage, 6

fnpos=fnpos  (style  file),  \underline{2, 3}

maekFNabove=  \subitem *+\maekFNabove+, \main{3}
maekFNbelow=  \subitem *+\maekFNbelow+, \main{3}

                                           maekFNmid=  \subitem *+\maekFNmid+, \main{3}
                                           makeFNabove=  \subitem *+\makeFNabove+, \main{2}
                                           makeFNbelow=  \subitem *+\makeFNbelow+, \main{2}
                                           makeFNbottom=  \subitem *+\makeFNbottom+, \main{2, 3}
                                           makeFNmid=  \subitem *+\makeFNmid+, \main{2}

minipage=minipage  (environment),  6

                                           onecolumn=  \subitem *+\onecolumn+, 6

pfnote=pfnote  (style  file),  \underline{2, 3}

                                           raggedbottom=  \subitem *+\raggedbottom+, 3

style  files:¿dblfnote,  \underline{2},  \underline{6}
style  files:¿fnpos,  \underline{2, 3}
style  files:¿pfnote,  \underline{2, 3}

                                           twocolumn=  \subitem *+\twocolumn+, 6
                                           usepackage=  \subitem *+\usepackage+, \main{3}