I feel like I might be one such person. But this answer needs a disclaimer, I'm the author of postnotes. I'll try to be as impartial as possible, but beware.
endnotes is the old and traditional package for the purpose. It's been around for decades, its changelog goes back to the 1980s, and is rock solid. Its code is as sharp as it gets. A thing of beauty really, I wish one day I could code like that.
Even if arguably spartan, endnotes is carefully built, making it actually quite tweakable. @egreg's answers here on the site are a demonstration of this. A sample of some common tasks:
However, with time, endnotes also became somewhat dated. Probably the most noticeable thing would be the lack of hyperref support. endnotes-hy is a companion package which provides such support, but in a limited fashion. Hyperlinks are only provided for labelled notes, and it uses a peculiar syntax for the labels, where \label must go outside of the note (the manual states its reasons for this syntax but, personally, I'm not really convinced. enotez also uses the same syntax, presumably by "inheritance", so that it can work as a drop-in replacement for endnotes).
Another companion package worth mentioning is endheads which provides the neat feature of running heads for the printed notes with information about the pages where the notes came from. But for some reason it hard-codes a dependency to fancyhdr and I'm not sure of the package's status (I couldn't make it work at all, last I tried).
As far as I grasp, memoir has developed its own end notes infrastructure, which eventually got branched out to an independent package for use with other classes, and that's pagenote. They have some bells ans whistles, and are more easily configurable than endnotes, even if the latter is quite powerful in its simplicity. Still, it is arguable that memoir/pagenote are somewhat more user friendly than endnotes.
As far as I can tell, though, memoir and pagenote have diverged. Maintenance of both have been passed over to different maintainers, and it seems they have taken different paths.
One difference appears to be that memoir has hyperref support for links from the note mark to the printed one, while pagenote hasn't.
However, most importantly, memoir.dtx says the following about it:
% \changes{v3.6h}{2011/01/19+}{Reimplemented page notes}
% This used to be a copy of the \Lpack{pagenote} package, with minor
% amendments. But it turned out that the implementation used by
% \Lpack{pagenote} at that time, had a few serious flaws. In this
% implementation we will instead turn to the trick used by the
% \Lpack{endnotes} package to overcome the same problem.
% For the sake of history, let us summarise what the actual problem
% was. Basically the command \cs{pagenote}\marg{text} would write an
% entry to an external file in the following format
% \begin{verbatim}
% \noteentry{nom}{id}{text}{pagenum}
% \end{verbatim}
% and when typesetting the page notes, this file would be read into
% the document and \cs{noteentry} would typeset each page note. The
% main problem here is \verb|{text}| which is written verbatimly to
% the external file, but it is written on a single line!, thus an
% input like this
% \begin{verbatim}
% \pagenote{Test%
% test}
% \end{verbatim}
% would give us the entry
% \begin{verbatim}
% \noteentry{num}{id}{Test%test}{pagenum}
% \end{verbatim}
% oops! This is what we will solve using inspiration from
% \Lpack{endnotes}, kudos to John Lavagnino.
I'm not sure if the "at that time" means paths had diverged earlier, but considering that this comment is from 2011 and that the last update of pagenote was in 2009, it appears there are grounds to avoid it as a standalone package at this point (at the time of writing, pagenote's version is v1.1a from 2009/09/03). The error mentioned in the comment does still occur with the latest version, and endnotes.sty gives still other reasons not to write the note as a single long line ("which might well overflow limits on output line length"). But I would also assume that the package is still usable even if with some limitations (I've tested it, and it works in a simple well behaved document).
enotez, as far as I get, strives to be a more modern alternative to the previously existing ones. It is a powerful package with highlights being:
- Full
hyperref support, including backlinks from the printed notes to the note mark.
- The package is highly configurable with a key=value user interface.
- It provides for automatic splitting the list of notes, according to the chapter or section they were set in.
A couple of distinctive features of enotez are:
- The support for nested notes.
- The possibility of printing the notes before they are actually called.
endnotes/memoir/pagenote work by writing each note, when it is called, to an external file, which is read and discarded when you print the notes set. So only "past" notes can be ever printed. enotez does something different, it writes the notes, with full contents, to the .aux file, so that you have all the notes available at begindocument, which can then be printed at any point.
I wrote this package earlier this year because I was writing a document requiring end notes, and was having a hard time getting what I wanted from existing packages. My pick, among the previously existing ones, was clearly enotez. But one requirement important for me was not really available, and I had another practical/technical qualm with it. The requirement was running heads for the printed with information from the origin of the notes (page etc.). The technical issue arose because I was working with a large document, the end notes section itself was about 150 pages, so the way enotez works meant a huge amount of material ended up in the .aux file, with a corresponding penalty in compilation time. Hence, postnotes is one of those "scratch my own itch" packages.
Some distinctive features:
- Support for running heads for the printed notes. By default, it is in the form "Notes to pages N-M", but you can get fancier ones like "Notes to chapters A-B, pages N-M" and so on. (This particular feature has been actually offered to
enotez, and at the time of writing is pending code review https://github.com/cgnieder/enotez/issues/37).
postnotes strives to store some "context" from where the note is placed and make it available where the note is printed. I had very much biblatex in mind when implementing this, and tried to add support for refsection, refcontext, and refsegment. This proved harder than I anticipated on the biblatex side of things (https://github.com/plk/biblatex/issues/1226). But it is still a potentially powerful feature. In particular, the answer I gave you yesterday (https://tex.stackexchange.com/a/669491/105447) works because of this, the page where the note was placed was stored, and then made available as \pnthepage at the place of printing.
- On the technical side
postnotes does not write the content of the notes to an external file, but stores it in variables. The .aux file is used, but only to store page references. So the usual issues stemming from writing and reading are circumvented.
- Storing the notes in variables adds some flexibility, which is leveraged. For example, usually, an end note placed in a float may scramble the order of the notes. The numbering can be corrected by setting a manual mark. But the notes get printed out of order. With the set of notes available as variables, we can pre-process them and, for example, sort them. Which
postnotes does. (Technically, enotez could also do it, but I don't think it does).
Other noteworthy features:
- As
enotez, postnotes also has full hyperref support, including backlinks.
- The UI is mostly key=val, but not exclusively so. It is quite flexible, and indeed trades off some user friendliness for flexibility, as compared to
enotez.
- Better support for cross-references to end notes, with better syntax. You can set labels both to the note mark and to the note text (to my knowledge,
postnotes is the only package to allow this). The syntax is in the form \postnote[label=en:mark]{\label{en:text}End note.}. Also, support for zref and zref-clever.
- As
enotez, there are facilities to automate the splitting of the notes by chapter/section. It may require a little more manual work than enotez but, in compensation, the UI is somewhat more flexible and capable of handling unnumbered sections.
Now, postnotes deliberately breaks some traditions, which may make it inadequate, or more cumbersome, to your needs.
\postnote does not obey the traditional syntax of \endnote in that its optional argument can receive a key=val set of options. So, to set a manual mark, you have to do \postnotes[mark=5]{End note.}. This means a couple of things, postnotes is not a drop in replacement for endnotes and other packages which followed its traditional syntax. Also, the common procedure of toggling footnotes with endnotes with \let\footnote\endnote cannot be done without adjustments.
postnotes does not offer \...mark and \...text variants to manually separate a note from its mark. There are other techniques to handle the common cases these would serve for (see the manual). But, again, it's not a drop in replacement.
Other packages
- reledmac: Really huge one to cater for scholarly/critical editions which, among the many features it offers, has extensive support for end notes, including multiple series of them, and so on.
biblatex-chicago maintains cmsendnotes.sty, which is a version of endnotes modified to support hyperref (by means of a comp.text.tex answer by Ulrich Dirr) and its own noteref option, but which, as far as I can tell, can be used independently as well.
enotesj describes itself as providing "Japanese-style endnotes.", but I can't read the manual to tell you what this means.
- Some rather specialized packages meant to do other things can also be used to generate end notes:
parnotes and sepfootnotes.
Well... It appears I have been more partial than I had promised. I guess it's only natural that I can say a little more about what I did. I hope I haven't been unfair. ;-)
Still, all four alternatives for this purpose are very good ones (with the possible exception of the standalone pagenote, as discussed above). Check your requirements with what they offer, and if they suffice, you'll be well served. If you don't need hyperref, you may prefer the robustness and stability of endnotes. If you're using memoir, you'll find a well integrated and resourceful end notes infrastructure. If you need backlinks and more flexibility, enotez or postnotes will give you that. If you need running headers for the notes, then either postnotes or endnotes with endheads are the alternatives.
In your assessment of the packages, you seem to take "modern", "latest", or "last upgraded", to mean "best". That is frequently not the case with software in general and probably more so with LaTeX packages. Besides, when getting to know any particular package, you should take your time and at least go through its docs, before reaching your judgment and discarding them so quickly. I'm pretty confident that many, even if not all, of the problems you mentioned in your question for each of them are solvable.
About that particular end notes style you are striving to achieve, I also share the opinion vented in the comments that it's particularly hard on the reader. I've provided ways to achieve that style with pagenote and postnotes elsewhere (https://tex.stackexchange.com/a/669491/105447), but I'd personally not use it. It might be viable to achieve the same result with endnotes and enotez (for endnotes you might try https://tex.stackexchange.com/a/438715/105447).
PS: Regarding your comment:
but in the documentation there are no examples of how the results look like
that seems unfair, since the manual has no less than 7 usage examples.
As to:
Another (minor) drawback is that it doesn't honor babel automatically, as currently supported languages are only English, German, French, and Portuguese. (In reality starting the document with \documentclass[german]{book} \usepackage[german]{babel} doesn't make the headings of the notes German, so...)
it should follow babel's settings, as long as the language is supported (otherwise if falls back to English). If it really doesn't, you should report it. But I suspect that what may be happening is that german is a very recent contribution the package received, and you may be running an outdated version of it. And if you are lacking any other language you need, you are very welcome to contribute it, it is actually quite simple.
postnotes' author :D Well, I haven't said to bad things, have I? Anyway, given the 3 tags to this question exist, I'm wondering whether an user with a lot of rep like @UlrikeFischer can create apostnotestag :/ – Enlico Dec 24 '22 at 13:59