% \iffalse meta-comment
% pagenote.dtx
% Author: Peter Wilson (The Herries Press) 
% Maintainer: Will Robertson (will dot robertson at latex-project dot org)
% Copyright 2004 Peter R. Wilson
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any 
% later version: <http://www.latex-project.org/lppl.txt>
%
% This work has the LPPL maintenance status "maintained".
% The Current Maintainer of this work is Will Robertson.
%
% This work consists of the files listed in the README file.
%
% 
%<*driver>
\documentclass{ltxdoc}
\EnableCrossrefs
\CodelineIndex
%%\OnlyDescription
\setcounter{StandardModuleDepth}{1}
\begin{document}
  \DocInput{pagenote.dtx}
\end{document}
%</driver>
%
% \fi
%
% \CheckSum{251}
%
% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath}
% \DoNotIndex{\@centercr,\@cite}
% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
% \DoNotIndex{\@input,\@ixpt,\@m}
% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint}
% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
% \DoNotIndex{\advance,\Alph,\alph}
% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
% \DoNotIndex{\bullet}
% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist}
% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
% \DoNotIndex{\fbox}
% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi}
% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi}
% \DoNotIndex{\input}
% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark}
% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
% \DoNotIndex{\NeedsTeXFormat,\newdimen}
% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number}
% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@}
% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip}
% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font}
% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman}
% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength}
% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase}
% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt}
% \DoNotIndex{\viipt,\vipt,\vskip,\vspace}
% \DoNotIndex{\wd,\xiipt,\year,\z@}
%
% \changes{v1.0}{2004/09/24}{First public release}
% \changes{v1.1}{2004/09/27}{Minor additions}
% \changes{v1.1a}{2009/09/03}{New maintainer (Will Robertson)}
%
% \def\dtxfile{pagenote.dtx}
% \def\fileversion{v1.0}  \def\filedate{2004/09/24}
% \def\fileversion{v1.1}  \def\filedate{2004/09/27}
% \def\fileversion{v1.1a} \def\filedate{2009/09/03}
% \newcommand*{\Lpack}[1]{\textsf {#1}}           ^^A typeset a package
% \newcommand*{\Lopt}[1]{\textsf {#1}}            ^^A typeset an option
% \newcommand*{\file}[1]{\texttt {#1}}            ^^A typeset a file
% \newcommand*{\Lcount}[1]{\textsl {\small#1}}    ^^A typeset a counter
% \newcommand*{\pstyle}[1]{\textsl {#1}}          ^^A typeset a pagestyle
% \newcommand*{\Lenv}[1]{\texttt {#1}}            ^^A typeset an environment
%
% \title{The \Lpack{pagenote} package\thanks{This
%        file (\texttt{\dtxfile}) has version number \fileversion, last revised
%        \filedate.}}
%
% \author{
%   Author: Peter Wilson, Herries Press \\
%   Maintainer: Will Robertson \\
%   \texttt{will dot robertson at latex-project dot org}
% }
% \date{\filedate}
% \maketitle
% \begin{abstract}
%    The \Lpack{pagenote} package provides notes similar to footnotes 
% except that they are typeset on a different page. 
% These are often called end notes.
%
%     Unless the memoir class is being used, the package requires the 
% \Lpack{ifmtarg} package.
%
% \end{abstract}
% \tableofcontents
%
% 
%
% \section{Introduction}
%
%     End notes are often used instead of footnotes so as not to interrupt the
% flow of the main text. The \Lpack{pagenote} package provides for such notes.
% Although end notes are normally put at the end of the document, they may
% instead be put at the end of each chapter (or section if the document class
% does not support chapters).
%
%    The simple use is like this:
% \begin{verbatim}
% \documentclass{...}
% \usepackage{pagenote}
% \makepagenote
% ...
% \begin{document}
% ...\pagenote{An end note} ...
% ...\pagenote{Another note} ...
% \chapter{Notes}
% \printnotes
% \end{document}
% \end{verbatim}
%
%    Section~\ref{sec:usc} describes the usage of the \Lpack{pagenote} 
% package and 
% commented source code is in Section~\ref{sec:code}.
%
% This manual is typeset according to the conventions of the
% \LaTeX{} \textsc{docstrip} utility which enables the automatic
% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}.
%
% \section{The \Lpack{pagenote} package} \label{sec:usc}
%
%    The general principal is that notes are written out to a file which
% is then input at the place where the notes are to be printed. The note 
% file has an \file{ent} extension, like the table of contents file
% has a \texttt{toc} extension.
%
% \subsection{Options}
%
%    The package has the following options.
%
% \begin{description}
% \item[\Lopt{continuous}] By default, note numbers are reset at each
%  main division in the document. When the \Lopt{continuous} option is
% used, the numbering is continuous throughout the document.
%
% \item[\Lopt{page}] By default page numbers are not available for
% reference within the notes. When the \Lopt{page} option is used, the 
% page number where a note was inserted is available. If this option
% is used, there must be a page break between the last note and the 
% printed list of notes.
% \end{description}
%
% \subsection{Commands}
%
% Generally speaking, the following descriptions assume that a class
% that provides |\chapter|s has been used. If you use a class
% that only provides |\section|s, the details are in the source code
% in Section~\ref{sec:code} (the \Lpack{memoir} class provides |\chapter|s
% that look like |\section|s from the \Lpack{article} class).
%
% \DescribeMacro{\makepagenote}
% If you want to have page/end notes, the |\makepagenote| command must be
% put in the preamble. Among other things, this sets up the note \file{ent}
% file.
%
% \DescribeMacro{\printnotes}
% \DescribeMacro{\printnotes*}
% The |\printnotes| command will cause the \file{ent} file to be closed for
% any new notes, and then |\input| in order to print the collected notes.
% After |\printnotes| no more notes will be
% collected, so use it after all are done.
%
% Similarly, the starred version of the command causes the \file{ent}
% file to be closed and the |\input|, but afterwards a new set of notes 
% may be saved in
% the \file{ent} file. For example, you could put |\printnotes*| at the
% end of each chapter.
%
% Because of how TeX writes information to files, when the \Lopt{page}
% option is used there must be no notes 
% on the page where
% |\printnotes| or |\printnotes*| closes the \file{ent} file. If necessary, 
% a |\clearpage| or similar must be used before the |\print...|.
%
% \DescribeMacro{\pagenote}
% There are two common methods of identifying an end note:
% \begin{itemize}
% \item Like a footnote, put a number in the text at the location 
% of the note and use the same number to identify the note when it
% finally gets printed.
% \item Put no mark in the text, but when it is finally printed use a few 
% words from the text to identify the origin of the note. The page number
% is often used as well with this method.
% \end{itemize}
%
% |\pagenote|\oarg{id}\marg{text} is used where you want a note to be inserted,
% although it will not be printed there. The \meta{text} argument is the
% contents of the note. The optional \meta{id} argument can be used if you
% want to use something other than a number to identify the source of 
% the note when it finally gets printed.
%
% \DescribeMacro{\notenumintext}
% A counter, |pagenote|, may be used to indicate the location of a note
% in the text (like the |footnote| counter). The macro
% |\notenumintext|\marg{num} is called by |\pagenote| to print the
% |pagenote| number. By default it is printed as a superscript, but this can 
% be changed, or even eliminated.
%
% In documents with |\chapter|s, the |pagenote| counter is reset for each 
% chapter, otherwise it is reset for each |\section|.
%
% \DescribeMacro{\noteentry}
% The |\pagenote|\oarg{id}\marg{text} macro writes \\
% |\noteentry|\marg{notenum}\marg{id}\marg{text}\marg{pagenum} \\
% to the \file{ent} file, where \meta{notenum} is the note number (from
% the |pagenote| counter), \meta{id} and \meta{text} are as supplied to
% |\pagenote|, and if the \Lopt{page} option is used, \meta{pagenum} is the 
% page number, otherwise it is empty. The |\noteentry|
% macro controls the typesetting of the note.
%
% \DescribeMacro{\prenoteinnotes}
% \DescribeMacro{\noteidinnotes}
% \DescribeMacro{\pageinnotes}
% \DescribeMacro{\noteinnotes}
% \DescribeMacro{\postnoteinnotes}
% The default definition of |\noteentry| is
% \begin{verbatim}
% \newcommand{\notentry}[4]{%
%   \prenoteinnotes
%   \noteidinnotes{#1}{#2}%
%   \pageinnotes{#4}%
%   \noteinnotes{#3}%
%   \postnoteinnotes}
% \end{verbatim}
%   The macros |\prenoteinnotes| and |\postnoteinnotes| are used to start 
% and end the typesetting of the note --- effectively typesetting
% each note as a paragraph; their definitions can be changed if need be.
%
% The macro |\noteidinnotes|\marg{notenum}\marg{id} is designed to typeset
% the note number and/or the note id (from the optional \meta{id} argument
% to |\pagenote|). 
%
% The macro |\pageinnotes|\marg{pagenum} is used for typesetting (or ignoring)
% the page number where the note was specified, and |\noteinnotes|\marg{text}
% sets the actual note \meta{text}.
%
% Any or all of these may be changed to suit your needs.
%
% \DescribeMacro{\notedivision}
% \DescribeMacro{\notesname}
% When |\printnotes| (or |\printnotes*|) is called the first thing it does is
% call the macro |\notedivision|. By default, for chaptered documents
%  this is defined as: \\
% |\newcommand*{\notedivision}{\chapter{\notesname}}| \\
% with: \\
% |\newcommand*{\notesname}{Notes}| \\
% In other words, it will print out a heading for the notes that will be read
% from the \file{ent} file. |\print...| then closes the \file{ent} file 
% for writing and after this |\input|s it to get and process the notes.
%
% \DescribeMacro{\addtonotes}
% \DescribeMacro{\pagenotesubhead}
% The macro |\addtonotes|\marg{text} inserts \meta{text} into the \file{ent}
% file. For example, before the first note in a chapter, |\addtonotes| is
% used to insert |\pagenotesubhead|\marg{num}\marg{title} into the file
% where \meta{num} is the new chapter number, and \meta{title} is either
% empty or, if the \Lpack{memoir} class is used, is the chapter title as 
% it appears in the table of contents. This macro is used to typeset
% a heading for each set of notes. By default it will resolve to
% something like: \\
% |\subsection{Chapter 3 ...}|
%
% \textbf{Note:} As the argument to |\pagenote| and |\addtonotes| 
% is moving you may have
% to |\protect| any fragile commands. If you get strange error messages, try
% using |\protect| and see if they go away.
%
% \DescribeMacro{\chaptername}
% \DescribeMacro{\sectionname}
% \DescribeMacro{\pagename}
%  The command |\chaptername| is supplied by the LaTeX classes that
% provide |\chapter| divisions and is
% defined to produce `Chapter'. The macros |\sectionname| and 
% |\pagename| are provided by this package, producing respectively 
% `Section' and `page'. 
%
% The package is set up under the assumption that notes will only be
% printed at the end of the document. If you intend to put them at the
% end of each chapter, then you will probably want to change the definitions
% of the |\notedivision| and |\pagenotesubhead| macros. For example:
% \begin{verbatim}
% \renewcommand*{\notedivision}{\section*{\notesname}}
% \renewcommand*{\pagenotesubhead}[2]{}
% \end{verbatim}
% and remember to use |\printnotes*| at each place you want the current set
% of notes to be printed.
%
%
%
%
% \StopEventually{
% \bibliographystyle{alpha}
% \begin{thebibliography}{GMS94}
% \bibitem[GMS94]{GOOSSENS94}
% Michel Goossens, Frank Mittelbach, and Alexander Samarin.
% \newblock {\em The LaTeX Companion}.
% \newblock Addison-Wesley Publishing Company, 1994.
% \end{thebibliography}
% }
%
%
% 
% \section{The package code} \label{sec:code}
%
%
% \subsection{Preliminaries}
%
%    Announce the name and version of the package, which requires
% \LaTeXe.
%    \begin{macrocode}
%<*usc>
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pagenote}[2009/09/03 v1.1a page/end notes]
%    \end{macrocode}
%
% The \Lpack{ifmtarg} package is required (which is included within the
% \Lpack{memoir} class).
%    \begin{macrocode}
\@ifclassloaded{memoir}{}{\RequirePackage{ifmtarg}}

%    \end{macrocode}
%
%    The following |\if...| command is for distinguishing between
% chaptered and simpler documents. Page/end notes are more appropriate
% when there are chapters.
% \begin{macro}{\ifpnhaschapter}
%    \begin{macrocode}
\newif\ifpnhaschapter
\@ifundefined{chapter}{\pnhaschapterfalse}{\pnhaschaptertrue}

%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\f@rtoc}
% In the \Lpack{memoir} class this holds the chapter title as it should 
% appear in the ToC. We need to make sure that it is defined.
%    \begin{macrocode}
\providecommand{\f@rtoc}{}

%    \end{macrocode}
% \end{macro}
%
% \subsection{Options}
%
% \begin{macro}{\ifpnpageopt}
% \begin{macro}{\ifpncontopt}
% We need two flags for the options.
%    \begin{macrocode}
\newif\ifpnpageopt
  \pnpageoptfalse
\newif\ifpncontopt
  \pncontoptfalse

%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% Process the options.
%
%    \begin{macrocode}
\DeclareOption{page}{\pnpageopttrue}
\DeclareOption{continuous}{\pncontopttrue}
\ProcessOptions

%    \end{macrocode}
%
% \subsection{Main code}
%
% \begin{macro}{\c@pagenote}
% \begin{macro}{\thepagenote}
% We need a counter for the notes. Just how it is defined depends on the 
% \Lopt{continuous} option or the class.
%    \begin{macrocode}
\ifpncontopt
  \newcounter{pagenote}
\else
  \ifpnhaschapter
    \newcounter{pagenote}[chapter]
  \else
    \newcounter{pagenote}[section]
  \fi
\fi
\renewcommand{\thepagenote}{\arabic{pagenote}}
\setcounter{pagenote}{0}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\c@pnotesavechap}
% We also need a counter for document divisions to check if we
% are in a new one. Initialise it to an `impossible' value.
%    \begin{macrocode}
\newcounter{pnotesavechap}
  \setcounter{pnotesavechap}{-1000}

%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ifmakingpagenotes}
% Need to check if notes are required.
%    \begin{macrocode}
\newif\ifmakingpagenotes
  \makingpagenotesfalse

%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\makepagenote}
% This sets up the note file. At the end it emasculates itself so it can only
% be used once.
%    \begin{macrocode}
\newcommand*{\makepagenote}{%
  \newwrite\@notefile
  \immediate\openout\@notefile=\jobname.ent
  \makingpagenotestrue
%    \end{macrocode}
% \begin{macro}{\pagenote}
% Make sure that this has a useful definition.
%    \begin{macrocode}
  \def\pagenote{\@bsphack\begingroup
    \@sanitize
    \@wrpnote}%
%    \end{macrocode}
% \end{macro}
% \begin{macrocode}
  \typeout{Writing note file \jobname.ent}%
  \let\makepagenote\@empty}

%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\immediate@protected@write}
% We might have to do some immediate writes. This is an immediate
% version of the kernel |\protected@write|.
%    \begin{macrocode}
\newcommand{\immediate@protected@write}[3]{%
  \begingroup
  #2%
  \let\protect\@unexpandable@protect
  \edef\reserved@a{\immediate\write#1{#3}}%
  \reserved@a
  \endgroup
  \if@nobreak\ifvmode\nobreak\fi\fi}

%    \end{macrocode}
% \end{macro}
% 
% \begin{macro}{\@pnwrite}
% If the \Lopt{page} option is used we cannot use an immeditae write
% because the page number is only known in the output routine.
%    \begin{macrocode}
\ifpnpageopt
  \let\@pnwrite\protected@write
\else
  \let\@pnwrite\immediate@protected@write
\fi

%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@wrpnote}
% This writes the note information to the note file. It first increments the
% note counter and calls |\notenumintext| to handle its appearance in 
% the body text.
%    \begin{macrocode}
\newcommand{\@wrpnote}[2][]{%
  \refstepcounter{pagenote}%
  \notenumintext{\thepagenote}%
%    \end{macrocode}
% Check if this is the first note in a division, and if so indicate this 
% in the file.
%    \begin{macrocode}
  \ifpnhaschapter
    \ifnum\value{pnotesavechap}=\value{chapter}\else
      \setcounter{pnotesavechap}{\value{chapter}}%
      \addtonotes{\pagenotesubhead{\thechapter}{\f@rtoc}}%
    \fi
  \else
    \ifnum\value{pnotesavechap}=\value{section}\else
      \setcounter{pnotesavechap}{\value{section}}%
      \addtonotes{\pagenotesubhead{\thesection}{}}%
    \fi
  \fi
%    \end{macrocode}
% Finally, write the entry.
%    \begin{macrocode}
  \@pnwrite\@notefile{}
    {\string\noteentry{\thepagenote}{#1}{#2}{\thepage}}%
  \endgroup
  \@esphack}

%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\pagenote}
% The user command to generate a note.
%    \begin{macrocode}
\def\pagenote{\@bsphack\begingroup \@sanitize\@pagenote}

%    \end{macrocode}
% \end{macro}
% 
% \begin{macro}{\@pagenote}
%    \begin{macrocode}
\newcommand{\@pagenote}[2][]{\endgroup\@esphack}

%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\addtonotes}
% |\addtonotes|\marg{text} puts \meta{text} into the notes file.
%    \begin{macrocode}
\newcommand{\addtonotes}[1]{%
  \ifmakingpagenotes
 \IfFileExists{\jobname.ent}{\@pnwrite\@notefile{}{#1}}{\pnofilewarn}%
\fi}

%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\notenumintext}
% \begin{macro}{\notenuminnotes}
% |\notenumintext|\marg{notenum} typesets \meta{notenum} (in the body text).
%    \begin{macrocode}
\newcommand{\notenumintext}[1]{%
  \textsuperscript{#1}}
%    \end{macrocode}
% |\notenuminnotes|\marg{notenum} typesets \meta{notenum} (as part of the note). 
%    \begin{macrocode}
\newcommand{\notenuminnotes}[1]{%
  {\normalfont #1.} }
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\noteentry}
% |\noteentry|\marg{notenum}\marg{id}\marg{pagenum}\marg{text}
% typesets a note.
%    \begin{macrocode}
\newcommand{\noteentry}[4]{%
  \prenoteinnotes 
  \noteidinnotes{#1}{#2}\pageinnotes{#4}\noteinnotes{#3}%
  \postnoteinnotes}

%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\textinnotes}
% |\textinnotes|\marg{id text} typesets the note's \meta{id text}.
%    \begin{macrocode}
\newcommand{\textinnotes}[1]{%
  [#1] }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\noteidinnotes}
% |\noteidinnotes|\marg{notenum}\marg{id} is used to typeset the note 
% identification (in the note listing). It is set so that it typesets the 
% \meta{id} if it is not empty, otherwise it sets the \meta{notenum}.
%    \begin{macrocode}
\newcommand{\noteidinnotes}[2]{%
  \@ifmtarg{#2}{%
    \notenuminnotes{#1}}{\textinnotes{#2}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\pagename}
% \begin{macro}{\pageinnotes}
% |\pageinnotes|\meta{pagenum} is used to typeset the originating page number
% (in the note), but the page number is not trustworthy unless the
% \Lopt{page} option is used.
% \changes{v1.1}{2004/09/27}{Added \cs{pagename} for use in \cs{pageinnotes}}
%    \begin{macrocode}
\providecommand*{\pagename}{page}
\newcommand{\pageinnotes}[1]{%
  \ifpnpageopt (\pagename\ #1) \fi}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\noteinnotes}
% |\noteinnotes|\marg{text} is used to typeset the note's text 
% (in the note list).
%    \begin{macrocode}
\newcommand{\noteinnotes}[1]{#1}

%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\prenoteinnotes}
% \begin{macro}{\postnoteinnotes}
% These are called immediately before and after the note information is 
% typeset.
%    \begin{macrocode}
\newcommand{\prenoteinnotes}{\par\noindent}
\newcommand{\postnoteinnotes}{\par}

%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\notesname}
% \begin{macro}{\notedivision}
% Heading for note list.
%    \begin{macrocode}
\providecommand*{\notesname}{Notes}
\ifpnhaschapter
  \newcommand*{\notedivision}{\chapter{\notesname}}
\else
  \newcommand*{\notedivision}{\section{\notesname}}
\fi

%    \end{macrocode}
% \end{macro}
% \end{macro}
%
%
% \begin{macro}{\printnotes}
% \begin{macro}{\printnotes*}
% User commands to print the note file.
%    \begin{macrocode}
\newcommand*{\printnotes}{\@ifstar{\@sprintnotes}{\@printnotes}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\pnofilewarn}
% Warning when the notes file does not exist.
%    \begin{macrocode}
\newcommand*{\pnofilewarn}{%
  \PackageWarning{pagenote}{There is no .ent file}}
%
% \begin{macro}{\@sprintnotes}
% Macro implementing |\printnotes*|.
%    \begin{macrocode}
\newcommand*{\@sprintnotes}{%
  \ifmakingpagenotes
  \notedivision
\IfFileExists{\jobname.ent}{%
  \immediate\closeout\@notefile
  \input{\jobname.ent}%
  \immediate\openout\@notefile=\jobname.ent%
  }{%
  \pnofilewarn
}%
\fi}
  
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@printnotes}
% Macro implementing |\printnotes|.
%    \begin{macrocode}
\newcommand*{\@printnotes}{%
  \ifmakingpagenotes
  \notedivision
\IfFileExists{\jobname.ent}{%
  \immediate\closeout\@notefile
  \input{\jobname.ent}%
  }{%
  \pnofilewarn
}
\fi}

%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\chapterame}
% \begin{macro}{\sectionname}
% \begin{macro}{\pagenotesubhead}
% The section heading before each set of notes.
% \changes{v1.1}{2004/09/27}{Added \cs{sectionname} for use in \cs{pagenotesubhead}}
%    \begin{macrocode}
\providecommand*{\chaptername}{Chapter}
\providecommand*{\sectionname}{Section}
\ifpnhaschapter
  \DeclareRobustCommand{\pagenotesubhead}[2]{%
    \subsection*{\chaptername\ #1 #2}}
\else
  \DeclareRobustCommand{\pagenotesubhead}[2]{%
    \subsection*{\sectionname\ #1}}
\fi

%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
%    The end of this package.
%    \begin{macrocode}
%</usc>
%    \end{macrocode}
%
%
%
%
% \Finale
% \PrintIndex
%
\endinput

%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}