%  fn2end.sty	Convert footnotes into end notes.
%  LaTeXable documentation at end (after \endinput)
%  LaTeX 2.09 users, should comment out this line:
\ProvidesPackage{fn2end}[1995/05/31 Convert footnotes into end notes.]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This file may be freely copied, and distributed.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Author:
% Kim C. Border, 
% Division of the Humanities and Social Sciences,
% Caltech, Pasadena, CA 91125 USA
% e-mail: kcb@hss.caltech.edu

% I gratefully acknowledge the help of J. E. Burke
% <jeburke@jhuvms.hcf.jhu.edu>  at Johns Hopkins, who fixed
% the handling of long footnotes.  
% The main idea is from Knuth's \answer macro in the TeXbook.

% version 1.1, May 31, 1995
% Changed \endnoteshere to \theendnotes, since you
% shouldn't use commands that begin with \end
% Also added user renewable parameters

% Based on my old endnotes.sty, version 3
% (Sep 4, 1990, rev. Jul 28, 1994), which was never posted.
% It appears to work with both LaTeX2e and LaTeX2.09

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% User redefinable parameters
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newlength{\noteskip}
\setlength{\noteskip}{1em}
\newcommand{\notenumberformat}[1]{$#1$}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Save the original definition of \@footnotetext
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\let\original@footnotetext\@footnotetext


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Define \makeendnotes to open a new file 
% for the endnotes and to redefine \@footnotetext
% (\newlinechar courtesy of J E Burke)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\makeendnotes}{\newwrite\n@tefile
  \immediate\openout\n@tefile=\jobname.end
  \immediate\write\n@tefile{\relax}
  \long\gdef\@footnotetext{\immediate\write\n@tefile{}
	\begingroup\newlinechar=`\^^M 
  \catcode`\^^M=12\@setupcopy\@copynote}}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% The verbatim copying definitions
% based on the TeXbook's \answer macro
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\@setupcopy}{\@sanitize}
\newcommand{\@copynote}{}
\long\gdef\@copynote#1{%
	\immediate\write\n@tefile{\notenumberformat{\@thefnmark}%
		\hskip\noteskip}%
	\immediate\write\n@tefile{#1}\endgroup}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Define \theendnotes to retrieve them
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\theendnotes}{\immediate\closeout\n@tefile
    \input\jobname.end\relax}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Define \restorefootnotes
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\restorefootnotes}{\long\gdef\@footnotetext{\original@footnotetext}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\endinput

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentstyle{article}
\newcommand{\cs}[1]{\mbox{\tt\bs#1}}% for control sequences
\newcommand{\bs}{\char '134 }   % A backslash character for \tt font
\newcommand{\file}[1]{\mbox{\tt #1}}

\title{The {\tt fn2end.sty} style}
\author{KC Border}
\date{May 31, 1995}

\begin{document}
\maketitle

The \file{fn2end.sty} package converts footnotes into
end notes, where a lot of publishers want them.  It
does so by redefining the action of the \cs{footnote}
command.  Instead of putting footnotes at the bottom
of the page, the notes are written to a file with
extension \file{end}, whence they may be retrieved
when desired.  To handle footnotes on the title page
flexibly, \cs{footnote} is not redefined until the
\cs{makeendnotes} command is issued.  Place the
command \cs{theendnotes} where you want the notes
to appear: after the last footnote, usually right
before the bibliography.  The \cs{theendotes} command
merely \cs{inputs} the \file{end} file, it does {\em
not} create a new section or a new page. If you do
create a notes section with the \cs{section} command,
you should follow it with an \cs{indent} command.
Otherwise, the first note will be the only note that
does not start with an indented paragraph.

There are now user renewable commands.  The length
\cs{noteskip} is the space between the note number
and the start of the note text. By default it is 1
em.  Change its value with the \cs{setlength} command.
You can use  \cs{renewcommand} to change
\cs{notenumberformat}, which formats the note number.
By default it is defined as
\begin{verbatim}
    \newcommand{\notenumberformat}[1]{$#1$}
\end{verbatim}
If you want the end note numbers to appear as
superscripts with periods, you could
\begin{verbatim}
    \renewcommand{\notenumberformat}[1]{${}^{#1.}$}
\end{verbatim}

Successive \cs{makeendnotes} commands overwrite the
notes file.  This is a feature, not a bug.  For
example:
\begin{verbatim}
    \makeendnotes

    \chapter{One}
    blah
    \section*{Notes}\indent
    \theendnotes

    \makeendnotes

    \chapter{Two}
    blah
    \section*{Notes}\indent
    \theendnotes
\end{verbatim}
etc, can be used to put notes at the end of each
chapter.  (This is perverse because it makes the
notes nearly impossible to find, but some publishers
like it.)

Additionally, \cs{restorefootnotes} restores the
normal behavior of footnotes, so that if you really
wanted to, you could have a title page for each
chapter with acknowledgment footnotes on the bottom,
and thereafter have end notes for the rest of the
material in the chapter.


{\em Bug}: Since \verb#\# is catcoded to 12 for
verbatim copying, if your footnote's text contains
an unequal number of \verb#\{#'s and \verb#\}#'s,
for instance, if you have a \verb#\left\{#  balanced
by a \verb#\right.#, then \TeX\ believes you have
unmatched braces and does not figure out where the
argument of the \cs{footnote} command ends.  (Believe
it or not, this happened to me the first time I
tried to use the style.)
{\em Workaround}: Use \verb#\lbrace# and \verb#\rbrace#
in your footnotes instead of \verb#\{# and \verb#\}#.

\end{document}
