• Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint
Share this Page URL

Chapter 3. Basic Formatting Tools > 3.2. Footnotes, endnotes, and marginals

3.2. Footnotes, endnotes, and marginals

LaTeX has facilities to typeset “inserted” text, such as marginal notes, footnotes, figures, and tables. The present section looks more closely at different kinds of notes, while Chapter 6 describes floats in more detail.

We start by discussing the possibilities offered through standard LaTeX’s footnote commands and explain how (far) they can be customized. For two-column documents, a special layout for footnotes is provided by the ftnright package, which moves all footnotes to the bottom of the right column. This is followed by a presentation of the footmisc package, which overcomes most of the limitations of the standard commands and offers a wealth of additional features. The manyfoot package (which can be combined with footmisc) extends the footnote support for disciplines like linguistics by providing several independent footnote commands.

Support for endnotes is provided through the package endnotes, which allows for mixing footnotes and endnotes and can also be used to provide chapter notes, as required by some publishers. The section concludes with a discussion of marginal notes, which are already provided by standard LaTeX.

3.2.1. Using standard footnotes

A sharp distinction is made between footnotes in the main text and footnotes inside a minipage environment. The former are numbered using the footnote counter, while inside a minipage the \footnote command is redefined to use the mpfootnote counter. Thus, the representation of the footnote mark is obtained by the \thefootnote or the \thempfootnote command depending on the context. By default, it typesets an Arabic number in text and a lowercase letter inside a minipage environment. You can redefine these commands to get a different representation by specifying, for example, footnote symbols, as shown in the next example.


Peculiarities inside a minipage

Footnotes produced with the \footnote command inside a minipage environment use the mpfootnote counter and are typeset at the bottom of the parbox produced by the minipage. However, if you use the \footnotemark command in a minipage, it will produce a footnote mark in the same style and sequence as the main text footnotes—that is, stepping the footnote counter and using the \thefootnote command for the representation. This behavior allows you to produce a footnote inside your minipage that is typeset in sequence with the main text footnotes at the bottom of the page: you place a \footnotemark inside the minipage and the corresponding \footnotetext after it.


As the previous example shows, if you need to reference a minipage footnote several times, you cannot use \footnotemark because it refers to footnotes typeset at the bottom of the page. You can, however, load the package footmisc and then use \mpfootnotemark in place of \footnotemark. Just like \footnotemark, the \mpfootnotemark command first increments its counter and then displays its value. Thus, to refer to the previous value you typically have to decrement it first, as shown in the next example.


LaTeX does not allow you to use a \footnote inside another \footnote command, as is common in some disciplines. You can, however, use the \footnotemark command inside the first footnote and then put the text of the footnote’s footnote as the argument of a \footnotetext command. For other special footnote requirements consider using the manyfoot package (described below).


What if you want to reference a given footnote? You can use LaTeX’s normal \label and \ref mechanism, although you may want to define your own command to typeset the reference in a special way. For instance:


Standard LaTeX does not allow you to construct footnotes inside tabular material. Section 5.8 describes several ways of tackling that problem.

3.2.2. Customizing standard footnotes

Footnotes in LaTeX are generally simple to use and provide a quite powerful mechanism to typeset material at the bottom of a page.1 This material can consist of several paragraphs and can include lists, inline or display mathematics, tabular material, and so on.

1 An interesting and complete discussion of this subject appeared in the French TeX Users’ Group magazine Cahiers GUTenberg [10, 133].

LaTeX offers several parameters to customize footnotes. They are shown schematically in Figure 3.1 on the next page and are described below:


Figure 3.1. Schematic layout of footnotes

\footnotesize The font size used inside footnotes (see also Table 7.1 on page 342).

\footnotesep The height of a strut placed at the beginning of every footnote. If it is greater than the \baselineskip used for \footnotesize, then additional vertical space will be inserted above each footnote. See Appendix A.2.3 for more information about struts.

\skip\footins A low-level TeX length parameter that defines the space between the main text and the start of the footnotes. You can change its value with the \setlength or \addtolength command by putting \skip\footins into the first argument:


\footnoterule A macro to draw the rule separating footnotes from the main text that is executed right after the vertical space of \skip\footins. It should take zero vertical space; that is, it should use a negative skip to compensate for any positive space it occupies. The default definition is equivalent to the following:


Note that TeX’s \hrule command and not LaTeX’s \rule command is used. Because the latter starts a paragraph, it would be difficult to calculate the spaces needed to achieve a net effect of zero height. For this reason producing a fancier “rule” is perhaps best done by using a zero-sized picture environment to position the rule object without actually adding vertical space.

In the report and book classes, footnotes are numbered inside chapters; in article, footnotes are numbered sequentially throughout the document. You can change the latter default by using the \@addtoreset command (see Appendix A.1.4). However, do not try to number your footnotes within pages with the help of this mechanism. LaTeX is looking ahead while producing the final pages, so your footnotes would most certainly be numbered incorrectly. To number footnotes on a per-page basis, use the footmisc or perpage package (described below).

The command \@makefnmark is normally used to generate the footnote mark. One would expect this command to take one argument (the current footnote number), but in fact it takes none. Instead, it uses the command \@thefnmark to indirectly refer to that number. The reason is that depending on the position (inside or outside of a minipage) a different counter needs to be accessed. The definition, which by default produces a superscript mark, looks roughly as follows:


The \footnote command executes \@makefntext inside a \parbox, with a width of \columnwidth. The default version looks something like:


This will place the footnote mark right aligned into a box of width 1.8em directly followed by the footnote text. Note that it reuses the \@makefnmark macro, so any change to it will, by default, modify the display of the mark in both places. If you want the text set flush left with the number placed into the margin, then you could use the redefinition shown in the next example. Here we do not use \@makefnmark to format the mark, but rather access the number via \@thefnmark. As a result, the mark is placed onto the baseline instead of being raised. Thus, the marks in the text and at the bottom are formatted differently.


3.2.3. ftnright—Right footnotes in a two-column environment

It is sometimes desirable to group all footnotes in a two-column document at the bottom of the right column. This can be achieved by specifying the ftnright package written by Frank Mittelbach. The effect of this package is shown in Figure 3.2 on the facing page—the first page of the original documentation (including its spelling errors) of the ftnright implementation. It is clearly shown how the various footnotes collect in the lower part of the right-hand column.


Figure 3.2. The placement of text and footnotes with the ftnright package

The main idea for the ftnright package is to assemble the footnotes of all columns on a page and place them all together at the bottom of the right column. The layout produced allows for enough space between footnotes and text and, in addition, sets the footnotes in smaller type.1 Furthermore, the footnote markers are placed at the baseline instead of raising them as superscripts.2

1 Some journals use the same size for footnotes and text, which sometimes makes it difficult to distinguish footnotes from the main text.

2 Of course, this is done only for the mark preceding the footnote text and not the one used within the main text, where a raised number or symbol set in smaller type will help to keep the flow of thoughts uninterrupted.

This package can be used together with most other class files for LaTeX. Of course, the ftnright package will take effect only with a document using a two-column layout specified with the twocolumn option on the \documentclass command. In most cases, it is best to use ftnright as the very last package to make sure that its settings are not overwritten by other options.

3.2.4. footmisc—Various footnotes styles

Since standard LaTeX offers only one type of footnotes and only limited (and somewhat low-level) support for customization, several people developed small packages that provided features otherwise not available. Many of these earlier efforts were captured by Robin Fairbairns in his footmisc package, which supports, among other things, page-wise numbering of footnotes and footnotes formatted as a single paragraph at the bottom of the page. In this section we describe the features provided by this package, showing which packages it supersedes whenever applicable.

The interface for footmisc is quite simple: nearly everything is customized by specifying options when the package is loaded, though in some cases further control is possible via parameters.

In the article class, footnotes are numbered sequentially throughout the document; in report and book, footnotes are numbered inside chapters. Sometimes, however, it is more appropriate to number footnotes on a per-page basis. This can be achieved by loading footmisc with the option perpage. The package footnpag (by Joachim Schrod) provides the same feature with a somewhat different implementation as a stand-alone package. A generalized implementation for resetting counters on a per-page basis is provided by the package perpage (see Section 3.2.5 on page 120). Since TeX’s page-building mechanism is asynchronous, it is always necessary to process the document at least twice to get the numbering correct. Fortunately, the package warns you via “Rerun to get cross-references right” if the footnote numbers are incorrect. The package stores information between runs in the .aux file, so after a lot of editing this information is sometimes not even close to reality. In such a case deleting the .aux file helps the package to find the correct numbering faster.1

1 In fact, during the preparation of this chapter we managed to confuse footmisc (by changing the \textheight in an example) so much that it was unable to find the correct numbering thereafter and kept asking for a rerun forever. Removing the .aux file resolved the problem.


Counter too large errors

For this special occasion our example shows two pages side by side, so you can observe the effects of the perpage option. The example also shows the effect of another option: symbol will use footnote symbols instead of numbers. As only a limited number of such symbols are available, you can use this option only if there are few footnotes in total or if footnote numbers restart on each page. There are six different footnote symbols and, by duplicating some, standard LaTeX supports nine footnotes. By triplicating some of them, footmisc supports up to 16 footnotes (per page or in total). If this number is exceeded you will get a LaTeX error message.

In particular with the perpage option, this behavior can be a nuisance because the error could be spurious, happening only while the package is still trying to determine which footnotes belong on which page. To avoid this problem, you can use the variant option symbol*, which also produces footnote symbols but numbers footnotes for which there are no symbols left with Arabic numerals. In that case you will get a warning at the end of the run that some footnotes were out of range and detailed information is placed in the transcript file.


If the symbol or symbol* option is selected, a default sequence of footnote symbols defined by Leslie Lamport is used. Other authorities suggest different sequences, so footmisc offers three other sequences to chose from using the declaration \setfnsymbol (see Table 3.4).


Table 3.4. Footnote symbol lists predefined by footmisc

In addition, you can define your own sequence using the \DefineFNsymbols declaration in the preamble. It takes two mandatory arguments: the name to access the list later via \setfnsymbol and the symbol-list. From this list symbols are taken one after another (with spaces ignored). If a symbol is built from more than one glyph, it has to be surrounded by braces. If the starred form of the declaration is used, LaTeX issues an error message if it runs out of symbols. Without it, you will get Arabic numerals and a warning at the end of the LaTeX run.

Due to an unfortunate design choice, footnote symbols (as well as some other text symbols) were originally added to the math fonts of TeX, rather than to the text fonts, with the result that they did not change when the text font was modified. In LaTeX this flaw was partly corrected by adding these symbols to the text symbol encoding (TS1; see Section 7.5.4). However, for compatibility reasons the footnote symbols are still taken by default from the math fonts, even though this choice is not appropriate if one has changed the text font from Computer Modern to some other typeface. By using the optional type argument with the value text, you can tell footmisc that your list consists of text symbols. Note that all predefined symbol lists consist of math symbols and may need redeclaring if used with fonts other than Computer Modern.


If you have many short footnotes then their default placement at the bottom of the page, stacked on top of each other, is perhaps not completely satisfactory. A typical example would be critical editions, which contain many short footnotes.1 The layout of the footnotes can be changed using the para option, which formats them into a single paragraph. If this option is chosen then footnotes never split across pages. The code for this option is based on work by Chris Rowley and Dominik Wujastyk (available as the package fnpara), which in turn was inspired by an example in The TeXbook by Donald Knuth.

1 See, for example, the ledmac package [171] for the kinds of footnotes and endnotes that are common in critical editions. This package is a reimplementation of the EDMAC system [112] for LaTeX and was recently made available by Peter Wilson. See also the bigfoot package by David Kastrup.


Another way to deal with footnotes is given by the option side. In this case footnotes are placed into the margin, if possible on the same line where they are referenced. What happens internally is that special \marginpar commands are used to place the footnote text, so everything said in Section 3.2.8 about the \marginpar commands is applicable. This option cannot be used together with the para option, described earlier, but can be combined with most others.


The option flushmargin used in the previous example makes the footnote text start at the left margin with the footnote marker protruding into the margin; by default, the footnote text is indented. For obvious reasons this option is incompatible with the para option. A variant form is called marginal. If this option is used then the marker sticks even farther into the margin, as shown in the example below.


Instead of using one of the above options, the position of the footnote marker can be directly controlled using the parameter \footnotemargin. If set to a negative value the marker is positioned in the margin. A value of 0pt is equivalent to using the option flushmargin. A positive value means that the footnote text is indented by this amount and the marker is placed flush right in the space produced by the indentation.


By default, the footnote text is justified but this does not always give satisfactory results, especially with the options para and side. In case of the para option nothing can be done, but for other layouts you can switch to ragged-right typesetting by using the option ragged. The next example does not specify flushmargin, so we get an indentation of width \footnotemargin—compare this to Example 3-2-10 on the preceding page.


The two options norule and splitrule (courtesy of Donald Arseneau) modify the rule normally placed between text and footnotes. If norule is specified, then the separation rule will be suppressed. As compensation the value of \skip\footins is slightly enlarged. If a footnote does not fit onto the current page it will be split and continued on the next page, unless the para option is used (as it does not support split footnotes). By default, the rule separating normal and split footnotes from preceding text is the same. If you specify the option splitrule, however, it becomes customizable: the rule above split footnotes will run across the whole column while the one above normal footnotes will retain the default definition given by \footnoterule. More precisely, this option will introduce the commands \mpfootnoterule (for use in minipages), \pagefootnoterule (for use on regular pages), and \splitfootnoterule (for use on pages starting with a split footnote). By modifying their definitions, similar to the example given earlier for the \footnoterule command, you can customize the layout according to your needs.


In classes such as article or report in which \raggedbottom is in effect, so that columns are allowed to be of different heights, the footnotes are attached at a distance of \skip\footins from the column text. If you prefer them aligned at the bottom, so that any excess space is put between the text and the footnotes, specify the option bottom. In classes for which \flushbottom is in force, such as book, this option does nothing.

In some documents, e.g., literary analysis, several footnotes may appear at a single point. Unfortunately, LaTeX’s standard footnote commands are not able to handle this situation correctly: the footnote markers are simply clustered together so that you cannot tell whether you are to look for the footnotes 1 and 2, or for the footnote with the number 12.


This problem will be resolved by specifying the option multiple, which ensures that footnotes in a sequence will display their markers separated by commas. The separator can be changed to something else, such as a small space, by changing the command \multfootsep.


The footmisc package deals with one other potential problem: if you put a footnote into a sectional unit, then it might appear in the table of contents or the running header, causing havoc. Of course, you could prevent this dilemma (manually) by using the optional argument of the heading command; alternatively, you could specify the option stable, which prevents footnotes from appearing in such places.

3.2.5. perpage—Resetting counters on a “per-page” basis

As mentioned earlier, the ability to reset arbitrary counters on a per-page basis is implemented in the small package perpage written by David Kastrup.


The declaration \MakePerPage defines counter to be reset on every page, optionally requesting that its initial starting value be start (default 1). For demonstration we repeat Example 3-2-7 on page 116 but start each footnote marker sequence with the second symbol (i.e., “†” instead of “*”).


The package synchronizes the numbering via the .aux file of the document, thus requiring at least two runs to get the numbering correct. In addition, you may get spurious “Counter too large” error messages on the first run if \fnsymbol or \alph is used for numbering (see the discussion of the symbol* option for the footmisc package on page 116).

Among LaTeX’s standard counters probably only footnote can be sensibly modified in this way. Nevertheless, one can easily imagine applications that provide, say, numbered marginal notes, which could be defined as follows:


We step the new counter mnote outside the \marginpar so that it is executed only once;1 we also need to limit the scope of the current redefinition of \label (through \refstepcounter) so we put braces around the whole definition. Notes on left-hand pages should be right aligned, so we use the optional argument of \marginpar to provide different formatting for this case.

1 If placed in both arguments of \marginpar it would be executed twice. It would work if placed in the optional argument only, but then we would make use of an implementation detail (that the optional argument is evaluated first) that may change.


Another application for the package is given in Example 3-2-24 on page 125, where several independent footnote streams are all numbered on a per-page basis.

3.2.6. manyfoot—Independent footnotes

Most documents have only a few footnotes, if any. For them LaTeX’s standard commands plus the enhancements offered by footmisc are usually sufficient. However, certain applications, such as critical editions, require several independently numbered footnote streams. For these situations the package manyfoot by Alexander Rozhenko can provide valuable help.1

1 A more comprehensive package, bigfoot, is currently being developed by David Kastrup.


This declaration can be used to introduce a new footnote level. In its simplest form you merely specify a suffix such as “B”. This allocates a new counter footnote suffix that is used to automatically number the footnotes on the new level. The default is to use Arabic numerals; by providing the optional argument enum-style, some other counter style (e.g., roman or alph) can be selected.

The optional fn-style argument defines the general footnote style for the new level; the default is plain. If the package was loaded with the para or para* option, then para can also be selected as the footnote style.

The declaration will then automatically define six commands for you. The first three are described here:

\footnote suffix [number]{text} Same as \footnote but for the new level. Steps the footnote suffix counter unless the optional number argument is given. Generates footnote markers and puts text at the bottom of the page.

\footnotemark suffix [number] Same as \footnotemark but for the new level. Steps the corresponding counter (if no optional argument is used) and prints a footnote marker corresponding to its value.

\footnotetext suffix [number]{text} Same as \footnotetext but for the new level. Puts text at the bottom of the page using the current value of footnote suffix or the optional argument to generate a footnote marker in front of it.

In all three cases the style of the markers depends on the chosen enum-style.

The remaining three commands defined by \DeclareNewFootnote for use in the document are \Footnote suffix, \Footnotemark suffix, and \Footnotetext suffix (i.e., same names as above but starting with an upper-case F). The important difference to the previous set is the following: instead of the optional number argument, they require a mandatory marker argument allowing you to specify arbitrary markers if desired. Some examples are given below.

The layout of the footnotes can be influenced by loading the footmisc package in addition to manyfoot, except that the para option of footmisc cannot be used. In the next example we use the standard footnote layout for top-level footnotes and the run-in layout (option para) for the second level. Thus, if all footnote levels should produce run-in footnotes, the solution is to avoid top-level footnotes completely (e.g., \footnote) and provide all necessary levels through manyfoot. Note how footmisc’s multiple option properly acts on all footnotes.


In the following example the top-level footnotes are moved into the margin by loading footmisc with a different set of options. This time manyfoot is loaded with the option para*, which differs from the para option used previously in that it suppresses any indentation for the run-in footnote block. In addition, the second-level notes are now numbered with Roman numerals. For comparison the example typesets the same input text as Example 3-2-19 but it uses a different measure, as we have to show marginal notes now.


The use of run-in footnotes, with either the para or the para* option, is likely to produce one particular problem: very long footnotes near a page break will not be split. To resolve this problem the manyfoot package offers a (semi)manual solution: at the point where you wish to split your note you place a \SplitNote command and end the footnote. You then place the remaining text of the footnote one paragraph farther down in the document in a \Footnotetext suffix using an empty marker argument.


If both parts of the footnote fall onto the same page after reformatting the document, the footnote parts get correctly reassembled, as we prove in the next example, which uses the same example text but a different measure. However, if the reformatting requires breaking the footnote in a different place, then further manual intervention is unavoidable. Thus, such work is best left until the last stage of production.


The vertical separation between a footnote block and the previous one is specified by \skip\footins suffix. By default, it is equal to \skip\footins (i.e., the separation between main text and footnotes). Initially the extra blocks are only separated by such spaces, but if the option ruled is included a \footnoterule is used as well. In fact, arbitrary material can be placed in that position by redefining the command \extrafootnoterule—the only requirement being that the typeset result from that command does not take up any additional vertical space (see the discussion of \footnoterule on page 112 for further details). It is even possible to use different rules for different blocks of footnotes; consult the package documentation for details.


Number the footnotes per page

The previous example deployed two additional enum-styles, Alph and fnsymbol. However, as only a few footnote symbols are available in both styles, that choice is most likely not a good one, unless we ensure that these footnote streams are numbered on a per-page basis. The perpage option of footmisc will not help here, as it applies to only the top-level footnotes. We can achieve the desired effect either by using \MakePerPage from the perpage package on the counters footnoteB and footnoteC (as done below), or by using the perpage option of manyfoot (which calls on the perpage package to do the job, which will number all new footnote levels defined on a per-page basis). Note that the top-level footnotes are still numbered sequentially the way the example was set up.


3.2.7. endnotes—An alternative to footnotes

Scholarly works usually group notes at the end of each chapter or at the end of the document. Such notes are called endnotes. Endnotes are not supported in standard LaTeX, but they can be created in several ways.

The package endnotes (by John Lavagnino) provides its own \endnote command, thus allowing footnotes and endnotes to coexist.

The document-level syntax is modeled after the footnote commands if you replace foot with end—for example, \endnote produces an endnote, \endnotemark produces just the mark, and \endnotetext produces just the text. The counter used to hold the current endnote number is called endnote and is stepped whenever \endnote or \endnotemark without an optional argument is used.

All endnotes are stored in an external file with the extension .ent and are made available when you issue the command \theendnotes.


This process is different from the way the table of contents is built; the end-notes are written directly to the file, so that you will see only those endnotes which are defined earlier in the document. The advantage of this approach is that you can have several calls to \theendnotes, for example, at the end of each chapter. To additionally restart the numbering you have to set the endnote counter to zero after calling \theendnotes.

The heading produced by \theendnotes can be controlled in several ways. The text can be changed by modifying \notesname (default is the string Notes). If that is not enough you can redefine \enoteheading, which is supposed to produce the sectioning command in front of the notes.

The layout for endnote numbers is controlled through \theendnote, which is the standard way LaTeX handles counter formatting. The format of the mark is produced from \makeenmark with \theenmark, holding the formatted number for the current mark.


The font size for the list of endnotes is controlled through \enotesize, which defaults to \footnotesize. Also, by modifying \enoteformat you can change the display of the individual endnotes within their list. This command is supposed to set up the paragraph parameters for the endnotes and to typeset the note number stored in \theenmark. In the example we start with no indentation for the first paragraph and with the number placed into the margin.


3.2.8. Marginal notes

The standard LaTeX command \marginpar generates a marginal note. This command typesets the text given as its argument in the margin, with the first line being at the same height as the line in the main text where the \marginpar command occurs. When only the mandatory argument is specified, the text goes to the right margin for one-sided printing; to the outside margin for two-sided printing; and to the nearest margin for two-column formatting. When you also specify an optional argument, its text is used if the left margin is chosen, while the second (mandatory) argument is used for the right margin.

This placement strategy can be reversed (except for two-column formatting) using \reversemarginpar, which acts on all marginal notes from there on. You can return to the default behavior with \normalmarginpar.

There are a few important things to understand when using marginal notes. First, the \marginpar command does not start a paragraph. Thus, if it is used before the first word of a paragraph, the vertical alignment will not match the beginning of the paragraph. Second, the first word of its argument is not automatically hyphenated. Thus, for a narrow margin and long words (as in German), you may have to precede the first word by a \hspace{0pt} command to allow hyphenation of that word. These two potential problems can be eased by defining a command like \marginlabel, which starts with an empty box \mbox{}, typesets a marginal note ragged right, and adds a \hspace{0pt} in front of the argument.


Of course, the above definition can no longer produce different texts depending on the chosen margin. With a little more finesse this problem could be solved, using, for example, the \ifthenelse constructs from the ifthen package.

Incorrectly placed \marginpars

The LaTeX kernel tries hard (without producing too much processing overhead) to ensure that the contents of \marginpar commands always show up in the correct margin and in most circumstances will make the right decisions. In some cases, however, it will fail. If you are unlucky enough to stumble across one of them, a one-off solution is to add an explicit \pagebreak to stop the page generation from looking too far ahead. Of course, this has the disadvantage that the correction means visual formatting and has to be undone if the document changes. A better solution is to load the package mparhack written by Tom Sgouros and Stefan Ulrich. Once this package is loaded all \marginpar positions are tracked (internally using a label mechanism and writing the information to the .aux file). You may then get a warning “Marginpars may have changed. Rerun to get them right”, indicating that the positions have changed in comparison to the previous LaTeX run and that a further run is necessary to stabilize the document.

As explained in Table 4.2 on page 196, there are three length parameters to customize the style of marginal notes: \marginparwidth, \marginparsep, and \marginparpush.

  • Creative Edge
  • Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint