summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/endheads
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/endheads
Initial commit
Diffstat (limited to 'macros/latex/contrib/endheads')
-rw-r--r--macros/latex/contrib/endheads/README.md7
-rw-r--r--macros/latex/contrib/endheads/endheads.dtx569
-rw-r--r--macros/latex/contrib/endheads/endheads.ins36
-rw-r--r--macros/latex/contrib/endheads/endheads.pdfbin0 -> 229332 bytes
4 files changed, 612 insertions, 0 deletions
diff --git a/macros/latex/contrib/endheads/README.md b/macros/latex/contrib/endheads/README.md
new file mode 100644
index 0000000000..de6b00727b
--- /dev/null
+++ b/macros/latex/contrib/endheads/README.md
@@ -0,0 +1,7 @@
+Readme for endheads
+
+Endheads makes running headers of the form ``Notes to pp.~xx--yy'' for
+users of endnotes.sty. It also enables one to reset the endnotes counter
+by chapter. endheads requires fancyhdr, endnotes, and ifthen. Endheads will also work for memoir class, but in that case it won't require fancyhdr.
+
+This material is subject to the LATEX Project Public License 1.3c. \ No newline at end of file
diff --git a/macros/latex/contrib/endheads/endheads.dtx b/macros/latex/contrib/endheads/endheads.dtx
new file mode 100644
index 0000000000..c4ca223e5b
--- /dev/null
+++ b/macros/latex/contrib/endheads/endheads.dtx
@@ -0,0 +1,569 @@
+% \iffalse meta-comment
+% !TEX TS-program = dtxmk
+%
+% Copyright (C) 2005 by John Burt <burt@brandeis.edu>
+% --------------------------------------------------
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.2
+% 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.2 or later is part of all distributions of LaTeX
+% version 1999/12/01 or later.
+%
+% \fi
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[1997/12/01]
+%<package>\ProvidesPackage{endheads}
+%<package> [2017/4/6 v1.6 endheads file]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{makeidx,multicol,keyval,ifthen}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{endheads.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{514}
+%
+% \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 \~}
+%
+%
+% \changes{v1.0}{2005/08/21}{Initial version}
+% \changes{v1.1}{2005/09/25}{uses needspace prevent orphan chapter
+% beginnings in notes}
+% \changes{v1.15}{2005/09/25}{uses titleref to capture chapter titles for
+% notes}
+% \changes{v1.151}{2005/09/25}{Corrections to user's guide}
+% \changes{v1.152}{2006/11/10}{Fixed strange white space error}
+% \changes{v1.2}{2006/11/10}{Added commands for multilingual use}
+% \changes{v1.3}{2007/12/12}{Added commands for multilingual use}
+% \changes{v1.4}{2008/04/12}{Added compatibility with memoir class. Added
+% commands for multilingual use}
+%\changes{v1.45}{2008/04/14}{Corrected problem with putting entry for
+%endnotes in table of contents}
+%\changes{v1.5}{2011/12/29}{Corrected problem with page styles for
+%first pages of chapters}
+%\changes{v1.51}{2012/09/03}{Corrected problem with page page headings in memoir style}
+%\changes{v1.55}{2013/10/13}{Corrected conflict with biblatex}
+%\changes{v1.6}{2017/4/6}{Warnings about known issues}
+% \GetFileInfo{endheads.sty}
+%
+% \DoNotIndex{\newcommand,\newenvironment,\def,\edef,\else,\renewcommand,\makeatletter,\makeatother}
+% \DoNotIndex{\abovedisplayskip,\belowdisplayskip,\abovedisplayshortskip,\belowdisplayshortskip}
+% \DoNotIndex{\newcommand, \section, \subsection, \subsubsection,
+% \fileversion,} \DoNotIndex{\filedate, \docdate, \leavevmode,
+% \vspace, \small, \normalsize, \fontsize,} \DoNotIndex{\newcommand,
+% \section, \subsection, \subsubsection, \fileversion}
+% \DoNotIndex{\filedate, \docdate, \leavevmode, \vspace, \small,
+% \normalsize, \fontsize} \DoNotIndex{\selectfont, \abovedisplayskip,
+% \belowdisplayskip, \setlength, \item} \DoNotIndex{\global, \input,
+% \def, \edef, \texttt, \textsf, \setcounter}
+% \DoNotIndex{\pagenumbering, \oddsidemargin, \evensidemargin,
+% \newdimen, \renewcommand} \DoNotIndex{\makeatletter, \let, \@listi,
+% \@listl, \z@, \@xpt, \@xipt, \p@ , \@plus2} \DoNotIndex{\@minus5,
+% \@minus3, \@plus3, \makeatother, \@minus4, \relax, \pagestyle}
+% \DoNotIndex{\fancyhead, \fancyfoot, \thepage, \@ixp}
+% \DoNotIndex{\begin \botmark, \botmark, \catcode, \croppadbot,
+% \croppadtop} \DoNotIndex{\croppagewidth, \endverse, \equal,
+% \fancyfoot, \fancyhead, \fancyhf} \DoNotIndex{\fancypagestyle,
+% \firstmark, \footrulewidth, \hbox, \hbox, \headrulewidth}
+% \DoNotIndex{\hfil, \hspace, \ifthenelse, \immediate, \itemindent,
+% \listparindent} \DoNotIndex{\makeatletter, \nolinebreak, \openout,
+% \raggedbottom, \setcounter, \textrm} \DoNotIndex{\value, \vspace,
+% \write}
+% \DoNotIndex{\afterpoemtitleskip, \addtocounter, \advance,
+% \begin, \bf, \bigskip}
+% \DoNotIndex{\bigskipamount, \fi, \@fulltitle, \label, \large, \leftheader}
+% \DoNotIndex{\leftheadervalue, \leftmargin, \leftmargini}
+% \DoNotIndex{\medskip, \newcounter, \nobreak, \par, \textbf}
+% \DoNotIndex{\closeout,\em,\emph,\expandafter,\Huge,\it,\jobname,\kern,\newif,
+% \newwrite,\p@,\pageref,\renewenvironment,\rm,\scriptsize,\string,
+% \textsc, \unskip}
+% \setcounter{IndexColumns}{2}
+% \MakeShortVerb{|}
+% \def\fileversion{1.6}
+% \def\filedate{5 April 2017}
+% \def\docdate{5 Apri 2017}
+% \title{Running Headers for Endnotes\thanks{This document
+% corresponds to \textsf{endheads}~\fileversion, dated \filedate.}}
+% \author{John Burt \\ \texttt{burt@brandeis.edu}}
+% \date{April 5, 2017}
+% \maketitle
+% \begin{abstract}
+% \textsf{endheads} provides running headers of the form ``Notes to
+% pp.~xx--yy'' for endnotes. \textsf{endheads} is designed to work
+% with \textsf{endnotes}.
+% \end{abstract}
+% \tableofcontents
+% \hfuzz=50pt
+% \section{Introduction} It is a convenience, if you are
+% flipping though the endnotes of a book, to be able to find the
+% endnote you are looking for by looking at the running header.
+% \textsf{endheads} uses the |\mark| mechanism to update the running
+% header continuously, so that it always indicates to what pages in
+% the main text the notes on a particular page refer.
+% \textsf{endheads} also enables one to reset endnote numbering at
+% the beginning of each chapter.
+%
+% \textsf{endheads} requires the following packages to work correctly:
+% with the standard document classes, or the komascript classes:
+% \textsf{endnotes} (obviously), \textsf{fancyhdr} (also obviously),
+% \textsf{ifthen} (for comparing page numbers), \textsf{needspace} (to
+% prevent widowed chapter titles in notes sections when resetting
+% notes by chapter using either |\notesbychapter| or
+% |\resetendnotes|), and \textsf{titleref} (to send the chapter titles
+% to the notes section).
+%
+%With \textsf{memoir} class, \textsf{endheads} requires fewer packages,
+% since many of the package functions are built into \textsf{memoir} and some,
+% \textsf{fancyhdr} most especially, conflict with it. Minimally, you will need \textsf{endnotes}
+% and \textsf{ifthen}. You might wish to call \textsf{memoir} with the oldfontcommands
+% option.
+%
+% \section{Setup} \DescribeMacro{\setupendnoteheaders} This is the
+% only macro you need to call to use this package. If you use
+% |\setupendnoteheaders| you should remember to start your endnotes on
+% a new page. |\setupendnoteheaders| sets the first page of the notes
+% section to the |empty| pagestyle, since you normally don't have
+% running headers on the first page of a section. And it changes the
+% pagestyle for subsequent pages to have a running header of the form
+% ``Notes to pages xx--yy.'' This header will appear in the center of
+% each header. Then it modifies the |\endnote| command, having it
+% increment a counter that keeps track of all the endnotes (even if
+% you are resetting the number by chapter), and defines a label for
+% that note. Finally, it writes on the external file for the endnotes
+% a command to set the |\mark| for that page of the endnotes using a
+% |\pageref| to the label it has just defined. \textsf{endheads}
+% creates a label and a pageref for every note.
+%
+% \DescribeMacro{\notesbychapter} |\notesbychapter| resets the note
+% counter every time you issue a |\chapter| command, and it puts a
+% centered line reading ``Chapter \textless\emph{chapter
+% number}\textgreater ~ \textless\emph{chapter title}\textgreater'' in the
+% notes at that point. If you want only the chapter number, not its
+% title, issue |\titleinnotesfalse| in your preamble. Please note
+% that with the standard classes
+% \textsf{endheads} modifies |\@chapter|, adding a few lines on
+% to the end of the command. If some other package does the same, you
+% may need to reconcile them. With \textsf{memoir} class, |\chapter| is modified
+% only if |\notesbychapter| is issued.
+%
+% \begin{sloppypar}
+% \DescribeMacro{\setstyleforchapternotebegin}
+% \DescribeMacro{\setstyleforchapternoteend}
+% |\setstyleforchapternotebegin| and |\setstyleforchapternoteend|
+% allows you to customize the appearance of the line that separates
+% chapters in the endnotes. If, for instance, rather having a
+% centered line in the small font size, you want a flushleft line in
+% the large fontsize, issue
+% |\setstyleforchapternotebegin{\begin{flushleft}\large}| and
+% |\setstyleforchapternoteend{\end{flushleft}}| in your preamble.
+% To set these lines in italic or bold, issue
+% |\setstyleforchapternotebegin{\em}| or
+% |\setstyleforchapternotebegin{\bf}| in your preamble. (It's safe,
+% indeed required, to use the old style font commands here, since the
+% chapter title line in the notes is confined to a group, which
+% restricts the scope of the font style command to the line. If you are
+% using \textsf{memoir} class, you should use the oldfontcommands option if you
+% plan on issuing |\setstyleforchatpernotebegin| and |\setstyleforchapternoteend|.)
+% Remember that if you open an environment with
+% |\setstyleforchapternotebegin| you must close it in
+% |\setstyleforchapternoteend|. So, for instance, if you wish the
+% chapter line to be set flushleft, in boldface, in normal font size,
+% you would issue
+% |\setstyleforchapternotebegin{\begin{flushleft}\begin{bf}\normalsize}| and
+% |\setstyleforchapternoteend{\end{bf}\end{flushleft}}| in your
+% preamble.
+% \end{sloppypar}
+%
+% \DescribeMacro{\resetendnotes} Conceivably you might wish to do what
+% |\notesbychapter| does for each chapter individually. For instance,
+% there may be a chapter without endnotes, in which case
+% |\notesbychapter| would issue the centered line for that chapter,
+% but no notes would follow, which is ugly. Also, since the
+% Bibliography is, as far as \LaTeX\ is concerned, a chapter, you must
+% use |\resetendnotes| before each chapter rather issuing
+% |\notesbychapter| in the preamble if you have a bibliography, or odd
+% results will follow.
+%
+% \section{Using \textsf{endheads} in a Multilingual World}
+%
+% \begin{sloppypar}
+% By default, \textsf{endheads} uses English language running headers.
+% As of version 1.2 these
+% are easily changed. \end{sloppypar}
+%
+%
+% \DescribeMacro{\changenotesname} To change the name for the endnote
+% section for notes (the default is Notes), issue
+% |\changenotesname{your version}|. To change the running header (by
+% default ``Notes to'') issue |\changenotesheader{your version}|.
+%
+% \DescribeMacro{\changenotescontentsname}
+%To
+% change the name for the notes in the table of contents ( by
+% default ``Notes'') issue |\changenotescontentsname{your version}|.
+%
+% \DescribeMacro{\notesincontents} If you do not wish to include a line for the endnotes
+% in the table of contents, issue |\notesincontentsonfalse| (This is the default). To include a line
+% for the endnotes in the table of contents, issue |\notesincontents|
+% or (toggling the boolean) |\notesincontentsontrue|. If you wish to
+% rethink how to present the notes in the table of contents, include
+% an |\addtocontents| line just before you issue |\theendnotes|, the command which
+% will read all of your endnotes into your document at that point. For instance, I set the
+% word ``Notes'' in the table of contents flush with the left margin, just where the numbers
+% in the preceding chapters are. You might, however, wish to indent that word just a bit, so
+% that it will be flush with the chapter titles above, rather than with the chapter numbers.
+% If you wish to do this, just before issuing |\theendnotes|, issue
+% |\addcontentsline{toc}{chapter}{\protect\numberline{} \the\notescontentsname}|.
+%
+% \begin{sloppypar}
+% \DescribeMacro{\changesinglepageabbrev}
+% \DescribeMacro{\changemultiplepageabbrev} Running headers refer to
+% single pages with the English abbreviation ``p.'' and to multiple
+% pages with the English abbreviation ``pp.'' To change these issue
+% |\changesinglepageabbrev{new abbrev}| or
+% |\changemultiplepageabbrev{new abbrev}| respectively. The ultimate
+% outcome is to translate a header of the form ``Notes to
+% pp.~xx-yy'' to the form appropriate for your
+% language. \end{sloppypar}
+%
+% \begin{sloppypar}
+% \DescribeMacro{\changechapternotesline}If you are using |\resetendnotes|
+% or |\setnotesbychapter| you may also want to
+% change the text of the line those commands add to the endnotes so as to use some
+% other word than ``Chapter.'' To change this,
+% issue |\changechapternotesline{your version}|.\end{sloppypar}
+%
+% \section{Using \textsf{endheads} with \textsf{biblatex}}
+% If you use \textsf{biblatex} you might get an error message
+% that reads ``Package biblatex Error: Patching 'endnotes' package failed.''
+% What is happening here is that \textsf{biblatex} and \textsf{endheads} are both
+% trying to modify the |\theendnotes| command from \textsf{endnotes}. If
+% \textsf{endheads} goes first, \textsf{biblatex} can't find the portion of the command
+% it is trying to modify. Now
+% \textsf{biblatex} redefines |\theendnotes| at |\begin{document}|,
+% and \textsf{endheads }redefines |\theendnotes| when |\setupendnoteheaders|
+% is issued, so issue |\setupdendnoteheaders|
+% after |\begin{document}| and everything should be OK.
+% \section{Known Issues}
+% The running headers in \textsf{endheads} will only work correctly if all endnotes are issued on pages
+% with arabic numbering. Endnotes issued on pages with roman numbering will break
+% \textsf{endheads}, because the calculations required to update the headers
+% require arabic numbers.
+%
+% Normally if you are using |\footnote| in the body of the text you can issue
+% |\let\footnote=\endnote| to get endnotes with \textsf{endnote}. This will break
+% \textsf{endheads}, however, (the running headers will all have your final
+% chapter title, not the proper page numbers) so all of your endnotes must be made with
+% |\endnote|.
+% \StopEventually{\PrintChanges\PrintIndex}
+% \section{Implementation}
+% \subsection{General Purpose Routines}
+% Essentially these routines are code posted by Heiko Oberdiek to
+% comp.text.tex. If you set a counter from a |\pageref|, that
+% |\pageref| is undefined on the first run, and \TeX\ will not only
+% complain about the undefined reference, but give a ``missing
+% number'' error if you try to do anything with that reference, such
+% as compare one page number to another. These commands enable one to
+% use the |\pageref| without generating the missing number error on
+% the first run.
+% \begin{macrocode}
+\providecommand*{\ifrefundefined}[1]{%
+ \expandafter\ifx\csname r@#1\endcsname\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
+\providecommand*{\@extract@ref}[2]{%
+ \expandafter\expandafter\expandafter#1\csname
+r@#2\endcsname{}{}\@nil
+}
+
+\providecommand*{\@extractref}{%
+ \@extract@ref\@car
+}
+
+\providecommand*{\@extractpageref}{%
+ \@extract@ref\@secondcar
+}
+
+\long\def\@secondcar#1#2#3\@nil{#2}
+
+\providecommand*{\setcounterfromref}[2]{%
+ \ifrefundefined{#2}{%
+ \protect\G@refundefinedtrue
+ \@latex@warning{Reference `#2' on page \thepage \space
+ undefined}%
+ \setcounter{#1}{0}%
+ }{%
+ \setcounter{#1}{\@extractref{#2}}%
+ }%
+}
+\providecommand*{\setcounterfrompageref}[2]{%
+ \ifrefundefined{#2}{%
+ \protect\G@refundefinedtrue
+ \@latex@warning{Reference `#2' on page \thepage \space
+ undefined}%
+ \setcounter{#1}{0}%
+ }{%
+ \setcounter{#1}{\@extractpageref{#2}}%
+ }%
+}
+\long\def\appendtomacro#1#2{%
+\begingroup
+ \toks@\expandafter{#1#2}%
+ \xdef#1{\the\toks@}%
+ \endgroup}
+% \end{macrocode}
+% \subsection{Building Blocks}
+% First, define some counters:
+% \begin{macrocode}
+\newcounter{allendnotes}
+\setcounter{allendnotes}{1}
+\newcounter{notepageholder}
+% \end{macrocode}
+% \begin{macro}{\mymarks}
+% A command to set the marks. This will be called by the page style.
+% \begin{macrocode}
+\newtoks{\singlepageabbrev}
+\singlepageabbrev={p.}
+\newcommand{\changesinglepageabbrev}[1]{\singlepageabbrev={#1}}
+\newtoks{\multiplepageabbrev}
+\newcommand{\changemultiplepageabbrev}[1]{\multiplepageabbrev={#1}}
+\multiplepageabbrev{pp.}
+\@ifclassloaded{memoir}{\newcommand{\mymarks}{%
+ \ifthenelse{\equal{\rightmark}{\leftmark}}%
+ {\unskip ~\the\singlepageabbrev~\rightmark}% if equal
+ {\unskip ~\the\multiplepageabbrev~\rightmark--\leftmark}}%if not equal
+}
+{\newcommand{\mymarks}{%
+ \ifthenelse{\equal{\firstmark}{\botmark}}%
+ {\unskip ~\the\singlepageabbrev~\firstmark}% if equal
+ {\unskip ~\the\multiplepageabbrev~\firstmark--\botmark}}%if not equal
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\endnotespagestyle}
+% A command to set the page style in \textsf{fancyhdr}. You might
+% want to change some aspects of this, such as where to put the page
+% number, to make it consistent with the rest of your document.
+% \begin{macrocode}
+
+\newtoks{\endnotesname}
+\endnotesname={Notes}
+\newcommand{\changenotesname}[1]{\def\notesname{#1}}
+\newtoks{\notesheadername}
+\notesheadername={Notes to}
+\newcommand{\changenotesheader}[1]{\notesheadername={#1}}
+\newtoks{\notescontentsname}
+\notescontentsname={Notes}
+\newcommand{\changenotescontentsname}[1]{\notescontentsname={#1}}
+\newtoks{\chapternoteslinename}
+\chapternoteslinename={Chapter}
+\newcommand{\changechapternotesline}[1]{\chapternoteslinename={#1}}
+\@ifclassloaded{memoir}{
+\makepagestyle{endnotesstyle}
+\makeevenhead{endnotesstyle}{{\small\textrm{\thepage}}}{{\small{\em \the\notesheadername~\mymarks}}}{}
+\makeoddhead{endnotesstyle}{}{{\small{\em \the\notesheadername~\mymarks}}}{{\small\textrm{\thepage}}}
+\makeevenfoot{endnotesstyle}{}{}{}
+\makeoddfoot{endnotesstyle}{}{}{}
+}{
+\fancypagestyle{endnotesstyle}{%
+\fancyhf{}
+\fancyhead[CO]{{\small{\em \the\notesheadername~\mymarks}}}
+\fancyhead[CE]{{\small{\em \the\notesheadername~\mymarks}}}
+\renewcommand{\headrulewidth}{0pt}
+\renewcommand{\footrulewidth}{0pt}
+\fancyhead[RO,LE]{{\small\textrm{\thepage}}}
+}
+}
+
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\checknoteheaders}
+% This macro sets the counter notepageholder to the value given by
+% the pageref of the note that is being output. All that strange
+% business with |\string| is there because I want to use the
+% |\immediate\write| mechanism to control what gets expanded and what
+% doesn't get expanded on the external file for the endnotes, |\jobname.ent|.
+% Everything except the actual number of the endnote is written to
+% the external file as unexpanded tokens. When, after you call
+% |\theendnotes|, you read in the external file for the endnotes,
+% |\jobname.ent|, all these tokens become a command to set the |\mark|.
+% \begin{macrocode}
+\@ifclassloaded{memoir}{\newcommand{\checknoteheaders}{%
+\string\setcounterfrompageref\string{notepageholder\string}%
+\string{notl\theallendnotes\string}%
+\string\markboth\string{\string\thenotepageholder\string}\string{\string\thenotepageholder\string}%
+}
+}{\newcommand{\checknoteheaders}{%
+\string\setcounterfrompageref\string{notepageholder\string}%
+\string{notl\theallendnotes\string}%
+\string\mark\string{\string\thenotepageholder\string}%
+}
+}
+
+% \end{macrocode}
+% \end{macro}
+% \subsection{User Code}
+% \begin{macro}{\notesincontents}
+% \begin{macrocode}
+\newif\ifnotesincontentson \notesincontentsonfalse
+\newcommand{\notesincontents}{\notesincontentsontrue}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\setupendnoteheaders}
+% |\setupendnoteheaders| turns on processing of running headers, and
+% adds two lines to the definition of |\endnote|
+% \begin{macrocode}
+\newif\ifendnoteheaderson \endnoteheadersonfalse
+\newcommand{\setupendnoteheaders}{%
+\endnoteheadersontrue
+\if@enotesopen \else \@openenotes \fi
+\immediate\write\@enotes{%
+\string\thispagestyle\string{empty\string}
+\string\pagestyle\string{endnotesstyle\string}}
+\immediate\write\@enotes{\string\ifnotesincontentson}%
+\immediate\write\@enotes{\string\addcontentsline\string{toc\string}
+\string{chapter\string}\string{\string\the\string\notescontentsname\string}}%
+%\immediate\write\@enotes{\string{\string\notescontentsname\string}}%
+%\string{\string\protect\string\numberline
+%\string{\string} \string\notescontentsname \string}
+\immediate\write\@enotes{\string\fi}
+\def\endnote{\@ifnextchar[\@xendnote{\stepcounter{endnote}%
+% my addition begins
+ \stepcounter{allendnotes}\label{notl\theallendnotes}%
+ \immediate\write\@enotes{\checknoteheaders}%
+% my addition ends
+ \protected@xdef\@theenmark{\theendnote}%
+ \@endnotemark\@endnotetext}}
+\let\oldtheendnotes=\theendnotes
+\renewcommand{\theendnotes}{%
+\immediate\write\@enotes{\string\thispagestyle\string{endnotesstyle\string}}
+\oldtheendnotes}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\resetendnotes}
+% Tells the |\chapter| macro to reset the note counter and to
+% put a line with the chapter number in the endnotes.
+% \begin{macrocode}
+\def\strip#1>{}
+\newcommand{\literalendnote}[1]{\if@enotesopen \else
+\@openenotes\setupendnoteheaders \fi
+ \begingroup
+ \def\next{#1}%
+ \newlinechar='40
+ \immediate\write\@enotes{\expandafter\strip\meaning\next}%
+ \endgroup%
+}
+\newif\iftitleinnotes \titleinnotestrue
+\newcommand{\styleforchapternotebegin}{%
+}
+\newcommand{\styleforchapternoteend}{%
+}
+\newcommand{\setstyleforchapternotebegin}[1]{%
+\renewcommand{\styleforchapternotebegin}{#1}}
+\newcommand{\setstyleforchapternoteend}[1]{%
+\renewcommand{\styleforchapternoteend}{#1}}%
+\setstyleforchapternotebegin{\begin{center}}
+\setstyleforchapternoteend{\end{center}}
+\newcommand{\resetendnotes}{%
+\label{chapter\thechapter}%
+\setcounter{endnote}{0}%
+\if@enotesopen \else \@openenotes \fi
+\immediate\write\@enotes{\string\begingroup}
+\immediate\write\@enotes{\string\goodbreak}
+\immediate\write\@enotes{\string\Needspace\string{5\string\baselineskip\string}}
+\immediate\write\@enotes{\string\styleforchapternotebegin}
+% \immediate\write\@enotes{\string\begin\string{center\string}}
+%\immediate\write\@enotes{\string{}
+\immediate\write\@enotes{\the\chapternoteslinename\string\ \thechapter\string~}
+\iftitleinnotes
+\immediate\write\@enotes{\string\titleref\string{chapter\thechapter\string}}
+\fi
+%\immediate\write\@enotes{\string}}
+\immediate\write\@enotes{\string\styleforchapternoteend}
+% \immediate\write\@enotes{\string\end\string{center\string}}
+\immediate\write\@enotes{\string\nopagebreak}
+\immediate\write\@enotes{\string\endgroup}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\notesbychapter}
+% \begin{macrocode}
+% \newcommand{\notesbychapter}{%
+% \appendtomacro{\chapter}{%
+% \relax
+% \resetendnotes}%
+% }
+\newif\ifnotesbychapteron \notesbychapteronfalse
+\@ifclassloaded{memoir}{\newcommand{\notesbychapter}{\notesbychapterontrue
+\addtoiargdef{\chapter}{}{ \iftitleinnotes%
+% \label{chapter\thechapter}%
+ \fi%
+ \ifnotesbychapteron%
+ \relax%
+ \resetendnotes%
+ \fi}}
+}{\newcommand{\notesbychapter}{\notesbychapterontrue}
+\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \refstepcounter{chapter}%
+ \typeout{\@chapapp\space\thechapter.}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\thechapter}#1}%
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \if@twocolumn
+ \@topnewpage[\@makechapterhead{#2}]%
+ \else
+ \@makechapterhead{#2}%
+ \@afterheading
+ \fi
+ \iftitleinnotes%
+% \label{chapter\thechapter}%
+ \fi%
+ \ifnotesbychapteron%
+ \relax%
+ \resetendnotes%
+ \fi}
+}
+
+% \end{macrocode}
+% \end{macro}
+% \Finale
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/endheads/endheads.ins b/macros/latex/contrib/endheads/endheads.ins
new file mode 100644
index 0000000000..8218c9157b
--- /dev/null
+++ b/macros/latex/contrib/endheads/endheads.ins
@@ -0,0 +1,36 @@
+%%
+%% Copyright (C) 2005 by John Burt
+%%
+%% This file may be distributed and/or modified under the conditions
+%% of the LateX Project Public License, either verison 1.2 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.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%
+
+\input docstrip.tex
+\keepsilent
+
+\generate{\file {endheads.sty} {\from {endheads.dtx}{package}}}
+
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation, please move the following}
+\Msg{* file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space\space endheads.sty}
+\Msg{*}
+\Msg{* To produce the documentation, run LaTeX on the file:}
+\Msg{*}
+\Msg{* \space\space endheads.dtx}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{***********************************************************}
+
+\endbatchfile
+
+ \ No newline at end of file
diff --git a/macros/latex/contrib/endheads/endheads.pdf b/macros/latex/contrib/endheads/endheads.pdf
new file mode 100644
index 0000000000..3f12ae580c
--- /dev/null
+++ b/macros/latex/contrib/endheads/endheads.pdf
Binary files differ